git remote add origin url주소
git remote show origin
git push 원격저장소별칭 브랜치이름
git push -u origin master
git branch -r
git branch -a : 모든 브랜치 확인
git fetch
git check -b 새로운 브랜치이름 origin/브랜치이름
git checkout -b 브랜치이름 : 브랜치를 생성하면서 해당 브랜치로 체크아웃
git push --set-upstream origin 브랜치
git branch -d(-D) 브랜치이름
스태시
: 코드 수정 중 깃 작업이 필요할 때 사용한다. 작업 브랜치를 변경하려면 워킹 디렉토리에 커밋되지 않은 내용이 있어서는 안된다. 다른 브랜치로 이동해야하는 경우 스태시 기능을 사용할 수 있다. 현재 작업 중인 내용은 임시 저장되고, 수정 전 마지막 커밋 상태로 돌아간다.git stash (save) "메시지";
git stash list
git stash pop - 꺼내온 후 스택에서 삭제
git stash apply stash@{}- 스택에서 삭제하지 않기 때문에 계속 사용할 수 있고
중간 부분을 꺼내올 수 있다. 따로 스태시를 선택하지 않으면 최신 스태스를 복원한다.
git stash branch 브랜치이름
git stash drop
git clean
git merge 브랜치이름
현재 체크아웃 된 브랜치에 다른 브랜치의 모든 커밋을 병합한다.
3 way merge : 브랜치별로 각각 커밋한 상황
공통 조상 커밋을 가진 브랜치와 새로운 두 브랜치 이렇게 3개 있어서 3way라고 한다.
공통 조상 커밋을 기준으로 다른 브랜치들을 병합하고, 병합이 완료되면 새로운 커밋은 병합 커밋을 생성한다. 여기서는 브랜치가 2개이므로 병합커밋은 부모커밋을 2개 가지고 있다. 깃은 병합을 할 때 공통조상커밋을 자동으로 찾아준다.
브랜치 삭제 : 일반적으로는 병합된 브랜치는 삭제한다.
git branch -d 브랜치이름
git branch -D 브랜치이름 : 병합되지 않은 브랜치를 삭제할 때
git status 명령어로 상태확인
git merge --abort : 방금 실행한 병합을 취소할 때 사용
충돌이 발생한 (master|MERGING) -> (master) 로 merge과정이 취소됨
<<<<<<<<<<< HEAD
merge의 기준이 되는 브랜치의 내용
============
기준 브랜치에 병합하고자 하는 브랜치의 내용
>>>>>>>>>>> 병합 브랜치 이름
git branch --merged
리베이스 : 커밋의 트리구조를 재배열하는 병합방법이다. 공통조상커밋을 변경하는 것이다.
브랜치가 많아지면 단계별로 커밋을 따라가며 코드를 확인해야하기 때문에 커밋을 관리하고 파악하기 어렵다. 리베이스는 베이스 분기점을 변경하여 하나의 기찻길을 반드는 방법이다
리베이스 vs 병합
병합 : 공통조상커밋에서 파생된 두 브랜치를 하나로 합치고 병합 커밋을 생성
리베이스 : 두 브랜치를 비교하지 않고 순차적으로 병합하는 것
베이스 커밋을 커밋6으로 변경하고 다른 브랜치의 커밋은 커밋3과 커밋4를 이어 붙인다. 리베이스를 하면 병합 커밋은 따로 발생하지 않는다.
리베이스 명령어
git rebase 커밋의 기준브랜치
ex)
**현재 브랜치의 커밋들을 지정한 브랜치 위로 옮기는 작업을 수행한다.**
이 과정에서 커밋의 해시 값이 변경된다.
리베이스는 커밋 위치를 재조정할 뿐 브랜치의 HEAD포인터까지 옮겨 주지는 않는다. 리베이스 한 후에는 병합 브랜치의 HEAD를 맞추어야 한다.
git rebase --continue
git add 파일이름(그리고 수정한 파일을 스테이지 상태로 변경)
git rebase --abort
-출처
이호진 저 Git 교과서