git , github

git 기초편 (5) - 실습[Reset, Revert, branch]

고도비 2023. 1. 25. 02:35

Reset , Revert

  • reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지웁니다.
  • revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행합니다.
git reset --hard [commit된 원하는 버전의 hesh]
##원하는 버전으로 이동후 이후 히스토리 삭제
##[hesh]를 입력하지 않으면 최신 버전의 히스토리(commit)로 돌아감

현업에선 revert를 주로 사용

git revert [commit된 원하는 버전의 hesh]
##원하는 버전으로 이동하고 이동하기 전 단계로 돌아갈 수 있는것을 commit함
git revert --no-commit [commit된 원하는 버전의 hesh]
##돌아갈 수 있는 것을 commit하지 않고 원하는 버전으로 돌아감
##취소하고 싶다면 git reset --hard

sourcetree에선 위 사진처럼 원하는 commit을 우클릭 후에 reset은 [이 커밋까지 현재 브랜치를 초기화] 를 선택, revert는 [커밋 되돌리기]를 선택해준다.

 

Branch (가지)

branch의 필요성

-프로젝트를 두개 이상의 모습으로 관리해야 할 때(현재 적용된 모습, 테스트용 모습)

-여러 작업들이 각각 독립되어 진행될 때(독립된 기능)

branch 생성

아래 명령어 입력

sourcetree에선 상단의 브런치 버튼을 누르고 진행

git branch [branch name]

 

branch 목록

아래 명령어 입력

sourcetree에선 좌측에 나와있다. 더블 클릭으로 이동이 가능하다.

git branch

다른 branch 로 이동

git switch [이동할 branch name]

생성과 동시에 이동

git switch -c [branch name]

branch 이름 변경

git branch -m [현제 branch name] [바꿀 branch name]

branch 삭제

git branch -d [삭제할 branch name]
##다른 branch로 가져오지 않은 내용이 있는 branch를 지울 때는
##git branch -D [삭제할 branch name] <<로 강제 삭제한다.

branch를 만들고 각 branch에서 commit을 해주면 우측 사진과 같이 나뉘어 진다.

여기서 [git log] 명령어를 입력하면 현제 속해있는 branch에서의 log만 보여준다.

전체적인 log를 보고싶다면 아래 명령어를 입력하면 된다.

git log --all --decorate --oneline --graph

branch 합치기

merge

두 브랜치를 한 커밋에 이어붙입니다.

기준이 되는 branch(ex master)로 이동해서 아래 명령어 입력

두 브랜치를 한 번에 적용 시키는 커밋이 생김

branch내역을 남기려면 사용

git merge [합칠 branch 이름]

소스트리에선 master로 이동한 후 우측 브랜치 리스트에서 우클릭 후 ‘현재 브랜치로 [] 병합’을 선택한다.

reset으로 돌아갈 수 있다.

merge한 branch는 필요없다면 삭제를 해도 된다.

rebase

브랜치를 다른 브랜치에 이어붙입니다.

히스토리를 깔끔하게 정리되게 하려면 rebase를 이용

협업에는 사용하지 잘 사용하지 않는다

붙일 내용이 포함된 branch로 이동한다.(사라질 branch)

그 다음 아래 명령어를 입력한다.

 📌 이 아래로 기준이 되는 branch는 master branch, 붙일 내용이 포함된 branch는 slave branch라고 칭하겠습니다.
git rebase [기준이 되는 branch (ex : master)]

소스트리에선 rebase할 브랜치로 이동한 후 우측 브랜치 리스트에서 우클릭 후 ‘현재 변경사항을 []에 재배치’을 선택한다.

명령어를 입력한 직후에 slave branch는 합쳐진 상태이지만 기준 branch(master)는 합쳐지기 전의 상태에 있다.

이때 master branch로 이동해서 두 branch를 다시 merge로 합쳐준다.

branch 간 충돌 그리고 해결

다른 브랜치에서 같은 파일에 같은 줄에 서로 다른 내용을 입력하면 병합 할 때 충돌이 발생한다.

이 때는 프로그래머가 해결해야된다.

merge에서 충돌

충돌이 일어나면 해당부분을 수정하고 git add와 commit을 해준다. 이때 commit을 할 땐 메세지가 자동 완성 된다. (위 merge랑 같음)

당장 충돌 해결이 어려운경우 아래 명령어를 입력해서 merge를 중단시킨다.

git merge --abort

rebase에서 충돌

여기서는 해당 부분을 수정하고 git add를 한 다음 commit이 아닌 아래 명령어를 입력한다.

git rebase --continue

당장 충돌 해결이 어려운경우 아래 명령어를 입력해서 rebase를 중단시킨다.

git rebase --abort

rebase에선 branch의 commit을 다 붙이는 것 이기때문에 한 줄에서만 여러번의 충돌이 있을 수 있다. 그때마다 충돌 해결을 해줘야 한다.

마찬가지로 충돌 해결을 하고 rebase를 마쳤다면 master branch로 이동해서 merge로 마무리 해준다.