etc.

TIL-Git 이 뭐지?

청렴결백한 만능 재주꾼 2020. 4. 9. 15:54
반응형

https://learngitbranching.js.org/?locale=ko

 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org

여기를 통해서 배운다.

 

git의 명령어

commit

branch

checkout

cherry-pick

reset

revert

rebase

merge

 

git branch bugfix

'bugfix'란 브랜치를 만듦

git checkout bugfix

'bugfix'에 별표 달기 (의미가... 유닛 지정? 같은 거)

git merge master

*달린'bugfix'와  다른거랑 합치기

 

git rebase <갈 위치> <지정하기>

다른 곳으로 떨궈 놓는 작업

 

git checkout c2

브랜치 말고 커밋을 선택함으로써 head->commit으로 바로 가게 함.

브랜치가 선택되어있으면 head->brance->commit으로 간다나 뭐라나

 

상대 참조(Relative Ref)

 

git log

해시 확인

 

커밋 이동 기능 

한 번에 한 커밋 위로 움직이는: ^

한번에 여러 커밋 위로 올라가는: ~<num>   (틸드 연산자 + 올라가고 싶은 부모의 개수)

 

like

git checkout bugFix^

버그 픽스의 부모 커밋을 선택함으로써 head머가리 나오게?

 

강제로 옮기는 것

git branch -f <지정> <위치>

git branch -f master HEAD~3

마스터 브랜치를 헤드에서 뒤로 3번 옮김.

 

문제 복잡하다.

문제를 위한 메모: 버그 픽스 맨 위 로올리고 헤드는 c1 master는 c6로

 

git reset - 로컬 저장소(내 것)에서 자주 쓰인다. 히스토리를 고치는 것이기 때문

ex) git reset HEAD~1 [마스터 이름~넘버]

 

 

 

git revert - 변경분을 되돌리고 되돌린 내용을 공유하기 위함.

ex) git revert [branch]

 

 

--------------여기까지 기본------------------


git cherry-pick <commit1> <commit2>

ex)git cherry-pick c3 c4 c7  -> 이렇게 하면 선택되어있는 곳 밑으로 쫙 깔림

가져오고 싶은 커밋 골라서 밑으로 떨어뜨리기

 

인터렉티브? 리 베이스 대화창

interactive rebase 대화창에서 할 수 있는 3가지

 1. 적용할 커밋들의 순서를 바꿀 수 있음.

2. 원하지 않는 커밋 뺄 수 있음.

3. 커밋을 스쿼시(squash)를 할 수 있음.

 

ex) git rebase -i HEAD~4

창이 뜸. 대화식으로 내가 픽하고 순서도 정해서 다른 갈래로 나오게 함.

 

**중간에 내가 놓친 건지.. 쉬운 거 같은 건데

git commit --amend  : 브랜치의 선두를 커밋에 덮어쓸 수 있음.

 

git의 milestone 역할하는 태그

ex) git tag v1 c1

c1 커밋에 v1이라는 태그를 담.

 

Git describe
태그에 비해 상대적으로 어디에 있는지 묘사해주는 명령어.

git describe <ref>  : <ref>엔 commit을 의미하는 그 어떤 것이던 쓸 수 있음.

출력은:

<tag>_<numCommits>_g<hash>

예시) v1_2_gC2  // v2_1_gC4
 tag: 가장 가까운 부모 태그

numCommits:몇 커밋 떨어져 있는지

hash : 커밋의 해시

 

부모 선택하기

~와 ^를 사용하여 선택

^ : 바로 위의 부모 선택

^2 : 두 번째 부모 선택

~는 그냥 올라가는 거고 ^는 방향 선택해주는 것 (갈림길에서)

 

git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2

==

git checkout HEAD~^2~2

같음.

 

신기한 게 

조합이 가능한 것 같은데

git branch bugWork HEAD~^2~라고 하면

버그 워크 브랜치를 HEAD~^2~의 위치에 생성해줌.

 

-------  끝 --------

반응형