[GIT] git의 혁신 - branch

NAEMAMDAEROG·2021년 12월 3일
0

branch 만들기

  • git branch : 현재 브랜치의 목록을 볼 수 있다. 브랜치 이름 앞에 * 있는 것이 현재 사용하고 있는 브랜치
  • master는 기본 branch
  • git branch {새로운 branch 이름} : 브랜치 생성
  • git checkout {전환하려는 branch 이름} : 브랜치를 전환할 때
  • 새로 생성한 branch는 현재 내가 사용하고 있는 branch를 그대로 복사한다.
  • git checkout -b {생성하고 전환하려는 branch 이름} : 브랜치를 생성하고 전환까지 할 때
  • git branch -d : 브랜치를 삭제할 때
  • git branch -D : 병합하지 않은 브랜치를 강제 삭제할 때
  • B branch에서 A branch로 checkout 할 때 B branch에서 커밋하지 않은 파일이 있으면 checkout 할 때 충돌이 일어나고 branch를 변경할 수 없으므로 checkout 전에는 작업하던 걸 모두 commit 하고 checkout 하도록 하자.

branch 정보확인

  • git log --branches --decorate : 어떤 branch에서 최근에 어떤 commit을 했는지 알 수 있다.
  • HEAD -> exp : 현재 exp 브랜치에 체크아웃된 상태.
  • git log --branches --decorate --graph : branch들의 commit을 그래프로 볼 수 있다.
  • git log --branches --decorate --graph --oneline : 로그에 모든 브랜치를 표시하면서 그래프로 표현하되 한 줄로 표시할 때
  • git log {branch명 1}..{branch명 2} : 브랜치 간에 commit 내용을 비교할 때, branch명 1을 기준으로 branch명 2에 commit한 내용을 보여준다.
  • git log -p {branch명 1}..{branch명 2} : commit 내용 뿐만 아니라 어떤 코드가 차이 나는지도 보여준다.
  • git diff {branch명 1}..{branch명 2} : 브랜치들의 현재 상태를 기준으로 어떤 코드가 차이 나는지 보여준다.

branch 병합

  • A branch -> B branch로 병합할 때 (A -> B)
    • git checkout A
    • git merge B
  • branch 병합시 각자 다른 파일을 가지고 있었다면 merge되는 branch로 다 합쳐진다. (파일이 이동하는 것이 아니라 복사된다.)
  • branch 병합시 같은 파일에 다른 위치에 다른 내용을 가지고 있었다면 merge될 때 한 파일로 합쳐진다.
  • 같은 파일의 같은 부분을 수정하고 merge 하면 충돌이 생겨서 에러가 뜬다.
  • git status로 충돌이 일어난 파일을 찾을 수 있다.
  • '<<<<<<< HEAD' 부터 '=======' 사이의 구간이 현재 체크 아웃된 파일의 내용이고 '=======' 부터 '>>>>>>> exp' 사시의 구간이 병합하려는 대상인 exp 브랜치의 코드 내용이다. 이 정보를 참고로 해서 두개의 코드를 병합한 후에 특수기호들을 제거해면 된다. 작업이 끝나면 파일을 저장.
  • 다시 git add -> git commit 해주면 된다.

stash

  • 다른 브랜치로 checkout을 해야 하는데 아직 현재 브랜치에서 작업이 끝난 경우가 아니라면 commit하기가 애매하다. 이럴 때 stash를 이용하면 작업중이던 파일을 임시 저장해두고 현재 브랜치의 상태를 마지막 커밋 상태로 초기화할 수 있다. 그 후에 다른 브랜치로 이동하고 작업을 끝낸 후 작업 중이던 브랜치로 복귀한 후에 이전에 작업하던 내용을 복원할 수 있다.
  • 작업을 commit하지 않고 branch를 변경하면 변경한 branch까지 그 파일이 영향을 준다.
  • git stash or git stash save : 현재 작업 중이던 걸 저장하고, 최근 commit으로 상태를 돌려놓는다.
  • git stash apply: 전에 저장했던 걸 되돌려놓는다.
  • git stash list: stash했던 list를 보여준다. 가장 위에 있는 파일(stash@{0})이 가장 최신 파일이다.
  • git reset --hard HEAD: 최근 commit했을 때와 동일하게 파일을 돌려놓는다. 그 후에 다시 git stash apply를 하면 전에 저장했던 걸로 돌아간다.
  • stash는 우리가 삭제하지 않는 한 살아있다.
  • git stash drop: 가장 최신 상태를 삭제한다.
  • git stash apply; git stash drop; = git stash pop: stash를 가져오고 바로 삭제한다.
  • git stash는 버전 관리가 되고 있는 파일(한 번이라도 git add를 한 파일)에 한해서만 적용된다.

출처 : 생활코딩 - 지옥에서 온 git
https://opentutorials.org/course/2708/15259

profile
Blockchain & Programming 공부 기록

0개의 댓글