티스토리 뷰

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



댓글