Git 가져오기와 Git 풀의 차이점

John Wachira 2024년2월15일
  1. Git 가져오기란 무엇입니까?
  2. Git 풀이란
  3. Git Fetch와 Git Pull의 차이
Git 가져오기와 Git 풀의 차이점

이 기사에서는 git pullgit 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 Wachira
John Wachira avatar John Wachira avatar

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 Fetch