
-문제 전과 달리 인터렉티브 리베이스를 사용하지 않고, cherry-pick을 이용해 C2'커밋 생성, C2''커밋생성 후 C3'커밋 넣고 master브랜치 삽입. -해결 1. master를 작업중인 커밋으로 변경. $ git checkout master master를 이동시켜야 하므로, 먼저 checkout시킨다. 2. C2'를 위해 C2선택. $ git cherry-pick C2 C2'를 위해 C2를 cherry-pick해준다. 3. C2''생성. $ git commit --amend --amend로 C2''를 생성한다. 4. C2''에 C3'커밋을 넣기. $git cherry-pick C3 cherry-pick으로 C3를 C2''안으로 옮김과 동시에 master브랜치도 옮겨지므로 문제가 해결되었다!

-문제 C3' 커밋안에 C2와 C2''커밋을, C2'''커밋안에 C3''커밋을 놓고 C3''커밋에 master와 caption 브랜치를 넣으면 됩니다 (cherry-pick 사용불가!) -해결 1. C1을 기준으로 C3'커밋 생성 $ git rebase -i caption~2 여기서 C2와 C3커밋의 위치를 바꾸어 주어야 합니다. 2. C2''커밋 $ git commit --amend --amend로 커밋 메세지를 변경해 C2''생성 3. C2'''커밋생성 후, C3'' 커밋 넣기 $ git rebase -i caption~2 1번과 명령어 동일! 위치도 1번처럼 바꾸어주면 된다 3. C3''커밋에 master와 caption브랜치 넣기. $ git branch -f master caption 강제로 m..

-Git Interactive Rebase란? rebase 명령어를 사용할때 -i를 붙침으로서 목적지 아래 복사될 커밋들을 보여줍니다! 인터렉티브 리베이스에는 커밋을 빼고, 넣고, 순서를 바꿀 수 있습니다! 인터렉티브 리베이스를 활용하여 푸시면 됩니다. 팝업창에서 그냥 Confirm을 누르지마시고, 사진처럼 C2는 제외, C3 C5 C4순으로 위치를 바꾼 후, Rebase시켜주어야 합니다. (간단히 드레그로 위치변경 됩니다!) 간단히 git rebase -i master~4 로 해결했습니다 ~4는 C1에서 분기를 나눠야하기 때문에 사용.

-Git에서 작업 되돌리기 git reset - 브랜치가 예전 커밋을 가르치도록 고칩니다.(애초에 커밋하지 않은 것 처럼!) git revert - 협업할 경우, reset으로는 다른 동료들에게 반영이 되지 않기 때문에 revert로 반영해주어야 합니다! 문제는 간단하게 말한 것 처럼, pushed는 revert, local은 그냥 reset만 사용하면 됩니다. git reset HEAD^ - 현재 local브랜치가 지목되어 있으므로 HEAD^로 바로 위로 되돌려줍니다. git checkout pushed - 선택된 브랜치를 pushed브랜치로 바꿉니다 git revert pushed - pushed 브랜치를 revert시킵니다

-"~"연산자 바로 전 상대참조에서 쓰였다 싶이 ^ 는 위칸으로 한칸 이동하는 것이고 ~3 같이 "~"연산자를 사용하면 값만큼 위로 이동합니다! 하지만 문제는 간단히 ~연산자 말고 브랜치 강제 옮기기를 알려줍니다. 강제로 옮기는 것은 지정된 수만큼 HEAD뒤에 지목된 브랜치를 이동시킵니다. 목표입니다 "~"연산자를 쓰면 베스트겠지만 간단히 하기 위해 hash값을 사용하였습니다. git checkout C1 - C1으로 HEAD를 이동 git branch -f master C6 - 강제로 C6로 master를 이동 git branch -f bugFix C0 - 강제로 C0로 bugFix를 이동

상대참조란? -앞서 HEAD를 움직이기 위해 C4라는 hash값을 사용했습니다. 그치만 실제로 hash값은 너무도 깁니다, C4의 실제 hash값은 fed2da64c0efc5293610bdd892f82a58e8cbc5d8 였으니 말이죠. (그치만 고유한 값임을 증명할 수 있는 fed2만 입력해도 Git은 똑똑하기 때문에 다 알아듣습니다!!) 쨋든! 상대참조는 git checkout (브랜치명)에 ^ 이나 ~(값)으로 입력할 수 있습니다 git checkout master^ - master 바로 위에 체크아웃 git checkout master~2 -master 2칸위에 체크아웃 문제는 간단합니다! bugFix의 부모(바로 위에 있는 커밋)를 체크아웃하라고 했으니 ^을 이용해 위에 커밋을 체크아웃해주면 됩..

Git rebase란? -rebase란 커밋을 다른 커밋 바로 아래에 있게 해줍니다! 만약 바로 아래있는 커밋을 rebase하면 현재 커밋이 아래 커밋으로 이동합니다! 시작하죠! git branch bugFix - bugFix 브랜치 생성! git checkout bugFix - master에서 bugFix브랜치로 이동 git commit - 제출! git checkout master - master로 이동 git commit -제출! git checkout bugFix - bugFix로 이동 git rebase master - master로 rebase!