web-dev-qa-db-ja.com

Gitの最新バージョンに戻るにはどうすればいいですか?

私は最近SVNからGitに移行しましたが、少し混乱しています。以前のバージョンのスクリプトをデバッガで実行する必要があったので、git checkout <previous version hash>を実行し、必要なことを実行しました。

今私は最新バージョンに戻りたいのですが、私はそれのハッシュを知りません。 git logと入力しても表示されません。

これどうやってするの?また、ハッシュを入力するよりもバージョンを変更するより簡単な方法があります - 「2つ前のバージョンに戻る」または「最も年代順に最新のバージョンに移動する」のようなものですか?

276
Nathan Long

git checkout masterがうまくいくはずです。 2つのバージョンに戻るには、git checkout HEAD~2のように言うことができますが、その時に一時的なブランチbasedを作成するほうが良いので、git checkout -b temp_branch HEAD~2

338
Paul Betts

特定のコミットにチェックアウトすると、gitは独立したブランチを作成します。だから、あなたが呼び出す場合:

$ git branch 

あなたは次のように見えるでしょう:

* (detached from 3i4j25)
  master
  other_branch

マスターブランチの頭に戻るには、もう一度マスターブランチにチェックアウトする必要があります。

$ git checkout master

このコマンドは自動的にデタッチされたブランチを削除します。

git checkoutが機能しない場合は、おそらく変更されたファイルがブランチ間で衝突している可能性があります。コードgitを紛失しないようにするには、これらのファイルを処理する必要があります。 3つの選択肢があります。

  1. あなたの変更を隠します(後で変更することができます)。

    $ git stash
    
  2. デタッチされたブランチをリセットしている変更を破棄します。

    $ git reset --hard
    
  3. 以前の変更で新しいブランチを作成してコミットします。

    $ git checkout -b my_new_branch
    $ git add my_file.ext
    $ git commit -m "My cool msg"
    

この後あなたはあなたのマスターブランチ(最新版)に戻ることができます。

$ git checkout master
49
Thomio

これは私のためのトリックをしました(私はまだマスターブランチにいました):

git reset --hard Origin/master
30
averasko

1つには、ブランチ名を使ってチェックアウトすることができます。

HEADを動かすにはいくつかの方法がありますが、列挙するためにgitの専門家に任せます。

私はちょうどgitk --allを提案したいと思いました - gitから始めると非常に役に立つことがわかりました。

7
Jay

最新バージョンに戻るには:

git checkout <branch-name> 

例えば、git checkout masterまたはgit checkout dev

6
Reggie Pinkham

私はgitをさらに掘り下げ始めているので、正しく理解できるかどうかはわかりませんが、OPの質問に対する正しい答えは、次のような形式仕様でgit log --allを実行できることだと思います:git log --all --pretty=format:'%h: %s %d' 。これにより、現在のチェックアウト済みバージョンが(HEAD)としてマークされ、リストから次のバージョンを取得できます。

ところで、次のようなエイリアスを.gitconfigに追加し、わずかに優れた形式でgit hist --allを実行できます:

  hist = log --pretty=format:\"%h %ai | %s%d [%an]\" --graph

相対的なバージョンに関しては、私はこれを見つけました post 、しかしそれは古いバージョンについてのみ話します。おそらく新しいバージョンを参照するものは何もありません。

6
haridsv

以前のバージョンに戻ると、

$ git checkout HEAD~2
Previous HEAD position was 363a8d7... Fixed a bug #32

この状況でも、このコマンドであなたの機能ログ(ハッシュ)を見ることができます。

$ git log master --oneline -5
4b5f9c2 Fixed a bug #34
9820632 Fixed a bug #33
...

masterは他のブランチ名に置き換えることができます。

それをチェックすると、その機能に戻ることができるでしょう。

$ git checkout 4b5f9c2
HEAD is now at 4b5f9c2... Fixed a bug #34
2
kujiy

ここでの答えのいくつかは、あなたが古いコミットをチェックアウトすることを決心する前にあなたがマスターブランチにいると仮定します。これは必ずしもそうとは限りません。

git checkout -

以前に行っていたブランチに戻ります(それがマスターであったかどうかにかかわらず)。

1
Itai Noam

よりエレガントでシンプルな解決策は

git stash

それはブランチの最も憤慨しているローカルバージョンに戻り、またstashにあなたの変更を保存するので、このアクションを元に戻したいのなら、こうしてください:

git stash apply
0
Ilya Gazman