Git,  Programming

[Git] fetch 사용법

Git에서 fetch는 원격 저장소에서 반영된 내용을 받아 올 때 사용하는 명령어다. 이는 실제 로컬 저장소에 내용이 반영되진 않고, 원격 저장소의 반영된 내용을 참조하기 위해 사용됩니다.

로컬 저장소와 원격 저장소에B에서 분기된 커밋이 있는 상태에서 fetch 한 경우
$ git fetch  # default remote로부터 fetch

$ git fetch -all # fetch from all remotes

$ git fetch [repository] # fetch from the repository
# git fetch remote1 remote2 remote3 # fetch from multiple repositories

$ git fetch [repository] [branch] # fetch from the branch of the repository
# git fetch origin b1 b2 b3 # fetch from the multiple branches of the repository
# Ex) git fetch origin main
From ssh://111.111.11.11/shumin/primary-repo
 * branch            main       -> FETCH_HEAD

따라서 만약 원격 저장소의 내용을 실제 파일에 반영하고 싶은 경우 두 가지 방법이 존재한다.

  1. fetch and merge
  2. pull
'FETCH_HEAD'를 병합

pullfetchmerge를 한 번에 하는 명령이다. 굳이 fetch를 사용하는 이유는, merge 전에 사전에 어떤 부분이 차이가 나는지를 확인하고 merge를 할 수 있기 때문이다.

# This is primary repository

1. This is manual file

예를 들면, README.md 파일에 마지막 한 줄을 추가하고 나서 originmainpush를 했다고 가정하면 다른 사용자가 해당 branch에 대해 fetchdiff를 수행하면 다음과 같이 출력된다.

$  git diff main origin/main
diff --git a/README.md b/README.md
index d3b515c..a69c06c 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 # This is primary repository
+
+1. This is manual file

그리고 FETCH_HEAD가 HEAD에서 앞서서 이동하게 된다.

이런 방식으로 merge 전에 사전 확인이 가능하다.

$  git merge origin/main
Updating 1c00621..196c65d
Fast-forward
 README.md | 2 ++
 1 file changed, 2 insertions(+)

최종적으로 위와 같이 merge를 수행하면 된다.

Leave a Reply

Your email address will not be published. Required fields are marked *