2016-05-02 8 views
0

Ich versuche, mit einer Folge von git Befehlen zu entwickeln, die zu einem bekannten Zweig innerhalb einer bereits bestehenden git Repo ändern werden. 3 Dinge, die ich kenne, sind:Wie bekomme ich einen Zweig für ein Git Repo?

  • Ich bin schon in einem Ordner mit .git Ordner
  • Der Zweig I zur Kasse wollen existiert auf origin
  • Ich möchte jede temporäre rückgängig zu machen (Stufen- oder unstaged) Änderungen in diesem Ordner.

Das ist, was ich tue:

git clean -xfd 
git reset HEAD --hard 
git add --all; git stash; git stash drop 
git fetch origin 
git checkout -B $BRANCH 
git pull origin $BRANCH 

Ist dies der Minimalsatz von git Befehle dies zu erreichen? Gibt es Situationen, in denen diese Befehlssequenz fehlschlägt?

Antwort

0

können Sie machen, ist simplier:

git fetch --all --prune 
git pull origin <branch> 

Wenn Sie git reset --hard es tun, ist keine Notwendigkeit, zu einem git stash seit Ihrem Arbeitsverzeichnis wird

git reset HEAD --hard 

gereinigt werden get reset --hard
Setzt den Index und Arbeits Baum.
Alle Änderungen an nachverfolgten Dateien im Arbeitsbaum seit werden verworfen.


ich eine temporäre rückgängig machen wollen (Stufen- oder unstaged) Änderungen in diesem Ordner aus.

Keine Notwendigkeit, da alle nicht verpflichtet Sachen tun wird nicht zu Ihrem Zweig hinzugefügt werden, wenn Sie es

noch ausdrücklich hinzufügen, wenn Sie das aktuelle Arbeitsverzeichnis

# small x 
git clean -xfd 

# capital x 
git clean -Xfd 
reinigen möchten

-x

Verwenden Sie nicht die Standard-Ignorierregeln, die aus .gitignore (pro Verzeichnis) und $ GIT_DIR/info/exclude gelesen werden, sondern verwenden Sie weiterhin die Ignorierregeln, die mit den Optionen -e angegeben werden. Dies ermöglicht das Entfernen aller nicht verfolgten Dateien, einschließlich der Build-Produkte. Dies kann verwendet werden (möglicherweise in Verbindung mit git reset), um ein fehlerfreies Arbeitsverzeichnis zum Testen eines sauberen Builds zu erstellen.

-X
nur Dateien von Git ignoriert entfernen.
Dies kann nützlich sein, um alles von Grund auf neu zu erstellen, aber manuell erstellte Dateien zu behalten.

1

Also ist die Idee, dass Ihre aktuelle Kasse in einem völlig ausgegrabenen, möglicherweise bösartigen Zustand sein könnte, und Sie wollen es vollständig aufgeben?

git fetch 
git checkout -f -B branch origin/branch 
git clean -dfx 

ist was Sie wollen, wenn Sie keine Submodule haben. Wenn Sie das tun, ist die nukleare Option

git read-tree --empty 
git clean -dffx   # <-- two f's, forces submodule removal 
git fetch 
git checkout -B branch origin/branch 
git submodule update --init  

(edit: Einschalten von exec rm finden lesen Baum/clean)


Sie git pull für diese nicht verwenden, das eine tut holen und fügt dann die gezogene Historie in Ihre aktuelle Kasse ein. Doing git checkout -B branch zuerst etikettiert nur Ihre aktuelle Kasse branch, so dass das Ergebnis davon und ein Pull ist sehr weit von der Umstellung auf den Ursprung Zweig.

Verwandte Themen