Git의 리베이스로 베이스가 변경될 때 커밋 번호가 바뀌는 건 확인
6179 단어 SourceTreeGitHubGit
개요
Git을 사용하고 있고, 이해하기 어려운 "리베이스"에 대해.
develop 브랜치와 어느 시점의 develop에서 파생한 feature 브랜치(feature/dev_#50으로 했습니다)가 있다고 합니다.
develop이 커밋되어 앞으로 진행되어 버렸을 때에, 새로운 시점의 develop로부터의 파생으로서 feature/dev_#50을 리베이스 하는 장면이 있습니다.
이런 것입니다.
커밋 이력은 이전 커밋 번호를 유지한다는 Git의 성질에서 리베이스한 후의 커밋들(주로
5d6a09d
라는 것을 살펴 보겠습니다.이전 준비
git init
echo "hello" >> Calc.java
echo "hello" >> Calc2.java
git add Calc.java && git add Calc2.java && git commit -m 'initial'
git checkout -b develop && git checkout -b feature/dev_#50
지금 시점의 상태를 확인합니다.
$ git log --oneline --graph
* 39eca7c (HEAD -> feature/dev_#50, master, develop) initial
$
develop(
ef3cd3b
) 에서 feature/dev_#50 이 분기되었습니다. SourceTree에서 보면 이렇습니다.계속해서 feature/dev_#50에 2회 커밋해 봅니다.
git checkout feature/dev_#50
echo "hello from feature/dev_#50" >> Calc2.java
git commit -a -m '1. modified in dev_#50'
echo "hello from feature/dev_#50" >> Calc2.java
git commit -a -m '2. modified in dev_#50'
지금 시점의 상태를 확인합니다.
$ git log --oneline --graph
* ef3cd3b (HEAD -> feature/dev_#50) 2. modified in dev_#50
* 5d6a09d 1. modified in dev_#50
* 39eca7c (master, develop) initial
$
develop(
39eca7c
)에서 파생된 feature/dev_#50은 현재 39eca7c
를 가리키고 있습니다.계속해서 develop에 하나 커밋합니다.
git checkout develop
echo "hello from develop" >> Calc.java
git commit -a -m 'modified in develop'
지금 시점의 상태를 확인합니다.
$ git log --oneline --graph
* f618196 (HEAD -> develop) modified in develop
* 39eca7c (master) initial
$
ef3cd3b
를 가리키는 develop은 이제 39eca7c
를 가리키고 있습니다. feature/dev_#50과의 관계를 보기 위해 SourceTree에서 살펴보면,,,f618196
f618196
를 가리키는 것을 그림에서도 알 수 있습니다.
리베이스 해 보자.
음, 리베이스에 관한 것입니다.
리베이스는 이름에서 알 수 있듯이 처음
ef3cd3b
를 가리키는 develop에서 파생 된 feature/dev_# 50을 현재 39eca7c
를 가리키는 develop에서 파생되도록 전환합니다. 그림을 보면 (첫 번째 그림이지만)이런 일입니다. 그렇다면 커밋 로그는
네 번째:
f618196
(feature/dev_#50의 커밋 두 번째)세 번째:
ef3cd3b
(feature/dev_#50의 커밋 첫 번째)두 번째:
5d6a09d
(지금 develop이 가리키는 커밋)첫 번째 :
f618196
가 되는 이미지입니다만, 3,4번째의
39eca7c
시도하면 ...
git checkout feature/dev_#50
git rebase develop
자, 지금 시점의 상태를 확인합니다.
$ git log --oneline --graph
* d227747 (HEAD -> feature/dev_#50) 2. modified in dev_#50
* 503a3d3 1. modified in dev_#50
* f618196 (develop) modified in develop
* 39eca7c (master) initial
$
예상대로 되었습니다.
리베이스는 파생원을 바꾸는 것이므로, 파생처의 커밋들은 늘어서, 신규 커밋으로서 애매하게 되는 것을 알았습니다. .
미안해.
관련 링크
Reference
이 문제에 관하여(Git의 리베이스로 베이스가 변경될 때 커밋 번호가 바뀌는 건 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masatomix/items/d2dfcd0d0bdb06bcc346텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)