2010-10-18 10 views
19

Gibt es eine Möglichkeit, Code von einem bestimmten Tag in einem Repo zu holen/holen.GIT pull/fetch von spezifischem Tag

Bin mir bewusst, dass nach dem Klonen kann ich Checkout auf das Tag, aber ist es möglich, ein Tag während eines Zuges angeben?

In ClearCase kann ich eine bestimmte Basislinie von Code rebase oder liefern, gibt es eine Möglichkeit, wie ich git Tags ähnlich wie Pull/Push-Code bis zu einem bestimmten Tag verwenden kann?

Antwort

11

Mit ClearCase wird es ein wenig anders sein, da Sie nur eine Baseline erstellen können, die im übergeordneten Stream erstellt wurde (obwohl Sie eine Baseline von einem beliebigen Stream an Ihren Stream senden können).
Es gibt also einige Einschränkungen für die Art der Zusammenführung mit ClearCase.

Mit Git können Sie jedes Commit mit dem HEAD Ihres aktuellen Zweigs zusammenführen.
Wenn dieses Commit von einem Remote-Repo stammt, wird es zuerst in die Remote-Zweigstellen Ihres lokalen Repos importiert ('fetch' Teil der git pull) und dann zusammengeführt.

git pull [options] [<repository> [<refspec>…]] 

Der "refspec" Teil des Git-Pull-Befehl bedeutet, dass Sie etwas ziehen kann.

<refspec> kann einen beliebigen Fern ref (zum Beispiel der Name eines Tags) Namen oder auch eine Sammlung von refs mit Fernverfolgungszweigen entsprechen (zB refs/heads/:refs/remotes/origin/), aber normalerweise ist es der Name einer Verzweigung ist in das entfernte Repository.

Siehe auch How to pull remote branch with specified commit id?

5

Pull holen ist + verschmelzen.

darüber reden, wie ein bestimmten Remote-ref (entweder einen Tag oder Zweig) zu holen, wahrscheinlich ein Beispiel besser, diese zu klären:

git fetch origin :refs/remotes/origin/master 

Oder eine kürzere Form:

git fetch origin :remotes/origin/master 

Hinweis Dies funktioniert auch dann, wenn remotes/origin/master lokal entfernt wurde.

Ein weiteres Beispiel für eine lokale Niederlassung direkt von einem Remote-Tag-Erstellung

git fetch <repo_url> +refs/tags/<TAG>:<branch>