2011-01-09 8 views
0

Gibt es eine Möglichkeit, remote Änderungen an den Index zu ziehen, anstatt direkt ein neues Commit zu erstellen?Git zum Index ziehen

Idealerweise wäre es so, als würde man einen Patch mit den entfernten Inhalten anwenden, aber nicht den lokalen Verlauf ändern.

Dank

Antwort

0

git fetch wird die Änderungen von der Fern holen, aber es mit Ihrem master Zweig nicht fusionieren. Es wird in der Remote-Tracking-Zweig sein. Sie können es dann manuell zusammenführen. A git pull führt diese beiden Vorgänge zusammen aus.

1

Das Problem wäre dann das nächste Mal, dass Sie remote Änderungen vornehmen, ab welchem ​​Punkt in der Remote-Geschichte sollte es das Patch generieren? Dies ist genau das Problem, das durch das Zusammenführen gelöst werden soll. Das Zusammenführungs-Commit zeigt an, welche Remote-Version bisher auf Ihren lokalen Zweig angewendet wurde.

Wenn Sie dies tun, wenn Sie git fetch und git merge --no-commit tun, wird die Zusammenführung in Ihrem Arbeitsbereich (und Index) durchgeführt, aber nicht festgeschrieben, und die Metadaten bleiben in einem Zustand, so dass, wenn Sie commit, wird es sein als Merge-Commit markiert. Ist das was du brauchst?

+0

Ich vermute, das ist, was das OP eigentlich will (Zusammenführen zu Index * und * Arbeit Baum, aber nicht commit). Beachten Sie, dass Sie einfach 'pull --no-commit' machen können; Es wird durch "merge" durchgeführt. – Cascabel

3

Ich bin nicht ganz sicher, was Ihr beabsichtigter Arbeitsablauf ist, aber Sie können entfernte Änderungen abrufen, ohne den aktuellen Zweig oder Index zu beeinflussen.

git fetch 

Sie können dann die abgerufenen Änderungen in den aktuellen Index fusionieren, ohne eine Zusammenführung verpflichten einrichten, aber das ist eine ziemlich dunkle und ungewöhnliche Sache tun möchten.

git read-tree -m HEAD origin/remote-branch 

Die beiden Baum-Version ist am besten, wenn der Remote-Zweig ein Vorspulen des aktuellen HEAD ist, wenn nicht, dann die Drei-Wege-Merge-Option besser sein können.

git read-tree -m $(git merge-base HEAD origin/remote-branch) HEAD origin/remote-branch 

Manpage für git read-tree für die Details zu den Unterschieden lesen.

0

Ich komme immer wieder auf diese Seite und vermisse die richtige Antwort, weil es in einem Kommentar steht.

git-pull --no-commit [email protected]:username/project.git 
0

einen Blick auf this answer nehmen. Möglicherweise möchten Sie Ihre Konfiguration anpassen, um die Zusammenführungs-Commits zu vermeiden.