私は最近SVNからGitに移行しましたが、少し混乱しています。以前のバージョンのスクリプトをデバッガで実行する必要があったので、git checkout <previous version hash>
を実行し、必要なことを実行しました。
今私は最新バージョンに戻りたいのですが、私はそれのハッシュを知りません。 git log
と入力しても表示されません。
これどうやってするの?また、ハッシュを入力するよりもバージョンを変更するより簡単な方法があります - 「2つ前のバージョンに戻る」または「最も年代順に最新のバージョンに移動する」のようなものですか?
git checkout master
がうまくいくはずです。 2つのバージョンに戻るには、git checkout HEAD~2
のように言うことができますが、その時に一時的なブランチbasedを作成するほうが良いので、git checkout -b temp_branch HEAD~2
特定のコミットにチェックアウトすると、gitは独立したブランチを作成します。だから、あなたが呼び出す場合:
$ git branch
あなたは次のように見えるでしょう:
* (detached from 3i4j25)
master
other_branch
マスターブランチの頭に戻るには、もう一度マスターブランチにチェックアウトする必要があります。
$ git checkout master
このコマンドは自動的にデタッチされたブランチを削除します。
git checkout
が機能しない場合は、おそらく変更されたファイルがブランチ間で衝突している可能性があります。コードgitを紛失しないようにするには、これらのファイルを処理する必要があります。 3つの選択肢があります。
あなたの変更を隠します(後で変更することができます)。
$ git stash
デタッチされたブランチをリセットしている変更を破棄します。
$ git reset --hard
以前の変更で新しいブランチを作成してコミットします。
$ git checkout -b my_new_branch
$ git add my_file.ext
$ git commit -m "My cool msg"
この後あなたはあなたのマスターブランチ(最新版)に戻ることができます。
$ git checkout master
これは私のためのトリックをしました(私はまだマスターブランチにいました):
git reset --hard Origin/master
1つには、ブランチ名を使ってチェックアウトすることができます。
HEADを動かすにはいくつかの方法がありますが、列挙するためにgitの専門家に任せます。
私はちょうどgitk --all
を提案したいと思いました - gitから始めると非常に役に立つことがわかりました。
最新バージョンに戻るには:
git checkout <branch-name>
例えば、git checkout master
またはgit checkout dev
私は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 、しかしそれは古いバージョンについてのみ話します。おそらく新しいバージョンを参照するものは何もありません。
以前のバージョンに戻ると、
$ 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
ここでの答えのいくつかは、あなたが古いコミットをチェックアウトすることを決心する前にあなたがマスターブランチにいると仮定します。これは必ずしもそうとは限りません。
git checkout -
以前に行っていたブランチに戻ります(それがマスターであったかどうかにかかわらず)。
よりエレガントでシンプルな解決策は
git stash
それはブランチの最も憤慨しているローカルバージョンに戻り、またstashにあなたの変更を保存するので、このアクションを元に戻したいのなら、こうしてください:
git stash apply