Yanıtlar:
Neredeyse işe yarayacak.
Varsayılan olmayan bir şubeye iterken, kaynak ref ve hedef ref'yi belirtmeniz gerekir:
git push origin branch1:branch2
Veya
git push <remote> <branch with new changes>:<branch you are pushing to>
<remote>/<branch>
git push origin :branch2
geçerli yerel dalı uzaktan kumandaya iteceğini, branch2
bunun yerine uzaktan kumandayı sileceğini düşünmeye çalıştığını unutmayın branch2
! Doğru yol git push origin HEAD:branch2
.
Kesinlikle, ancak sadece BRANCH2'nin hızlı bir ileri hareketi varsa veya zorlarsanız çalışacaktır. Böyle bir şeyi yapmak için doğru sözdizimi
git push <remote> <source branch>:<dest branch>
Nasıl çalıştığı hakkında daha fazla ayrıntı için git push man sayfasındaki "refspec" açıklamasına bakın . Ayrıca, hem bir zorlama itme hem de sıfırlama işleminin "geçmişi yeniden yazan" işlemler olduğunu ve uzak depolar ve diğerleriyle ilgili olarak ne yaptığınızı kesinlikle bilmediğiniz sürece kalp zayıflığı tarafından denenmemesi gerektiğini unutmayın. aynı projenin çatalları / klonları olan kişiler.
git push --force remote local-branch:remote-branch
.
Çok basit. Hem yerel hem de uzaktan bulunan A Şubenizde değişiklik yaptığınızı, ancak bu değişiklikleri hiçbir yerde bulunmayan B Şubesine aktarmak istediğinizi varsayalım .
Adım-01: Oluşturun ve yeni dal B'ye geçin
git ödeme -b B
Adım-02: Yeni yerel şubeye değişiklik ekleme
git ekleyin. // veya belirli dosya (lar)
Adım-03: Değişiklikleri yapın
git commit -m "commit_message"
Adım-04: Değişiklikleri yeni dal B'ye itin . Aşağıdaki komut uzaktan da yeni bir B dalı oluşturur
git itme başlangıç noktası B
Şimdi, bitbucket'ten B dalının A dalından bir tane daha taahhüt edeceğini doğrulayabilirsiniz . A dalına baktığınızda, B dalına itildikleri için bu değişiklikler olmayacaktır .
Not: Değişikliklerinizi A dalında gerçekleştirdiyseniz ve bundan sonra bu değişiklikleri yeni B dalına kaydırmak istiyorsanız, önce bu değişiklikleri sıfırlamanız gerekir. #HappyLearning
Benim durumumda ben itilmiş değildi ki, yerel bir taahhüt vardı origin\master
, ama benim yerel taahhüt master
şube. Bu yerel taahhüt şimdi başka bir şubeye gönderilmelidir.
Git Uzantıları ile şöyle bir şey yapabilirsiniz:
Bunu GIT komut satırında da yapabilirsiniz . David Christensen'den kopyalanan örnek :
Bence
git cherry-pick
+git reset
çok daha hızlı bir iş akışı bulacaksınız :Aynı senaryoyu kullanarak, "özellik" en üstteki taahhüt yanlış olan dal olmakla birlikte, bunu yapmak çok daha kolay olurdu:
git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^
Biraz işten
git cherry-pick
tasarruf sağlar ve üstesinden gelmek için tasarlanmış senaryodur .Ayrıca, en üst düzey taahhüt değilse bunun da işe yarayacağını da not edeceğim; sadece kiraz toplama argümanı için bir taahhüt gerekir, yoluyla:
git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history
git push origin branch1:branch2
Komutu ile kötü bir sonuç aldım :
Benim durumumda, branch2
silinir ve branch1
bazı yeni değişikliklerle güncellendi.
İsterseniz Bu nedenle, yalnızca değişiklikler üzerinde itmek branch2
gelen branch1
, aşağıdaki prosedürleri deneyin:
branch1
:git add .
branch1
:git commit -m 'comments'
Açık branch1
:git push origin branch1
Açık branch2
:git pull origin branch1
Açık branch1
: bir önceki işleme geri dönün.
git init
#git remote remove origin
git remote add origin <http://...git>
echo "This is for demo" >> README.md
git add README.md
git commit -m "Initail Commit"
git checkout -b branch1
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete branch1
#git branch --unset-upstream
BRANCH1'i taahhüt ettiniz ve değişiklikleri kaybetmeden bu taahhütten kurtulmak mı istiyorsunuz? git reset ihtiyacınız olan şey. Yapmak:
git branch BRANCH2
BRANCH2'nin yeni bir şube olmasını istiyorsanız. İsterseniz bunu sonunda başka bir dalla da birleştirebilirsiniz. BRANCH2 zaten varsa, bu adımı dışarıda bırakın.
Sonra şunları yapın:
git reset --hard HEAD~3
taahhüt ettiğiniz şubedeki taahhüdü sıfırlamak istiyorsanız. Bu, son üç taahhüdün değişikliklerini gerektirir.
Ardından, sıfırlanan işlemleri BRANCH2'ye getirmek için aşağıdakileri yapın
git checkout BRANCH2
Bu kaynak yardımcı oldu: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
branch1
vebranch2
uzaktan olmak gereğini? Yereldenbranch1
uzaktan kumandaya itmek isterseniz ne olurorigin branch2
?