나는 다음과 같은 작업을 수행하는 bash는 스크립트를 만들었습니다git merge-base로 빨리 감기 병합을 수행 할 수 있는지 확인하는 올바른 방법은 무엇입니까?
- 상류에서 변화를 가져 오기를;
- 빨리 감기 병합이 가능한지 확인하십시오.
- # 2가 참이면
origin/master
을master
으로 병합하십시오. # 2는 다음과 같이
코드가 false 인 경우 origin/master
위에
master
: #!/bin/sh
local_branch=$(git rev-parse --symbolic-full-name --abbrev-ref HEAD)
remote_branch=$(git rev-parse --abbrev-ref --symbolic-full-name @{u})
remote=$(git config branch.$local_branch.remote)
echo "Fetching from $remote..."
git fetch $remote
if git merge-base --is-ancestor $local_branch $remote_branch; then
echo 'Fast-forward is possible. Merging...'
git merge --ff-only $remote_branch
else
echo 'Fast-forward is not possible. Rebasing...'
git rebase --preserve-merges $remote_branch
fi
내가 그것을 몇 번 테스트가 작동하는 것 같다,하지만 난 아니에요 git merge-base
부분에 대해 매우 자신감을 가지고 있습니다. 나는 빨리 감기 병합의 이론을 안다. 그리고 merge-base
에 대한 논증으로 master
과 origin/master
을 사용하는 것이 옳은 것처럼 보이지만 나는 힘내 전문가는 아니다.
그래서 묻습니다 : 가져 오기가 수행 된 직후에 빨리 감기 병합이 가능한지 확인하는 올바른 방법입니까?
왜 항상 rebase하지 않습니까? 가능한 경우 Rebase가 앞으로 감기가됩니다. –
@ LucasTrzesniewski 제 테스트에서 빨리 감기 병합을 수행하는 것이 리베이스보다 훨씬 빠르다는 것을 보여주었습니다. 따라서 빨리 감기 병합이 불가능할 때만 리베이스해야합니다. –
왜 항상 git merge --ff-only와 rebase가 실패 할 때만합니까? – nert