2012-09-30 21 views
39

Ich habe ein Repository, das von GitHub gespalten ist, an dem einige Änderungen vorgenommen wurden. Bei einem bestimmten Commit wurden jedoch einige Dateien geändert, für die ich eine Pull-Anforderung senden möchte, wobei die anderen geänderten Dateien aus der Anforderung entfernt werden.Pull-Request nur für bestimmte Dateien/Commits

Do Pull-Anfragen zusammenführen alle commits, oder muss ich etwas Besonderes tun, um diese Festschreibung zu isolieren?

+1

Dies kann verwandt sein: [Wie git-cherry-nur Änderungen an bestimmten Dateien auswählen?] (Http://stackoverflow.com/q/5717026) – jww

+2

@jww Jahre später und 'git cherry-pick' ist geworden absolut unbezahlbar. Hätte viel früher als ich aufgeschnappt. – Qix

Antwort

28

Wenn eine Pull-Anforderung für ganze Commits erfolgt, müssen Sie dieses Commit in zwei separate Commits aufteilen, von denen eines die Änderung enthält, das in die Pull-Anforderung eingefügt wird, und das andere die anderen Änderungen enthält. Um dies zu tun, benötigen Sie git rebase -i, siehe zum Beispiel How can I split up a Git commit buried in history? für eine gute Erklärung, wie es geht.

Sobald Sie das Commit aufgeteilt haben, verschieben Sie die gewünschten Elemente in einen Zweig, siehe z. B. How to move certain commits to another branch in git?, aber es hängt davon ab, ob die Commits, die Ihre Pull-Anforderung ausführen, sequenziell sind.

Dann können Sie schließlich zu Github schieben und die Pull-Anforderung von Ihrem Zweig zu erstellen.

+3

Für die Aufzeichnung ist 'git cherry-pick' ein unschätzbares Werkzeug. – Qix

+3

Ich sehe das ist die akzeptierte Antwort; Aber wo genau sind die Schritte durchzuführen, damit man Änderungen an einer Datei in einer Pull-Anforderung vornehmen kann, die mehrere Dateien ändert? – jww

+0

Was passiert, wenn Sie als Person die Anfrage zusammenführen und die Anfrage nicht stellen? Dieses Werkzeug ist so lahm ... – jww

11

Pull-Anfragen verschmelzen Zweige. Wenn Sie also einige Dinge für eine Pull-Anfrage isolieren möchten, sollten Sie diese Änderungen in einem separaten Zweig ablegen.

Vorteil ist, dass Sie die Pull-Anfrage ändern können, indem Sie neue Änderungen auf diesen Zweig schieben (sogar push -f, wenn Sie bereits gedrückte Commits ändern müssen).

Verwandte Themen