
시작하기 앞서
commit
branch
checkout
cherry-pick
reset
revert
rebase
merge
학습 명령어
git branch 브랜치치브랜치 생성git checkout 브랜치치; git commit브랜치치로 이동 후 커밋git merge 브랜치치브랜치치를 하나로 통합-
git rebase 브랜치치현재 브랜치를 브랜치치로 통합리베이스는 기본적으로 커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것입니다. 조금 어렵게 느껴질 수 있지만, 리베이스를 하면 커밋들의 흐름을 보기 좋게 한 줄로 만들 수 있다는 장점이 있습니다. 리베이스를 쓰면 저장소의 커밋 로그와 이력이 한결 깨끗해집니다.
-
merge와 rebase의 차이?

merge: 두 브랜치를 합치는 것 (history가 남음) rebase: 한 브랜치의 커밋을 다른 브랜치 위로 옮기는 것 (history가 일직선이 됨)
-
^한번에 한 커밋 위로 움직임^2여러 부모 커밋이 있을 경우, 해당 번째에 커밋된 부모로 움직임~<num>한번에 여러 커밋 위로 움직임git checkout HEAD~^2~2처럼 한 번에 사용 가능git cherry-pick 브랜치치 브랜치치치HEAD 아래에 브랜치치, 브랜치치치 붙여넣기git commit --amend커밋 내용 정정git tag v1 브랜치치v1태그를 브랜치치에 달기git describe <ref>- 브랜치치가 상대적으로 어디에 위치해있는지 묘사
- 커밋 방향감각 찾는데 도움을 줌
<ref>에는 commit을 의미하는 그 어떤 것이든 가능- 출력 형태:
<tag>-<numCommits>-g<hash> - <tag> 가장 가까운 부모 태그 - <numCommits> 그 태그가 몇 커밋 멀리있는지 - <hash> 묘사하고있는 커밋의 해시
git bisect문제가 되는 커밋을 찾는 명령어git clone원격 저장소(github)에서 복사본으로 가져오기git fetch“ 원격 저장소와 현재 상태를 동기화 “- 원격 저장소에는 있지만 로컬에는 없는 커밋들을 다운로드 받음
- 원격 브랜치가 가리키는곳을 업데이트함 (ex. o/main)
- 단,
git fetch는 다운로드만 할 뿐 실제 로컬 구성을 변경하진 않음 -> 이걸 하려면git pull
git pull원격 저장소의 변경을 fetch하고 그이후에 merge하는 작업의 과정을 한 번에 수행git push원격 저장소에 내 로컬 상태 올리기git pull --rebasefetch와 rebase를 한 번에 수행git branch -u 브랜치치 브랜치치치브랜치에 원격 추적 설정; 브랜치치치가 브랜치치 추적git push origin main- 내 저장소에 있는 “main”라는 이름의 브랜치로 가서 모든 커밋들을 수집
- 그다음 “origin”의 “main”브랜치로 가서 이 브랜치에 부족한 커밋들을 채워 넣음
git push origin <source>:<destination>- colon refspec(콜론 참조스펙)
- 참조스펙: “git이 알아낼 수 있는 위치” (브랜치 ‘foo’ 또는 HEAD~1)
git push origin :브랜치치원격 저장소의 브랜치치를 삭제함git fetch origin :브랜치치로컬에 새 브랜치치를 만듦