지금까지 branch, merge, conflict의 기초에 대해서 알아보았는데, branch에 대해 더 깊게 다루기 전에 먼저 가볍게 branch를 관리하기 위한 간단한 명렁어들을 알아보겠다.
git branch -v
git branch는 아무런 옵션없이 실행하게 되면 현재 branch의 목록을 보여준다.
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master)
$ git branch
* master
ralro
이 때 branch 옆에 * 기호가 붙은 branch는 현재 HEAD가 가리키고 있는 branch, 즉 checkout 되어있음을 의미한다. 여기서 -v 옵션을 주게 되면 위의 목록에서 해당 branch의 커밋 개체의 SHA-1 해시 키와 함께 마지막 커밋 메세지도 함께 보여준다.
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master)
$ git branch -v
* master 8dc2453 success merge
ralro f2709be modified file1
git branch --merged/--no-merged
현재 branch들의 상태를 확인할 수 있는 옵션이다. 현재 checkout한( * 기호가 붙은 ) branch를 기준으로 Merge 된 branch인지 그렇지 않은지를 필터링하여 볼 수 있다.
이전 글에서 ralro branch를 master branch에 merge 했으니 새로운 branch를 생성해보고 해당 옵션을 사용해보겠다.
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master)
$ git branch ysg
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master)
$ git branch
* master
ralro
ysg
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master)
$ git checkout ysg
Switched to branch 'ysg'
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (ysg)
$ echo "modified" > file2.txt
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (ysg)
$ git commit -am "modified file2"
warning: in the working copy of 'file2.txt', LF will be replaced by CRLF the next time Git touches it
[ysg 21abbc1] modified file2
1 file changed, 1 insertion(+), 1 deletion(-)
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (ysg)
$ git checkout master
Switched to branch 'master'
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master)
$ git branch --merged
* master
ralro
master branch에서 ysg branch를 생성한 후에 ysg branch에서 새로운 커밋 개체를 생성해 주었다. ( 새로운 커밋을 생성해주지 않으면 ysg branch가 merge 된 commit 개체를 가리키고 있기 때문에... ) 그런 다음 다시 master branch로 돌아와 --merged 옵션을 실행해주는 master와 ralro 만 출력되는 것을 볼 수 있다.
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master)
$ git branch --no-merged
ysg
반대로, no-merged 옵션을 실행해주면 merge 되지 않은 ysg branch를 출력한다. 해당 branch는 아직 merge가 진행되지 않았기 때문에 -d 옵션으로는 삭제가 안되고 -D 옵션을 사용하여 삭제해주어야 한다.
--merged/--no-merged 옵션은 현재 checkout 한 branch를 기준으로 하기 때문에, 다른 branch를 기준으로 보고 싶을 때에는 해당 옵션의 뒤에 원하는 branch를 적으면 된다.
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master)
$ git checkout ysg
Switched to branch 'ysg'
user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (ysg)
$ git branch --merged master
master
ralro
reference : pro git
'기타 > Git' 카테고리의 다른 글
[Git] remote tracking branch (1) | 2024.01.11 |
---|---|
[Git] branch workflow (0) | 2024.01.09 |
[Git] Conflict 기초 (2) | 2024.01.08 |
[Git] Merge 기초 (0) | 2024.01.04 |
[Git] checkout (1) | 2024.01.03 |