2016-06-08 4 views
0

Ich habe eine Pull-Anfrage here, und wenn ich "git Rebase", fügte es Commits, die ich nicht in die Pull-Anfrage. Die entfernte branch Ich fusioniere ist vor all diesen Verpflichtungen, also verstehe ich nicht, warum sie in PR kommen. Irgendeine Idee, wie man das rückgängig machen oder wie man das in Zukunft verhindern kann?Doing Rebase fügt Replays Master-Zweig Commits in meine Pull-Anfrage

Hier ist, was ich tat

# Checkout local branch and apply changes 
mkdir /home/yaroslavvb/tfimmediate_fresh 
cd /home/yaroslavvb/tfimmediate_fresh 
git clone https://github.com/yaroslavvb/tensorflow.git 
cd tensorflow 
git checkout tfimmediate_fresh 
# do my modifications 
git commit -m "Changes" 

# Rebase against main branch 
git remote add tfmain https://github.com/tensorflow/tensorflow.git 
git fetch tfmain 
git rebase tfmain/master 

# fix conflicts 
git add tensorflow/contrib/__init__.py 
git rebase --continue 
git pull 
# fix conflicts again 
git add tensorflow/contrib/__init__.py 
git commit -m "Fix merge conflicts" 
git push 
git push -f 

Danach, meine Pull-Request enthält Änderungen im Master-Zweig, die ich nicht

Antwort

2

Während Rebasieren Autor hat, können Sie eine git pull nach dem git rebase --continue tat.

Dadurch werden neue Commits aus dem Ursprung/Master-Zweig mit Ihrer lokalen Verzweigung zusammengeführt und damit auch die zusammengeführten Commits in Ihrer Pull-Anforderung.

Nach dem Rebasieren sollten Sie einfach die Änderungen an den Zweig, den Sie für die Pull-Anforderung verwenden, übertragen.

0

Willkommen in meinem Leben jedes Mal, wenn ich umbinde. Hoffentlich können wir das in Zukunft vermeiden, indem wir Olivier zuhören und nicht ziehen.

Aber, okay, du hast das schon gemacht und jetzt bist du in einem Chaos. Was soll? Ich habe einfach einen neuen Zweig erstellt, meine Änderungen kopiert und eine neue PR gemacht, aber wir müssen das Leben nicht so leben. Sie können die Commits löschen.

git log wird Ihnen eine Liste der Commits geben. Sie können dann die Schas greifen und entfernen Sie einzelne verpflichtet dies mit:

git rebase -p --onto 4196caae8735bb983a2a0bace6f72b0820a755c1^ 4196caae8735bb983a2a0bace6f72b0820a755c1 (Anmerkung:. Wenn Sie mit zsh, werden Sie die ˆ backwack müssen)

Sobald Sie den Commit getötet haben (s), kann man nicht einfach git push, weil der Remote-Zweig noch diese zusätzlichen Commits hat. Tun Sie stattdessen die potenziell gefährliche git push origin -f, um die Remote-Zweigstelle zu zwingen, zu Ihrer zu passen (und nicht umgekehrt).

Haftungsausschluss: Ich weiß nicht, was ich mache. Aber nach ein paar Versuchen, kam ich zu dem Zustand, den ich wollte, indem ich diese Dinge tat.

Requisiten zu Seth Robertson git choose-your-own-adventure für den "cherry-pitting" Befehl.