[Git] Commands Summary - branch

2 minute read

Commands Summary - branch

git-version-2.29.2

List branch

  • 현재 repository의 local branch를 보여준다.
$ git branch
  • 현재 repository의 모든 branch를 보여준다.
    -a, -all: local branch 뿐만 아니라 remote branch도 보여준다.
$ git bracnh -a
  • 현재 branch에 merge된 branch를 보여준다.
$ git branch --merged
  • 현재 branch에 merge되지 않은, 파생된 branch를 보여준다.
$ git branch --no-merged



Create branch

  • 새로운 branch 를 생성한다.
$ git branch ${BranchName}
  • Remote에 local의 branch를 추가(-u: --set-upstream)
$ git push -u origin ${BranchName}



Delete branch

  • 특정 local branch 제거(-d, --delete)
    (-D: Shortcut for --delete --force)
$ git branch -d ${BranchName}
  • 특정 remote branch 제거
$ git push -d origin ${BranchName}



Rename branch

  • branch 이름 변경 옵션: -m(--move)
    (-M: Shortcut for --move --force)

Case #1

$ git branch -m ${BranchName} ${NewBranchName}


Case #2

  • 이름을 변경하고자 하는 branch로 이동
$ git switch ${BranchName}
  • -m 옵션을 활용하여 현재 branch 이름 변경
$ git branch -m ${NewBranchName}


Delete renamed branch from remote

이름이 변경된 branch를 remote에 적용시키고 싶은 경우,
아래의 명령어와 같이 remote에 변경된 이름의 새로운 branch를 업데이트(추가)한다.

$ git push -u origin ${NewBranchName}

이후, 변경되기 전의 이름을 가진 branch를 remote에서 제거한다.

$ git push -d origin ${OldBranchName}



  • ${BranchName}으로 branch를 이동한다.
$ git switch ${BranchName}

Options

  • -c(--create): branch를 새로 생성과 동시에 해당 branch로 이동
  • -C(--force-create): -c 와 동일하지만, 새로 생성하려는 branch 가 이미 존재할 경우, reset 시키고 이동한다.(Override)



Command: checkout

  • ${BranchName}으로 branch를 이동한다.
$ git checkout ${BranchName}

Options

  • -b(--create): branch를 새로 생성과 동시에 해당 branch로 이동
  • -B(--force-create): -b 와 동일하지만, 새로 생성하려는 branch 가 이미 존재할 경우, reset 시키고 이동한다.(Override)



Command: merge

  • 현재 branch에 특정 branch를 merge
$ git merge ${BranchName}
  • Case1. Fast-forward merge: merge commit을 만들지 않고, merge된다.
  • Case2. Three-way merge: merge commit이 자동으로 생성된다.

Options

  • --no-ff: Fast-forward merge는 merge commit을 만들지 않지만,
    해당 옵션을 주게되면 merge commit을 만들 수 있다.
    명령어를 실행하면 commit을 할 때와 동일하게 commit message를 입력할 수 있으며,
    완료하게되면 merge commit이 생성된다.


Merge Conflict

Abort

  • Merge 취소
$ git merge --abort


Manually

  • 수동으로 conflicted 파일을 수정한 뒤, git add 명령어로 staging area로 이동시킨다.
$ git add ${ConflictedFile}
  • 이후, git merge --continue 또는 git commit 명령어로 merge conflict를 해결하여 commit한다.
$ git merge --continue  # 또는 git commit


Mergetool

직접 설정한 mergetool을 활용하여 merge conflict 해결

$ git mergetool
keepBackup Option

mergetool 사용시, *.orig 라는 이름으로 backup 파일이 자동으로 생성된다.
자동 생성을 원치않는다면 다음과 같이 설정이 필요하다.

$ git config --global mergetool.keepBackup false

또는 gitconfig 파일에 아래의 값을 추가한다.

[mergetool]
    keepBackup = false


gitconfig 파일에 아래내용 추가

[merge]
    tool = p4merge
[mergetool "p4merge"]
    path = ${p4merge_path}
  • MacOS: ${p4merge_path}: /Applications/p4merge.app/Contents/MacOS/p4merge


gitconfig 파일에 아래내용 추가

[merge]
    tool = vscode
[mergetool "vscode"]
    cmd = code --wait $MERGED

Leave a comment