git commit : commit을 새로 만듬.
git branch : branch를 만듬.
※ branch : 특정 commit에 대한 참조.
git checkout : 특정 commit을 불러오는 것.
git merge : 서로 다른 두 개의 commit을 합쳐 새로운 commit을 생성.
git reset : 이전 commit으로 히스토리를 옮김.
git rebase : commit을 복사하여 다른 commit으로 이동.
-i : 인터랙티브 리베이스.
git cherry-pick : 원하는 commit을 복사하여 붙여 넣는 것.
상대 참조
HEAD : 현재 작업중인 버전
- ^ : 특정 commit의 부모.
- 2 : 두번째 부모.
- ~ : 특정 commit으로 부터 어떠한 수 만큼 떨어진 부모.
git tag : 특정 commit에다가 어떤 내용을 남기는 것
git clone : 원격 저장소를 복제하는 것.
git fetch : 원격 저장소의 내용을 로컬로 가져 오는 것.
git pull : git fetch + git merge.
git push : 로컬 저장소의 내용을 원격으로 보내는 것.
위와같이 로컬의 C3 커밋은 원격 저장소의 C1 커밋을 부모로 하고 있고, 원격 저장소에서는
C2까지 갱신된 상태이기 때문에 push가 되지 않는다.
이를 push하기 위해서는 현재 로컬의 작업물을 rebase하거나 merge하여야한다.
위와 같이 git fetch로 C2를 로컬로 다운로드해주고, git rebase로 C3를 C2로 복사해준다.
이후 git push로 원격 저장소에 업로드해주면 완료된다.
혹은 merge를 이용하는 방법도 있다.
위와 같은 방법으로 push하기 위해서는 우선 git fetch로 C2를 로컬로 다운로드 해준다.
이후, git merge origin main으로 merge해준다면 push가 가능하게 된다.