인프런 커뮤니티 질문&답변

김동현님의 프로필 이미지
김동현

작성한 질문수

빠르게 git - 핵심만 골라 배우는 Git/Github

협업하기(2) - 로컬도 변했는데 원격도 변한 경우

새로 pull request를 날릴때,

작성

·

212

0

첫 과정: fork 한 곳을 clone 하고 브랜치를 만들어 그곳에서 코드를 작성(commit) & 나의계정/repository 에 push 한 후,  나의 계정/repository에서 pull request 날리고 이후 branch 삭제

-------------------------------------------------------

1.

추가로 코드를 작성할 때,  branch 를 새로 만들고 그곳에서 기존의 organization/repository 를 fork 한 나의계정/repository 를 clone 한 코드를 기반으로 작성하게 됩니다.

와중에 organization/respository 은 다른 사용자들이 내용을 변경할수록 점점 달라지게 되고,  organization/repository 와 처음의 organazation/repository를 fork 한 나의계정/repository 의 괴리는 커질 것 입니다. 

추가로 변경된 부분을 알아야 코드를 작성하기 좋을 것 같은데, 그럼 코드를 작성하기 전에 먼저 organization/repository의 내용을 

나의계정/repository 을 clone 한 내 로컬저장소에 pull 한 후,

로컬저장소에서 코드작성(commit) 하고 나의계정/repository에 push 한 다음, 나의계정/repository 에서 pull request 날리고, 이후 branch 삭제를 하는 건가요?

2.

commit 까지 한 후 organization/repository 가 바뀐다면 현재 브랜치에서 다시 pull 하고 충돌 있으면 해결하고,  다시 코드 작성(commit)하고 나의 계정/repository 에 push 하면 되나요?

- 좀 복잡하게 말한 것 같아 이해부탁드립니다.-

 

답변 3

1

강민철님의 프로필 이미지
강민철
지식공유자

fetch and merge는 자신의 원격 저장소를 동기화 시키는 방법입니다.

로컬 저장소를 동기화시키기 위해서는 fetch and merge한 원격 저장소를 pull 하셔야 합니다!

 

언제든 질문주셔도 좋습니다 :)

감사합니다

1

강민철님의 프로필 이미지
강민철
지식공유자

1.

 

추가로 코드를 작성할 때,  branch 를 새로 만들고 그 곳에서 기존의 organization/repository 를 fork 한 나의계정/repository 를 clone 한 코드를 기반으로 작성하게 됩니다.

와중에 organization/respository 은 다른 사용자들이 내용을 변경할수록 점점 달라지게 되고,  organization/repository 와 처음의 organazation/repository를 fork 한 나의계정/repository 의 괴리는 커질 것 입니다. 

추가로 변경된 부분을 알아야 코드를 작성하기 좋을 것 같은데, 그럼 코드를 작성하기 전에 먼저 organization/repository의 내용을 

나의계정/repository 을 clone 한 내 로컬저장소에 pull 한 후,

로컬저장소에서 코드작성(commit) 하고 나의계정/repository에 push 한 다음, 나의계정/repository 에서 pull request 날리고, 이후 branch 삭제를 하는 건가요?

 

>> 기존의 organization/repository를 pull 하고, 코드를 작성한 뒤 Pull Request를 날리는 것이 맞습니다.

아니면 이런 방법도 있습니다. 예를 들어, 아래 사진은 namhyung/uftrace를 fork 해온 제 계정(kangtegong)의 uftrace, 즉 kangtegong/uftrace 입니다.

현재 기존 repository (namhyung/uftrace) 에 비해 4 개의 커밋이 뒤쳐져있다고 나와 있죠?

 

 

이 경우 "fetch upstream"의 fetch and merge를 하게 되면 원본 repository와 동일해지게 됩니다. 

 

 

 

2.

 

commit 까지 한 후 organization/repository 가 바뀐다면 현재 브랜치에서 다시 pull 하고 충돌 있으면 해결하고,  

다시 코드 작성(commit)하고 나의 계정/repository 에 push 하면 되나요?

 

>> 네 맞습니다. push를 할 적에 충돌이 있다면 어떤 부분에서 충돌이 발생했는지 나오게 될텐데, 그 부분만 해결하고 다시 commit 후 push하면 성공적으로 반영됩니다

0

김동현님의 프로필 이미지
김동현
질문자

1 번에 추가로 제시해주신 답변에 궁금한 점이 있습니다.

organization/repostory 를 내 로컬에서 pull 하는 방법 대신, 

내 계정/repository 에서 fetch and merge 를 하는 방법을 알려주셨는데

이렇게 되면 내 계정/repository는  원본 repository 와 같아지는 점은 알겠으나,

같아진 내 계정/repository 를 다시 내 로컬 저장소에 적용하진 않는 건가요? 알아서 적용이 되나요?

로컬 저장소에는  아직 기존의 코드내용만이 있을 텐데요!!

친절한 답변 늘 감사드립니다!!

김동현님의 프로필 이미지
김동현

작성한 질문수

질문하기