목표 newImage와 caption 브랜치에 각각의 변경내역이 있고 서로 약간 관련이 있어서, 저장소에 차례로 쌓여있는 상황이다. 우리의 작업이력(history)에서 한참 전에 작업한 커밋에 있는 내용 중 newImage의 크기를 살짝 바꿔달라는 요청이 들어왔다. 아래와 같이 풀어보자 git rebase -i 명령으로 우리가 바꿀 커밋을 가장 최근 순서로 바꾸어 놓는다 git commit --amend 명령으로 커밋 내용을 정정한다 다시 git rebase -i 명령으로 이 전의 커밋 순서대로 되돌려 놓는다 마지막으로, main을 지금 트리가 변경된 부분으로 이동한다. (체리픽은 나중에 사용해 보자) $git rebase -i HEAD~2 # 커밋 내용을 변경해야하기 때문에 변경할 커밋을 가장 마지막으..
여러 개의 커밋 중 특정 커밋만 선택해서 병합하기 git rebase -i git cherry-pick 1번 rebase -i 옵션은 앞에서 알아봤으니 2번 cherry-pick에 대해서만 알아보자 체리픽(cherry-pick) 개별 커밋을 골라서 HEAD에 커밋을 생성할 수 있다 목표 main브랜치가 bugFix 브랜치의 커밋을 일부 가져오게 하자 $git checkout main $git cherry-pick C4 ref https://learngitbranching.js.org/?locale=ko
인터랙티브 리베이스 reabse를 할 때 대화형(-i 옵션)으로 실행하는 것을 말한다 rebase를 진행할 때 다양한 추가 기능을 제공한다 인터랙티브 리베이스로 실행하면 vim 같은 텍스트 편집기 파일이 열리는데 그곳에서 다양한 기능을 적용할 수 있다 이 글에서는 3가지 기능에 대해서만 알아보겠다 적용할 커밋들의 순서를 변경할 수 있다 원하지 않는 커밋은 제외시킬 수 있다 커밋을 스쿼시(squash)할 수 있다 0. 현재 브랜치 상태 현재 상태에서 공통적으로 아래와 같은 명령어를 사용해 본 후 각 기능에 대해서 알아보자 $git rebase -i HEAD~3 1. 적용할 커밋들의 순서를 변경할 수 있다 위와 같은 텍스트 편집기가 열리는데 여기에서 커밋들의 순서를 변경한 후 :wq로 편집기를 종료하면 정한..
Git 체리-픽 (Cherry-pick) 특정 커밋의 복사본을 만들어서 적용할 수 있게 해주는 명령어 사용 방법 git cherry-pick 복사본을 만들고 싶은 커밋들을 적어주면 된다 사용 예시 위의 상태일 때 현재 작업 브랜치는 main이고 C2, C4의 커밋을 적용하고 싶다면 아래의 명령어를 사용하면 된다 $git cherry-pick C2 C4 목표 몇 개의 작업을 세 개의 브랜치들에서 main 브랜치로 복사해오자. $git cherry-pick C3 C4 C7 ref https://learngitbranching.js.org/?locale=ko
Git에는 작업한 것을 되돌리는 방법이 있다. (낮은 수준)Staging Area에 있는 작업을 되돌리기 (아마도..?) (높은 수준)실제 변경이 복구되는 방법 여기서는 실제 변경을 복구하는 방법에 대해서 알아보자. git에서 변경한 내용을 되돌리는 방법은 크게 2가지가 있다. git reset git revert git reset git reset은 브랜치가 예전의 커밋을 가리키도록 이동시키는 방식으로 변경 내용을 되돌린다. 즉, git reset은 마치 애초에 커밋하지 않은 것처럼 예전 커밋으로 브랜치를 옮기는 것이다. 사용 방법 git reset 사용 예제 local은 로컬에만 존재하는 브랜치이고 pushed는 리모트 브랜치이다. $git reset HEAD^ 위의 명령어를 사용하면 현재위치(브랜치..
틸드(~) 연산자 만약 캐럿(^) 연산자를 사용해서 main 브랜치의 5단계 위의 부모를 참조하고 싶다면 main^^^^^ 이렇게 해야 한다. 만약 5개라면 괜찮지만 100개라면? 500개라면? 하나씩 ^을 붙여주기엔 너무 힘들다. 이럴 경우에 틸드(~) 연산자를 사용할 수 있는데, 틸드(~) 연산자는 올라가고 싶은 부모의 개수를 뒤에 붙여주면 된다. 또한 git은 branch 명령어에 -f 옵션을 이용해서 HEAD 뿐만이 아니라 브랜치도 특정 커밋으로 옮길 수 있다. 이때 상대 참조를 사용할 수 있으므로 틸드(~) 연산자를 사용해 보자. 브랜치의 위치를 특정 커밋으로 옮기기 $git branch -f main HEAD~3 위의 명령어를 사용하면 main 브랜치의 위치를 HEAD의 3개 부모 전인 커밋 ..
커밋을 체크아웃하려고 하면 커밋의 값을 알아야 하는데 커밋의 값은 너무 길고 외우기 힘들다. 그럴땐 해시가 커밋의 고유한 값임을 보여주는 만큼만 명시해주면 된다. 예를 들어, 해시값이 fed2da64c0efc5293610bdd892f82a58e8cbc5d8이고 fed2~에 해당하는 다른 커밋 해시값이 없다면 fed2만 입력해도 된다. 하지만 이렇다고 해도 어디까지 고유한지 아는것도 힘들기 때문에 커밋의 해시값을 사용하여 커밋하는 것은 힘들다. 그래서 git에는 상대 참조(Relative Ref)를 사용할 수 있다! 상대 참조는 우리가 기억할 수 있는 지점(브랜치라던가 HEAD라던가)에서부터 계산하는 방식이다. 상대 참조를 사용하는 방법은 2가지가 있다. 한번에 한 커밋 위로 움직이는 ^ 한번에 여러 커밋..
Git에서 여기저기로 옮겨다니기 HEAD 현재 체크아웃된 커밋을 가리킨다. 즉, 현재 작업중인 커밋 시점이다. 브랜치를 체크아웃하면 일반적으로 HEAD는 브랜치의 이름을 가리키고 있지만 git 명령어를 통해 이 HEAD를 변경할 수 있다. 특정 커밋을 체크아웃하면 HEAD가 해당 커밋을 가리키고 있다. (해당 커밋을 특정 브랜치가 카리고 있어도 HEAD와 그 브랜치는 서로 다르다) 1. 처음상태 2-1. 브랜치를 체크아웃 브랜치를 체크아웃 한 후 commit을 하면 HEAD는 브랜치와 같이 움직인다. $git checkout bugFix; $git commit; 2-2. 커밋을 체크아웃 특정 커밋을 체크아웃 한 후 commit을하면 특정 커밋에 브랜치가 있더라도 HEAD와 브랜치는 분리된 상태이므로 HE..
- Total
- Today
- Yesterday