Entfernen Sie eine geänderte Datei aus der Pull-Anforderung

101

Ich habe momentan 3 geänderte Dateien (keine neuen Dateien) in einer Pull-Anfrage.

Ich möchte eine dieser Dateien aus der Pull-Anfrage entfernen, damit die Pull-Anfrage nur Änderungen an zwei Dateien enthält und die dritte in ihrem ursprünglichen, unberührten Zustand belässt.

Ich habe ein paar Dinge ausprobiert (Auschecken der Originalversion der Datei usw.), aber es wird immer noch als geänderte Datei in der PR angezeigt.

Gibt es eine Lösung dafür?

Freude
quelle
Wenn sich die Änderungen an der Datei in ihren eigenen Commits befinden, können Sie eine interaktive Rebase durchführen und die Commits entfernen, die sich auf die gewünschte Datei auswirken, und dann einen Force-Push an Ihren Zweig ausführen. Github sollte das automatisch erkennen.
Dentych

Antworten:

238

Wechseln Sie zu dem Zweig, aus dem Sie die Pull-Anforderung erstellt haben:

$ git checkout pull-request-branch

Überschreiben Sie die geänderten Dateien mit der Datei in einem anderen Zweig. Betrachten wir den Master :

git checkout origin/master -- src/main/java/HelloWorld.java

Festschreiben und auf die Fernbedienung übertragen:

git commit -m "Removed a modified file from pull request"
git push origin pull-request-branch
Arpit Aggarwal
quelle
4
Funktioniert nicht und zeigt mir den Fehler an: pathspec '{file / path.js}' stimmte nicht mit Dateien überein, die git bekannt sind.
Raftaar1191
8
Es funktioniert und bewährte Lösung überprüfen Sie einfach Ihren Weg richtig
Pavan T
2
Dies funktioniert für die Dateien um die Datei, für die ich die Aktion tatsächlich ausführen möchte ... also denke ich nicht, dass etwas mit dem Pfad nicht stimmt
Tim Boland
Mit dieser Methode überschreiben Sie die Datei, sodass Sie die Arbeit an dieser Datei verlieren, oder? Sie können es nicht für eine andere Niederlassung und / oder eine andere PR behalten?
Ernest Jones
1
@ArpitAggarwal das funktioniert gut. Ich danke dir sehr.
Chaklader Asfak Arefe
10

Sie möchten das Commit ändern und dann einen Force-Push ausführen, der den Zweig mit dem PR aktualisiert.

Ich empfehle Ihnen Folgendes:

  1. Schließen Sie die PR, damit jeder, der sie überprüft, sie erst abruft, wenn Sie Ihre Änderungen vorgenommen haben.
  2. Führen Sie vor Ihrer unerwünschten Änderung einen Soft-Reset für das Commit durch (wenn dies das letzte Commit ist, das Sie verwenden können, git reset --soft HEAD^oder wenn es sich um ein anderes Commit handelt, möchten Sie 'HEAD ^' durch die Commit-ID ersetzen).
  3. Verwerfen (oder rückgängig machen) Sie alle Änderungen an der Datei, die Sie nicht aktualisieren wollten
  4. Machen Sie ein neues Commit git commit -a -c ORIG_HEAD
  5. Force Push zu Ihrem Zweig
  6. Pull-Anforderung erneut öffnen

Sobald Ihre Filiale aktualisiert wurde, enthält die Pull-Anforderung Ihre Änderungen.

Hier ist ein Link zur Gits-Dokumentation, wo sie ein ziemlich gutes Beispiel unter Rückgängig machen und Wiederherstellen haben .

Keif Kraken
quelle
-4

Eine Pull-Anfrage ist genau das: eine Anfrage, einen Zweig in einen anderen zusammenzuführen.

Ihre Pull-Anfrage "enthält" nichts, sondern nur eine Markierung mit der Aufschrift "Bitte führen Sie diesen Zweig in diesen ein".

Die Änderungen, die der PR in der Web-Benutzeroberfläche anzeigt, sind nur die Änderungen zwischen dem Zielzweig und Ihrem Feature-Zweig. Um Ihre Pull-Anforderung zu ändern, müssen Sie Ihren Feature-Zweig ändern, wahrscheinlich mit einem Force-Push auf den Feature-Zweig.

In Ihrem Fall möchten Sie wahrscheinlich Ihr Commit ändern. Ich bin mir nicht sicher über deine genaue Situation, aber eine Kombination aus interaktiver Basis und add -psollte dich aussortieren.

Chris Kitching
quelle