본문 바로가기
개발 Story/Git & GitHub

git merge & log & reflog

by niee 2017. 12. 7.
반응형
1. git merge 

git merge의 경우 지난 포스팅에서 봤듯이 작업된 branch의 내용을 다른 branch로 통합 시키는 작업이다. 이때 아래 처럼 그냥 git merge branch_name 을 할 경우, 특별히 충돌이 나지 않는다면 commit log를 따로 작성하지 않고, 통합당하는 branch의 마지막 commit log를 가지고 온다.
 
(branch_name)> git commit -m "commit log"

(branch_name)> git checkout master

(master)> git merge branch_name

Updating 4578f2c..b782127
Fast-forward
 test.txt | 1 +
 1 file changed, 1 insertion(+)

(master)> git log

commit f03082b487479dca7366130c978b9658e27666f2
Author: ParkMinkyu <niee@naver.com>
Date:   Thu Dec 7 13:41:18 2017 +0900

    commit log

이렇게 하지 않고 merge시에 merge로그를 확실하게 남기고 싶은경우 --no-ff 옵션을 사용하면 log를 입력 할 수 있다.
 
(master)> git merge --no-ff branch_name

"에디터가 뜨면 log 기록 기본적으로 Merge branch 'branch_name' 으로 설정되어 있음."

(master)> git log

commit b562ec6eccd33603807ac322bec95aaa727a5828 (HEAD -> master)
Merge: f03082b 1855049
Author: ParkMinkyu <niee@naver.com>
Date:   Thu Dec 7 13:42:45 2017 +0900

    Merge branch 'branch_name'


2. git log 

 git log명령어는 기본적으로 지금 HEAD가 위치한 branch의 commit log만을 텍스트 형식으로 보여준다. 때문에 지금까지 기록된 모든 log 를 확인하고 싶다면 -g 또는 --walk-reflogs 옵션을 사용하면 된다. 이경우는 commit log뿐 아니라 commit,checkout, merge등 사용했던 모든 이력이 출력된다.
 
> git log -g

> git log --walk-reflogs

log를 시각적으로 확인하고 싶으면 --graph 옵션을 사용하면 된다.
 
> git log --graph
* commit b78212753c6fe9af32d003e89184e2bdd508dfd8 (HEAD -> add)
| Author: ParkMinkyu <niee@naver.com>
| Date:   Mon Dec 4 16:34:25 2017 +0900
|
|     test
|
*   commit 4578f2c3d02066696d498f03fc12e2cddc97dfc9
|\  Merge: dcee2ae d7aca3c
| | Author: ParkMinkyu <niee@naver.com>
| | Date:   Mon Dec 4 09:50:29 2017 +0900
| |
| |     merging
| |
| * commit d7aca3c0165f44b1cfad7272abd8d27d54fe79c5
| | Author: ParkMinkyu <niee@naver.com>
| | Date:   Mon Dec 4 09:48:56 2017 +0900
| |
| |     123 -> 567
| |
| |
* | commit dcee2aeb4eaffafbcfe6b3000d0ed412f9c11dd5
|/  Author: ParkMinkyu <niee@naver.com>
|   Date:   Mon Dec 4 09:47:16 2017 +0900
|
|       update
|
* commit d231e706475513c4444f53fa2e506e162a29666a
| Author: ParkMinkyu <niee@naver.com>
| Date:   Mon Dec 4 09:43:43 2017 +0900
|
|     test
|
* commit d21fdf138265b893bde8f620055abb903b6de3e6
| Author: ParkMinkyu <niee@naver.com>
| Date:   Mon Dec 4 09:42:44 2017 +0900
|
|     1
|
* commit 617032242253d0beed97e8cd06e9ca645c939563
  Author: ParkMinkyu <niee@naver.com>
  Date:   Mon Dec 4 09:41:17 2017 +0900

      init

3. git reflog

마지막으로 reflog의 경우는 git log -g와 유사하지만 다른점은 메세지가 좀더 간략하게 표시되어 한눈에 알아보기 쉽워 해당 위치로의 checkout이 편해진다. 하지만 Git GC가 이전 상태를 제거하면 표시되지 않는다.
 
> git reflog

b782127 (HEAD -> add) HEAD@{0}: checkout: moving from master to add
b562ec6 (master) HEAD@{1}: merge lineupdate: Merge made by the 'recursive' strategy.
f03082b HEAD@{2}: checkout: moving from lineupdate to master
1855049 (lineupdate) HEAD@{3}: commit: update more
f03082b HEAD@{4}: checkout: moving from master to lineupdate
f03082b HEAD@{5}: merge lineupdate: Fast-forward
b782127 (HEAD -> add) HEAD@{6}: checkout: moving from lineupdate to master
f03082b HEAD@{7}: commit: 12-07 update
b782127 (HEAD -> add) HEAD@{8}: merge add: Fast-forward
d7aca3c HEAD@{9}: checkout: moving from add to lineupdate
b782127 (HEAD -> add) HEAD@{10}: checkout: moving from master to add
b782127 (HEAD -> add) HEAD@{11}: merge add: Fast-forward
4578f2c HEAD@{12}: checkout: moving from add to master



반응형