2011-04-20 10:34:06 +0000 2011-04-20 10:34:06 +0000
235
235

Jak zresetować 'master' na 'origin/master'?

Czy mogę wykonać następujące czynności w prostszy sposób?

git checkout origin/master
git branch -D master
git branch master
git checkout master

Odpowiedzi (4)

343
343
343
2011-04-20 11:22:10 +0000

Jak wspomina KindDragon ’s odpowiedź , możesz odtworzyć master bezpośrednio w origin/master za pomocą:

git checkout -B master origin/master

The git checkout man page mentions:

If -B is given, <new_branch> is created if it doesn’t exist; otherwise, it is reset. Jest to ekwiwalent transakcyjny

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

Od Git 2. 23+ (sierpień 2019), ponieważ git checkout jest zbyt mylące , nowa (wciąż eksperymentalna) komenda to * git switch **:

git switch -C master origin/master

To jest:

-C <new-branch>
--force-create <new-branch>

Podobna do --create, z wyjątkiem tego, że jeśli <new-branch> już istnieje, zostanie zresetowany do <start-point>.
This is a convenient shortcut for:

$ git branch -f <new-branch>
$ git switch <new-branch>
  • *

Originally suggested:

Something like:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

with step 2 being optional.

102
102
102
2014-08-24 19:30:10 +0000

Git obsługuje to polecenie:

git checkout -B master origin/master

Sprawdź oddział origin/master, a następnie zresetuj tam oddział master.

30
30
30
2013-01-23 20:48:07 +0000

Myślę, że nawet odpowiedź VonC ma złożoność w porównaniu do tej opcji:

git update-ref refs/heads/master origin/master
git reset --hard master

git automatycznie rejestruje każdą wartość ref (poprzez reflog). Tak więc po uruchomieniu tej komendy, wtedy master@{1} odnosi się do poprzedniej wartości ref.

Odpowiedź VonC jest poprawna, ale marnuje czas na wymeldowanie starej wartości master do systemu plików.

Jeśli zależy Ci na osieroconych obiektach w repo, wtedy możesz uruchomić git gc

22
22
22
2014-06-25 15:47:13 +0000

Jeśli jesteś już w master możesz wykonać następujące czynności:

git reset --hard origin/master

Skieruje on lokalny oddział master na zdalne origin/master i wyrzuci wszelkie modyfikacje w roboczej piwnicy.