SourceTree에서 병합 및 리베이스 수행
7898 단어 SourceTreeGitHubGit
그래서 병합과 리베이스에 대해 명령에 대응하는 SourceTree의 오퍼를 정리해 둡니다.
develop "에" feature/dev_#60 "을" 병합한다
피처 브랜치로 작업하고, 작업이 끝났으므로 develop에 병합하려고 시간의 연산. 특히 develop에서
# git merge --no-ff feature/dev_#60
이 연산입니다
이 상태를,
이 상태로 만드는 것이 목표입니다.
아, 덧붙여서, develop에의 병합을 풀 리퀘스트로 실시하는 개발 스타일의 경우는, 물론 커멘드나 SourceTree가 아니고, GitHub상에서 풀릭을 발행해 주세요. .
우선 이 커밋된 환경을 정비
이 테스트를 수행하기 위한 환경을 만듭니다.
Git 리포지토리 초기화
mkdir sample && cd $_
git init
Calc.java/Calc2.java를 만들고 master 브랜치로 커밋합니다. 그 후 필요한 브랜치를 작성합니다.
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 checkout -b feature/dev_#60
feature/dev_#60 및 feature/dev_#50에서 각각 수정하여 커밋
git checkout feature/dev_#60
echo "hello from feature/dev_#60" >> Calc.java
git commit -a -m '消費税対応1.05倍 #60 2016/12/26'
git checkout feature/dev_#50
echo "hello from feature/dev_#50" >> Calc2.java
git commit -a -m '消費税対応1.08倍 #50 2016/12/26'
git checkout develop
SourceTree를 통해 보면,
처음 캡처와 동일합니다. . .
여러 번 다시 시도하면,
rm -fr .git
rm *.java
하지 않았던 것으로 해,
git init
로부터 다시 하면 OK입니다.그럼 해보자.
명령으로
$ git branch
* develop
feature/dev_#50
feature/dev_#60
master
$ git merge --no-ff feature/dev_#60
Already up to date!
Merge made by the 'recursive' strategy.
$ git branch
* develop
feature/dev_#50
feature/dev_#60
master
$
$ git log --oneline --graph
* 2be95c9 (HEAD -> develop) Merge branch 'feature/dev_#60' into develop
|\
| * 72bafd1 (feature/dev_#60) 消費税対応1.05倍 #60 2016/12/26
|/
* 0ad8ea7 (master) initial
$
feature/dev_#60 브랜치를 develop 브랜치에 병합할 수 있습니다.
SourceTree에서 보면 이런 느낌.
SourceTree에서
그런데 본제의 SourceTree에서의 오퍼입니다.
develop을 두 번 클릭하여 체크 아웃하고 (굵게 표시) dev_#60을 마우스 오른쪽 단추로 클릭하고 dev_#60을 develop으로 병합을 선택합니다.
Fast Forward가 되어 버렸습니다만, 우선 병합은 생긴 것 같습니다.
덧붙여서 Fast Forward가 되지 않게 하려면 , 환경 설정에서 「fast-forward로 병합에 문제가 없어도 커밋을 작성」에 체크를 넣어 두면 좋은 것 같습니다.
feature/dev_#50 "에" develop "을" 리베이스
다음은 리베이스입니다. dev_#60이 먼저 병합되어 develop이 진행되어 버렸기 때문에, 그 「(dev_#60 수정분의) develop의 변경」을 자신의 브랜치(dev_#50)에 리베이스 하는 장면을 상정합니다.
아래와 같이 dev_#50보다 develop이 진행되고 있는 상황이군요.
명령으로
$ git branch
develop
* feature/dev_#50
feature/dev_#60
master
$ git rebase develop
First, rewinding head to replay your work on top of it...
$ git branch
develop
* feature/dev_#50
feature/dev_#60
master
$ git log --oneline --graph
* 325aedc (HEAD -> feature/dev_#50, develop) Merge branch 'feature/dev_#60' into develop
|\
| * 72bafd1 (feature/dev_#60) 消費税対応1.05倍 #60 2016/12/26
|/
* 0ad8ea7 (master) initial
$
아래와 같이, develop의 변경분이 dev_#50에 받아들여, 리베이스 할 수 있었습니다.
SourceTree에서
SourceTree에서는 다음과 같습니다.
dev_#50을 두 번 클릭하여 checkout하고(굵은 글씨), develop을 마우스 오른쪽 버튼으로 클릭하고 "현재 변경 사항을 develop으로 다시 베이스"를 선택합니다.
명령과 동일한 결과를 얻었습니다.
미안해.
관련 링크
Reference
이 문제에 관하여(SourceTree에서 병합 및 리베이스 수행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masatomix/items/07a37ee8d141ceb4fa6f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)