Git 가져오기와 Git 풀의 차이점
이 기사에서는 git pull
및 git fetch
명령의 실제 사용에 대해 설명하여 차이점과 사용 시기를 확인합니다.
Git 가져오기란 무엇입니까?
원격 저장소에는 아래와 같은 파일이 있습니다.
원격 및 로컬 리포지토리가 동기화되어 있습니다. 원격 저장소의 Sample.txt
파일을 변경해 보겠습니다.
파일에 임의의 것을 작성하고 변경 사항을 커밋합니다.
이 시점에서 원격 저장소에는 두 개의 커밋이 있고 로컬 저장소에는 하나의 커밋이 있습니다. 이는 로컬 저장소에 업데이트가 필요함을 의미합니다.
이 시점에서 git fetch
가 편리합니다. 로컬 저장소에서 커밋 기록을 확인하기 위해 git log
명령을 실행해 보겠습니다.
로컬 저장소에는 Updated Sample.txt
커밋이 없습니다. 변경 사항을 확인하기 위해 git fetch
를 사용합니다.
pc@JOHN MINGW64 ~/Git/Delftscopetech (main)
$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 709 bytes | 2.00 KiB/s, done.
From https://github.com/Wachira11ke/Delftscopetech
c43169e..2445daf main -> origin/main
위의 명령에서 기본 분기에 적용된 원격 저장소의 변경 사항을 볼 수 있습니다. git merge
명령을 사용하여 이러한 변경 사항을 로컬 저장소에 적용할 수 있습니다.
pc@JOHN MINGW64 ~/Git/Delftscopetech (main)
$ git merge origin main
Updating c43169e..2445daf
Fast-forward
Sample.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
커밋 기록을 확인하기 위해 git log
명령을 실행해 보겠습니다.
$ git log
commit 2445dafc118748a5cb53c5262b393ab0e1a9e235 (HEAD -> main, origin/main, origin/HEAD)
Author: Wachira11ke <100116527+Wachira11ke@users.noreply.github.com>
Date: Tue Mar 15 22:07:11 2022 +0300
Update Sample.txt
First Update
commit c43169e587ab7ab996087ff460e54032e83030f0
Author: Wachira11ke <100116527+Wachira11ke@users.noreply.github.com>
Date: Tue Mar 15 21:45:50 2022 +0300
Second commit
commit b2f77108396c9ae867d8e9d69c575eda99dd1436
Author: Wachira11ke <100116527+Wachira11ke@users.noreply.github.com>
Date: Mon Feb 21 10:00:23 2022 +0300
Initial commit
이 시점에서 로컬 및 원격 저장소가 모두 동기화됩니다. git pull
명령을 살펴보겠습니다.
Git 풀이란
원격 저장소로 돌아가서 파일을 더 변경해 보겠습니다. 임의의 숫자를 작성하고 변경 사항을 커밋합니다.
이제 원격 저장소에는 로컬 저장소보다 커밋이 하나 더 있습니다. git pull
명령을 실행하여 로컬 저장소를 업데이트할 수 있습니다.
pc@JOHN MINGW64 ~/Git/Delftscopetech (main)
$ git pull origin main
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 730 bytes | 3.00 KiB/s, done.
From https://github.com/Wachira11ke/Delftscopetech
* branch main -> FETCH_HEAD
2445daf..8089f2b main -> origin/main
Updating 2445daf..8089f2b
Fast-forward
Sample.txt | 1 +
1 file changed, 1 insertion(+)
로컬 리포지토리는 이제 원격 리포지토리와 함께 최신 상태입니다. git pull
은 복합 명령(git fetch
+ git merge
)이라는 결론을 내릴 수 있습니다.
변경 사항을 직접 가져와 병합합니다.
Git Fetch와 Git Pull의 차이
Git Fetch | Git Pull |
---|---|
원격 저장소에 대한 변경 사항을 확인합니다. | 원격 리포지토리의 변경 사항을 로컬 리포지토리와 직접 병합합니다. |
가져온 변경 사항은 .git 폴더로 업데이트됩니다. |
변경 사항은 로컬 리포지토리에 직접 적용됩니다. |
병합하기 전에 커밋을 검토할 수 있습니다. | 변경 사항을 즉시 업데이트합니다. |
갈등은 거의 나타나지 않습니다. | 병합 충돌이 발생할 수 있습니다. |
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn관련 문장 - Git Pull
- Git Merge Origin/Master와 Git Pull의 차이점
- Git Pull 원본 분기가 마스터 분기를 덮어씁니다.
- Git Pull이 모든 것을 당기지 않음
- Git 클론 업데이트
- Git 풀 실행 취소
- GitHub에서 저장소 포크