Push와 Pull

Push와 Pull

1. push (원격 커밋 밀어올리기)

  • 깃의 명령어인 push에 대해 알아봅시다.
  • push란? 로컬 저장소에 있는 변경 사항을 원격 저장소로 전송하는 것을 말합니다.
  • 작업한 코드 or 파일 등의 수정 내용을 다른 사람들과 공유하거나, 여러 기기에서 작업한 내용을 동기화하는 데 사용됩니다.

2. 사용방법

  • 그러면 직접 사용해봅시다.
  • #1. bears.yamlmemberPark을 추가해주고 다음과 같이 입력하여 커밋해 줍니다.
Add Park to Bears

 

  • #2. git push를 입력하여, 원격 저장소에 넣어줍니다.
  • git push만 입력해도 되었던 이유는 전에 git push -u origin main라고 입력하여, 대상 원격 브런치가 지정되었기 때문입니다.

    → 그러면 정상적으로 push가 되었음을 확인할 수 있습니다.

 

3. pull (원격 커밋 당겨오기)

  • 이제 pull에 대해 알아봅시다.
  • pull이란? 원격 저장소에서 변경 사항을 로컬 저장소로 가져오는 작업을 말합니다.
  • 일반적으로 다른 개발자가 작업한 새로운 코드 or 원격 저장소에 반영된 변경 사항을 로컬로 가져와서 자신의 작업 환경에 적용할 때 사용됩니다.

4. 사용방법

  • 그럼 이제 사용해봅시다!
  • #1. GitHub에 들어가서 bears.yaml에 들어가 Edit this file 버튼을 클릭합니다.

 

  • #2. memberChoi를 추가해주고 오른쪽 상단에 Commit changes...를 클릭해 줍니다.

 

  • #3. 그러면 창이 나오는데, Commit messageAdd Choi to Bears라고 입력 후, Commit changes를 클릭해 줍니다.

    → 그러면 정상적으로 커밋이 되었음을 확인할 수 있습니다.

 

  • #4. 그 다음, VSCode로 돌아가서 터미널에 git pull이라고 입력합니다.

    → 그러면, 방금 전에 추가한 내용이 VSCodebears.yaml에 추가된 것을 확인할 수 있습니다.

 

    → SourceTree를 보면, 로컬main원격main같은 자리에 위치한 것을 확인할 수 있습니다.

 

4. pull과 push 둘다 해야할 경우

  • pull할 것이 있을 때, push를 하면 어떻게 될까요?
  • #1. 먼저 로컬에서 BearsmanagerSung으로 변경한 후, 다음과 같이 입력하여 커밋합니다.
Edit Bears manager

 

  • #3. 그 다음 GitHub에 들어가 방금처럼 bears.yamlcoachKang으로 변경한 후, 다음과 같이 입력하여 커밋합니다.
Edit Bears Kang

 

  • #4. 다시 VSCode로 돌아가 터미널에 git push를 입력해 줍니다.

    → 그러면 다음과 같이 나오게 됩니다. 원격 저장소에 먼저 적용된 새 버전이 있기 때문에 적용이 불가한 겁니다.

    → pull해서 원격의 버전을 받아온 다음, push가 가능합니다. 

 

  • 이럴 때, 두 가지 방법이 있습니다. 한번 하나씩 알아보겠습니다.
  • #1. 터미널에 git pull --no-rebase라고 입력해 줍니다.

    → 그 다음 SourceTree로 보면, 로컬의 main 브랜치원격의 main 브랜치 갈라진 것을 확인할 수 있습니다.

    → 이러면 자동으로 merge가 되는 것입니다.

 

  • #2. 다른 방법도 써보기 위해 Edit Bear manager 시점으로 reset 해 줍니다.
  • #3. 터미널에 git pull --rebase라 입력해 줍니다.

    → SourceTree로 보면, GitHub에서 작업한 것 다음에 로컬에서 작업한 것이 붙여졌습니다.

    → 이러면 rebase된 것입니다. (이 방식은 협업 시, 사용 가능합니다.)

 

  • #4. 터미널에 git push를 입력해주고 GitHub에 들어가면, 정상적으로 push된 것을 확인할 수 있습니다.

 

4. 협업상 충돌 발생 해결하기

  • 협업 중 충돌 상황이 발생했을 때, 어떻게 해결하는지 알아봅시다.
  • #1. 로컬에서 PanthersmemberKim을 추가한 후, 다음과 같이 입력하여 커밋해 줍니다.
Add Kim to Panthers

 

  • #2. 이번엔 원격으로 같은 위치에 Jeon을 추가한 후, 다음과 같이 입력하여 커밋해 줍니다.
Add Jeon to Panthers

 

  • 이제 push하면 충돌이 발생합니다. 이 문제를 해결해봅시다.
  • #3. VSCode 터미널에 git pull --no-rebase를 입력해 줍니다.

    → 그러면 다음과 같이 나오게 됩니다. 둘 중 하나를 선택한 후, git commit을 입력하고 :wq로 저장하여 커밋해 줍니다.

 

    → 그러면 정상적으로 merge가 되었음을 확인할 수 있습니다.

 

  • #4. 다른 방식도 해보기 위해 Add Kim to Panthersreset해 줍니다.
  • #5. 터미널에 git pull --rebase를 입력해 줍니다.
  • #6. Jeon으로 선택한 후,  git add .를 입력하고 git rebase --continue를 입력해 줍니다.

    → 이러면, Add Kim to Panthers는 사라지게 됩니다.

    → Kim은 없앴기 때문에 새로 추가할 필요가 없어서 그렇습니다.

    → Jeon이 아니라 Kim을 선택했다면, Add Jeon to Panthers위에 Add Kim to Panthers가 추가되었을 것입니다.

 

5. 로컬의 내역을 강제 push

  • 로컬의 내역을 원격에 강제로 적용하고 싶으면, 다음과 같이 입력하면 됩니다. (협업 시, 사전에 얘기가 되어있지 않다면, 권장하지 않습니다.)
git push --force

 

6. 정리하며

  • 지금까지 pushpull에 대해 알아보았습니다.
  • 다음 시간엔 원격의 브랜치를 다루는 방법에 대해 알아보겠습니다.
 

원격의 브랜치 다루기

원격의 브랜치 다루기 1. 원격의 브랜치 다루기 이번엔 원격에서 브랜치를 다뤄봅시다! 우선 로컬에서 브랜치를 만든 후, 원격으로 push 해봅시다. #1. VSCode의 터미널로 들어가 다음과 같이 입력하

newbean-j.tistory.com

 

※ 이 글은 얄팍한 코딩사전 님의 유튜브 강의를 참고하였습니다.

 

'Back-End Study > Git & GitHub' 카테고리의 다른 글

SourceTree로 원격 브랜치 다루기  (0) 2024.02.16
원격 브랜치 다루기  (0) 2024.02.16
원격 저장소 사용하기  (1) 2024.02.08
GitHub  (1) 2024.02.08
SourceTree로 브랜치 다루기  (0) 2024.02.06