Remote Repository의 변경 사항이 있을 때마다 fetch 받아서 merge를 하는 것은
왠지 비효율적인 것 같고 불편한 것 같이 느껴진다.
Git이 그런 아이가 아닌데....
물론 이와는 다른 방법이 있다. 편한 방법이...
이에 대해서 하나씩 살펴보자.
1. After merge
- 앞에서 진행한 내용이후의 상황을 살펴보자.
$ git log -4
- remote의 변경 사항을 fetch 받아서 지금 작업하고 있는 내용에 merge를 한 상황이다.
- 그런데, [ git status ]를 하면 "Your branch is ahead of 'origin/master' by 2 commits" 라고 보인다.
- 하나는 local master branch에서 push 하지 않은 commit 이고,
- 다른 하나는 merge로 인해서 발생한 commit 이다.
2. clean
- 일단, 다른 것을 확인해보기 위해서 위와 같이 확인을 했다면, 잠시 정리 작업을 진행하자.
$ git status
- local에 남아있는 commits을 remote로 밀어 넣자.
- [ git status ] 실행 결과가 위와 같이 깔끔해야 한다.
3. pull
- 앞의 포스팅을 따라했다면, "2nd/bare1repo" 를 만들었을 것이다.
- 만약에 없다면, 그냥 무시~ ^^
- remote repository에서 소스를 받아온 후, 아무런 작업이 없었다면 (push 안된 commit이 없는 경우)
- 위와 같이 그냥 소스코드를 업데이트 하곤 끝이다.
4. remote repository update
- 오늘 살펴볼 내용을 만들기 위해서 별도의 local에서 작업 후 push하여 remote를 업데이트 해보자.
- 일단은 모두 정리를 했다면, 위 그림과 같다.
- 작업을 한 다음에 commit을 하나 했다면 위 그림과 같다.
$ nano ./readme.txt
$ git commit -a -m "modify readme.txt in master, 2nd"
$ git push
- 파일 하나 수정 후 commit을 하고, 마지막으로 [ git push ]를 해주자.
- 위 그림과 같이 "A" commit 상태에서 "B" commit 상태로 'master'와 'origin/master' 모두 변경되었다.
5. git pull
- 이제 원래 작업하던 local로 변경하여보자.
- "A" commit 상태였지만, 저 위의 작업으로 인해서 'origin/master'의 실제 상태는 "B" commit 이다.
- 그런데, master branch에서 소스 수정 후 commit을 하게 되면 어떻게 될까?
- 이제는 [ git pull ]을 해 볼 시간인데... 어떻게 될까?
- [ git pull ]을 하게 되면 바로 앞의 포스팅과 같이 'merge commit'을 생성하면서 코드를 섞어준다.
- 그림으로 살펴보면 위와 같다.
결론은, 아래와 같다.
즉, 최신 변경된 내역을 내가 작업하고 있는 것에 반영하기 위해서는 'git pull'을 사용하는 것이 편하다!!!
더불어서, git의 merge는 "3-way merge"라는 방식이다.
헥헥~ 오늘은 내일 '근로자의 날'을 앞두고,
일요일에 진행한 "두산 vs KIA" 경기를 다시보기로 보면서 역전승이라는 드라마에 감동하면서 포스팅하고 있다.
두산 파이팅~!!!
'SCM > Git-GitHub' 카테고리의 다른 글
SSH Public Key - SSH 공개키 (0) | 2012.05.04 |
---|---|
Git Branch (브랜치) - Remote Ⅲ (생성, track) (0) | 2012.05.01 |
Git Branch (브랜치) - Remote Ⅰ (Fetch) (0) | 2012.04.30 |
Git Branch (브랜치) - Local Ⅴ (ETC) (0) | 2012.04.24 |
Git Branch (브랜치) - Local Ⅳ (Conflict) (0) | 2012.04.24 |