깃허브 사용법을 익히기 위해서 프로젝트용으로 제공받은 레포지토리에 push한 후 merge 해 보는 연습을 해보기로 함.

 

1. 먼저 디렉토리를 하나 만들고 git init으로 새로운 Git 저장소를 생성.

 

2. git remote add orign { 연결할 레포지토리 url }로 프로젝트 레포지토리에 연결.

 

3. git fetch로 변동사항 확인 후 push작업을 할 브랜치로 이동.

git checkout -b < new -branch-name> - 새 브랜치 생성과 전환
git branch로 작업 중인 브랜치 확인

4. git pull origin feat/backend_init로 프로젝트 가져오기

 

5. 프로젝트 실행 후에 수정.

 

6. 수정한 내용을 commit.

 

7. 그리고 push를 시도했는데 오류가 남.

 

8. 다시 pull 시도를 했지만 실패됨.

오류 메세지에 대해서 알아보니 두 브랜치 간에 관련 없는 커밋 히스토리를 병합하려고 시도했을 때 발생하는 것이라는데 충돌이 일어난 부분을 어떻게 해결해야 할지 알 수가 없었음.

GPT를 통해 답변받은 오류가 나는 이유

 

일단 강제로 병합을 시도하게 되면 충돌 해결에 올바른 상황은 아닌 것 같아서 먼저 진행한 팀원들한테 물어가면서 진행했지만 여전히 계속 위의 상황에서 벗어나지 못했음.

 

추후에 다른 팀원분이 풀리퀘스트 후 병합까지 성공하여서 알려주신 방법으로 merge까지 성공함.

 

🚨 내 레포지토리에 fork 해 온 경우의 과정

 

1. 디렉토리를 하나 생성한 후 git clone { 내 레포지토리로 fork 해온 url }

그리고 git remote -v를 통해 제대로 레포지토리와 연결되었는지 확인.

중간에 cd remote -v는 실수...

2. git fetch를 통해 원격 저장소에서 최신 변경사항을 가져옴. ( 변경사항은 로컬 브랜치에 자동으로 병합되지는 않는다고 함 )

 

3. git branch 혹은 git branch -r로 브랜치를 확인했음.

-> git branch와 git branch -r의 차이?

더보기

둘의 차이가 궁금해서 찾아보니 아래와 같은 차이가 있다고 함.

 

4. git branch -r 로 브랜치를 조회했을 때 main만 떠서 git remote prune origin를 한 후 다시 브랜치를 조회하니 프로젝트에 있던 브랜치들이 전부 확인됐음.

-> git remote prune origins 명령어는 Remote에 존재하지 않는 브랜치들을 로컬에 반영하여 삭제를 진행해준다고 함.

의문점 :

prune 명령어를 사용하면 원격 저장소 origin과 로컬 저장소 간에 더 이상 존재하지 않는 원격 브랜치들이 제거된다고 설명하는데 main만 확인되던 로컬에서 저 명령어를 실행한 걸로 왜 원격 저장소 브랜치들이 확인됐는지는 아직 이해가 안됨.

prune는 삭제하는 작업이고 위에 git fetch로 동기화를 진행했기 때문에 보이는건가?

 

5. git switch { 작업할 브랜치 } 명령어를 통해 작업할 브랜치로 이동

파일이 제대로 pull 됐는지 확인했고 제대로 가져와진걸 확인. 

왜 pull을 수시로 하라는건지 조금 알 것 같기도 한 순간이었음...

 

6. 커밋할 내용이 있는지 확인 한 후 git add .로 변경사항을 스테이징 영역으로 추가 후 커밋

7. 커밋이 확인 됐으면 git push로 푸쉬까지 완료하니 fork해 온 내 레포지토리에 compare&pull request라는 알림같은게 떴음.

compare & pull request 버튼을 누르니 내가 push 해야할 브랜치가 있는 원격 저장소로 PR하는 창이 뜸.

내 레포지토리 dev에서 -> 프로젝트 원격 저장소 dev로 PR

8. 마지막으로 원격저장소로 가서 내가 PR한 페이지를 들어가보면 아래쪽에 merge 버튼을 누르면 병합이 됨

이미 meage를 한 후에 캡쳐해서 완료 상태

 

이렇게 진행하면 원격 저장소에서 push까지 완료되어 내가 파일을 수정하고 커밋해서 merge된 것도 확인이 가능하지만 다른 팀원들은 원격 저장소에 똑같이 PR을 했을텐데 나한테 이 방법을 알려준 팀원말고는 PR로 merge된 부분이 보이지 않았음.

 

 

가만보니까 fork한 내 레포지토리를 통해서 원격저장소로 보내려면 레포지토리에서 레포지토리로 보내는 거라서 PR을 하지 않고는 안되는 것 같아서 다시 한 번 바로 프로젝트 레포지토리로 연결해보기로 함.

 

🚨 프로젝트 레포지토리로 바로 연결한 경우

 

1. git remote add origin { 레포지토리 url } 연결 후 git remote -v로 연결 확인.

2. git fetch로 최신 변경 사항을 가져온 후 git branch -r로 브랜치 조회

-> 조회했더니 정상적으로 원격 저장소 브랜치가 전부 확인됐음.

3. 작업할 브랜치로 이동해 준 후에 pull을 한 후 코드 수정하고 commit한 후  push.

언제 pull을 해서 가져왔지...? pull을 너무 수시로 했나..?

4. 여기서 커밋하고 푸쉬하는 작업은 명령어가 아니라 인텔리제이의 깃 UI를 통해서 푸쉬할 파일 하나만 선택해서 했음. 

아까 실패했을 때랑 같은 방법으로 하고 있는데 또 실패할까봐 다른 방법으로 진행해봄.. 혹시나 해서..

-> 커밋 후 git status로 확인해 보았을 때 아래 빨간색 mdified는 왜 때문에 뜨는 건지 잘 모르겠는데 알아봐야 할듯함!

5. 푸쉬한 후 PR을 하지 않아도 내가 작업한 브랜치에 잘 merge된 걸 확인했음. 

 

'Git&Github' 카테고리의 다른 글

github repository 합치기  (0) 2024.03.13
GitHub merge & PR  (0) 2023.08.09
Git과 GitHub 차이점  (0) 2023.08.07

+ Recent posts