YoonC

[Git&GitHub] Git study 3WEEK 본문

Git&GitHub

[Git&GitHub] Git study 3WEEK

윤태풍 2021. 5. 18. 22:53

포크 : 저장소 통째로 복사하기

 - 오픈소스에 기여하고 싶지만 저장소의 푸시 권한이 없으므로 포크 기능을 사용

 - 포크로 저장소를 통으로 내 계정에 복사해서 내 저장소에서 자유롭게 커밋, 푸시한다

 - 이후 내 저장소의 브랜치와 기여하고 싶은 저장소의 브랜치를 머지해달라고 요청(PR) 하면 됨

 

저장소를 통으로 내 계정에 받아오는 방법은 다음과 같다 > 

 

기여하고 싶은 오픈소스에서 포크 버튼을 누름
다음처럼 받아와진것을 볼 수 있다 여기서 코드-> 주소복사 해줄것

 

위에서 복사한 주소를 소스트리에서 새로만들기 - url에서 복제 클릭후 다음 화면처럼 원본 URL에 입력해주면 복제가 됨

 

내 저장소에서 변경하고 추가하고 수정해주고 싶은대로 추가하면 된다.

 👉🏻 단, 원본 저장소의 변경점을 보고싶다면 새롭게 저장소를 추가해주어야 한다 

   : 소스트리에서 새원격 - upstream으로 원본저장소의 url을 입력해주면 원본 저장소의 변경 이력을 볼 수 있음

 

풀 리퀘스트

 - 포크에서 추가한 커밋을 원본 저장소에 머지해달라고 요청을 보내는 것으로 편지 쓰는 것과 같은 역할을 함

 - How : 머지하고 싶은 두 브랜치를 택하고 어떻게 변경했는지를 제목과 내용에 쓰면 됨

              단일 저장소에서 보낼 수도 있고 포크한 저장소에서 보낼 수도 있음

 - 코드를 함께 작성하는 팀원이 있다면 PR을 이용할 것을 권장 => 동료가 코드 리뷰O, 수정 필요하면 change request 보낼 수 있음

 - 오픈소스에 PR을 보낼땐 기여 안내문서를 반드시 참고해서 보낼것을 권장

 

과정은 다음과 같다 >

            contribute를 클릭하면 다음 창이 뜨고                                                            Able to merge는 컨플릭트가 나지 않을 경우 뜰 것

이후 풀 리퀘스트를 보낸 milooy/Boxiting의 Pull requests를 보면 요청들을 볼 수 있음

 


어맨드 (amend)

 - 깜빡하고 수정 못한 파일이 있을 경우, 방금 만든 커밋에 살짝 추가함

 - 이전에 올렸던 커밋을 수정하는 변경사항이기 때문에 주의 메세지가 뜸! 이력을 변경하는 깃 명령어들은 혼자 쓰는 브랜치에서 할 것을 명심하자!

 

스태쉬 (stash)

 - 변경 사항을 당장 커밋을 안하고 잠시 킵해둘때 사용

 - 예) 급한 버그가 생겨서 지금 하던거 중단하고 해당 사항부터 고쳐야함. 이때 지금 브랜치에서 커밋 못한 파일들은 어떡해? 다른브랜치로 가야대는데 날려?)

 - NO! 변경사항들을 만들고 그들을 stash로 서랍에 넣어두는것

다시 서랍에 두었다가 pop하고 싶다면 치워두기-스태시 적용 해주면 커밋해야할 사항들이 다시 나타나게 됨

 

리셋 (reset)

 - 옛날 커밋으로 브랜치를 되돌리고 싶을 경우 사용

돌아가고 싶은곳에 가서 우클릭 하면 master을 이 커밋으로 초기화 선택 (=reset) => 다음처럼 세가지 선택사항이 생김

파괴적인 푸시의 경우에는 푸쉬를 하려면 에러가 날 것임 이땐 푸쉬하기 위해서 강력푸쉬(force push)를 사용해야함

 - 단! 혼자 쓰는 브랜치에서만 해야한다는걸 명심하세요!

 - Sourcetree - 설정 - 고급 - 강제 푸쉬를 허용을 선택하고 푸시할때 강제푸쉬를 누르고 하면 됨

 

리버트 (revert)

 - 커밋의 변경사항을 되돌리고 싶을 경우에 사용

 - reset의 경우엔 히스토리를 아예 초기화 시키는 것이고 revert는 히스토리를 새로 쌓으면서 변경하는 것

 - 예) 마스터에 잘못된 커밋을 올려버렸을 경우 다른 사람들이 보고있다면 이력을 force push하면 conflict가 발생할 수 있기 때문에 revert 해줌

특정 커밋의 변경사항을 되돌려서 새로운 커밋을 만들어주는 역할을 함

 

체리픽(cherry-pick)

 - 여러 커밋중 내가 원하는 커밋 하나만 떼어서 지금 브랜치에 붙이고 싶을 경우에 사용

 - 예) 어제 릴리즈한 A 브랜치에 버그가 있어서 일단 B 브랜치에서 버그를 고쳐서 master에 머지했음

          master에 다른 수정사항도 너무 많아서 A랑 당장 머지할 수 없을 경우 

          내가 고친 코드가 있는 커밋을 똑 떼어서 A에 붙여주면 된다구 이게 🍒 체리픽

일반 기능 추가는 필요없고 마스터에 버그를 수정함 만 가져오고 싶어서 오른쪽 사진처럼 수행

Comments