1. Git clone
- main으로 정한 깃허브 상에 주소를 복사한다.
- 복사 후 파일을 저장할 폴더를 VScode로 열고, 터미널 창도 연다.
- git clone (깃허브 주소)
원격 저장소에 있던 프로젝트가 로컬 저장소에 저장된다.
2. 내 파일을 새로운 branch에 push하기
- 파일을 수정했다면 git add . → git commit -m "커밋 메세지"를 입력
- 안전하게 새 브랜치를 만들어서 push를 해보자
- git checkout -b (브랜치명) 을 입력하면 브랜치 생성과 동시에 해당 브랜치로 이동
- git push origin member_1 (새로 만든 브랜치명, 필자는 member_1로 생성함)
그러면 만들었던 "member_1 브랜치"로 "원격 저장소"에 푸쉬를 하게 된다.
2-1.
- 깃허브로 돌아가면 member_1이 푸쉬를 했다는 메세지를 볼 수 있다.
- compare & pull request를 클릭한다
2-2.
- "첫 줄 추가"라는 commit message가 확인이 된다.
- 그 밑 큰 box안에 push파일에 대한 설명 또는 팀원에게 전달할 메세지 등을 입력할 수 있다.
- 입력 후 create pull request를 클릭
2-3.
- pull request에 1이 추가가 된 모습이 보여진다.
- pull request란 main으로 갈 수 있게 허락을 요청한다고 설명할 수 있겠다.
2-4.
- 선임자 또는 팀원, 본인이 merge pull request를 클릭하면 새브랜치에서 코딩했던 코드들이 main 프로젝트와 합쳐져있는 걸 볼 수 있다.
머지가 달 됐다는 보라색? 박스가 보여짐!
3. 원격저장소 프로젝트 pull 받기
상황을 가정했을 때, 다른 팀원은 작업을 계속하고 있었다고 하면 현재 원격 저장소에 저장 된 main 파일과는 내용이 다를 것임으로 동기화 작업을 해준다.
- pull전에 작업을 끝내고 git add . → git commit -m "커밋 메세지"
- git pull origin main (원격 저장소 메인에 있던 코드를 당겨오겠다.)
4. fatal: Need to specify how to reconcile divergent branches. 에러 발생!!!!!
git push origin main 을
!!!!! 했더니 이런 에러가 뜨고 말았다 ㄷ ㄷ ㄷ 에러가 발생 시 "오히려 좋다." 라는 마인드를 가지라고 했지만 동공에 지진이 발생한다.
일단 이 경우는 필자가 알기로는...
git pull이란 => fetch + merge의 합성어이다.
- fetch란 원격 저장소에 신규 commit을 가져와 보겠다는 것이고
- merge란 내 branch에 병합하겠다는 말
즉, 이 경우에 fetch만 되고 merge가 되지 못했다는 말로 merge의 종류를 지정 해줘야 한다.
3가지 종류 중 하나를 선택해야하는데...
https://eocoding.tistory.com/m/108 여기 블로그에 그것들에 관련된 내용이 자세히 나와있다. (하.. 저는 완벽히 이해하지 못했습니다.)
rebase방식은 commit이 지워질 수 있으므로 위험?해보여 피했고, fast-forward방식은 컴퓨터가 자꾸 거부를 하는 거 같다.
commit의 기록은 남겨놓고 병합을 하는? 1번째 merge를 실행해보았다
터미널 창에
- git config pull.rebase false 입력
- 다시 git pull origin main
그러면 또 이상한 창이 뜬다.
이것은 VI편집기라고 한다. 이것이 뜬 이유는 merge message를 입력하라는 것 같다.
- press "i" ( i 를 눌러야 vi편집기로 들어가서 수정할 수 있다.)
- merge message를 적음
(필자는 도대체 어떻게 적는지 모르겠다. 적으려고 해도 안 적혀짐...)
- ESC
- :wq 입력
- press enter
위에 작업을 수행했다면 pull이 잘 됐을 것이고 정확하게 확인해보려면
git log --oneline을 쳐보자 그러면 commit(merge가 잘 됐다는) 메세지가 뜬다.
위에 2번을 잘 수행한다면 merge message를 바꿀 수 있을 거라 예상한다.
git graph상에서도 잘 확인이 된다.
이제 원격 저장소에서 pull이 완료 됐으므로 수정된 파일을
git push origin (push할 브랜치명)