Git Etkileşimli Rebase'deki sorunlar nasıl giderilir

0

Soru

Yerel şubemi ana şubeye karşı yeniden kurmaya çalışıyorum. Local_branch'ımdan rebase için aşağıdaki komutu çalıştırdım. Bir süredir komut satırı yardımcı programını (yani Git Bash) kullanmayı denedim ve mevcut sorunu gidermek için aynısını kullanmak istiyorum.

Geçerli / gelen / her iki değişikliği de kabul etmek için Visual Studio Kod aracını kullanabilirim.. Ama Git Bash kullanarak aynı şeyi yapmanın bir yolu var mı? Ayrıca aşağıdaki senaryo için, düzeltmenin tercih edilen yolu ne olurdu?

> git pull --rebase origin master
> git status                                                                                                                                             
interactive rebase in progress; onto 53681c8
Last commands done (2 commands done):
   pick 89bb0987 Updated messenger.xml
   pick 990bn189 Updated messenger.xml
Next commands to do (9 remaining commands):
   pick 6780f98 Updated messenger.xml
   pick 9091m969 Updated updated_numbers.xml
  (use "git rebase --edit-todo" to view and edit)
You are currently rebasing branch 'feature-jd-bulk-messenger' on '53681c8'.
  (fix conflicts and then run "git rebase --continue")
  (use "git rebase --skip" to skip this patch)
  (use "git rebase --abort" to check out the original branch)

Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
        both modified:   jd-test/admin/messenger.xml
git
2021-11-24 05:14:19
1

En iyi cevabı

0

Bu sadece sıradan bir birleştirme çakışmasıdır, yerel şubenizdeki değişiklikler ana hat geçmişindeki değişikliklere dayanır veya çakışır ve sonucun neye benzemesi gerektiğine karar vermeniz gerekir, çünkü Git haklı olarak tahmin etmeye cesaret edemez.

git Bash kullanarak aynı şeyi yapmanın bir yolu var mı?

Evet, neye karar ver jd-test/admin/messenger.xml şöyle görünmeli, bunu eklemeli ve git rebase --continue hangi birleştirme aracını beğendiyseniz, sizin için düzenleme/seçme/aşama sıralamasını otomatikleştirebilmelidir. Bunu aplomb ile işleyen vimdiff kullanıyorum, VS Code'un Git entegrasyonu burada neler olduğunu anlamıyor mu?

Bir örnek için,

git init `mktemp -d`; cd $_
seq 5 >file; git add .; git commit -m-
git branch -t mine
sed 2s,$,a, -i file; git commit -am2
git checkout mine
sed 3s,$,a, -i file; git commit -am3
git rebase

ve bir çatışma alırsınız file doğru sonucun her iki değiştirilmiş satırı da olduğu gibi almak olduğu, ancak Git bunu sizin için yapacak kadar emin olamaz. git status burada tanıdık bir mesaj çıkacak, rebase'in şimdi aslında etkileşimli bir mesaj olduğunu, beni beklediğini, benimle etkileşime girdiğini fark ederek anlamlandırabilirim. Yapardım git mergetool burada.

Eğer sen olacak işi çok bu, isterseniz olanak rerere, yenidenkullanım yenidenkablolu reçözümler: git config rerere.enabled true; git rerere çözümü bu ilk kez eklemeden önce, Git sizin için çalıştıracağından sonra, Git'i çalıştırmak, sonraki yeniden başlatmalarda tekrar yukarı çıkmaları durumunda dizindeki yeni çakışmaları ve çözümleri hatırlar.

2021-11-24 06:46:20

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................