2016-09-14 20 views
5

Demek, bunu yapmak istiyorum: Ben yapabilirim iki "kabuk" komutları birleştirmek istiyorsanızGit komutlarını atomik olarak (kabuk ile değil) birleştirmenin bir yolu var mı?

git checkout featureBranch 
git rebase master 

:

git checkout featureBranch && git rebase master 

Ancak, bu atom değildir. Herhangi bir nedenle git checkout komutu başarısız olursa, çalışma dizini önceki gibi veya son beklenen durumda aynı durumda olmayacaktır. Ayrıca, IDE'm gibi diğer işlemler, iki komut arasındaki ara durumu görebilir.

git, iki eylemi atomik olarak birleştirmenin bir yolunu sunuyor mu?

Tam dosya sistemi düzeyinde atomikliğe ihtiyacım yok. Yani, birleşik eylemin çalışma dizininde 10 dosya değiştirilmesini gerektirmesi durumunda, diğer işlemlerin bu 10 değişikliği ayrı ayrı gözlemlemesi sorun olur.

Düzenleme: Yukarıdaki iki komut sadece örnek içindir. Ayrıca, zincirlenmesi gereken 3 veya daha fazla komut olabilir.

cevap

4

man git-rebase göre bu komutlar birleştirilebilir:

If <branch> is specified, git rebase will perform an automatic git checkout 
<branch> before doing anything else. Otherwise it remains on the current branch. 

Yani sadece çalıştırabilir:
git rebase master remoteBranch 

Ancak genel bir çözüm yoktur.