2017-02-07 9 views
6

私は自分のプロジェクトを行ってきましたが、ある時点で私は1つのことが機能しなくなったことを発見しました。私は正常に動作していたときに自分のコードの状態を調べる必要があったので、git checkoutを使うことにしました(チェックアウトしたいので)。私は私が持っていない、かなり確信しているGit checkout - HEADに戻って

git checkout SHA-HEAD 

error: Your local changes to the following files would be overwritten by checkout: 
    [list of files] 
Please, commit your changes or stash them before you can switch branches. 
Aborting 

:そして私は戻って私がHEADに行くことができないからポイントへ行っている間、出力は以下の通りです

​​

数回やりました何か変更しました。コマンド

git checkout master 

の出力は同じです。

HEADに戻る方法はありますか?

ヒストリコミットを「ジャンプ」する安全な方法は何ですか?

+0

あなたは 'gitのクリーン-f'は、すべての人跡未踏のファイルをきれいにする、それらの変更を保持したくない場合。次に、マスターにチェックアウトする – gmuraleekrishna

+0

'error:...'というメッセージは、自分が行ったこと、あるいは間接的に*ファイルを変更したことを意味します。これらの変更を破棄したり上書きしたり、 'git status'や' git diff'を使って正確に何が変更されたのかを確認することができます。何らかの改行改行や、ファイルに書き込んだバックグラウンドで実行されるコマンドなど、単純なものでも可能です。 (「HEADに戻る」というのは、あなたがHEADの*常に*であるように、Gitでは意味をなさない: 'HEAD'は文字通り「現在のコミット」を意味する。これは...難しいです。フレーズは難しいです:-)) – torek

+1

Gitにはメカニズムが搭載されていますので、ここでは2つです: 'git reset -hard HEAD'は、「インデックスとワークツリーを一致させるためにリセットしますHEAD "、つまり変更を捨てる。または、 'git checkout -f master'は、" HEADを 'master 'に変更することを意味します。これは、何らかの作業を捨てることを意味するとしても、" -f "は" force "を意味します。 – torek

答えて

11

stash(変更を一時的なボックスに保存)、masterブランチヘッドに戻ることができます。

$ git add . 
$ git stash 
$ git checkout master 

ジャンプオーバーは、前後にコミット:

  • は、特定のcommit-shaに移動します。

    $ git checkout <commit-sha> 
    
  • あなたがここにコミットされていない変更がある場合、あなたは、新しいブランチをチェックアウト追加、コミット、リモートに現在のブランチをプッシュすることができます。

    # checkout a new branch, add, commit, push 
    $ git checkout -b <branch-name> 
    $ git add . 
    $ git commit -m 'Changes in the commit' 
    $ git push origin HEAD  # push the current branch to remote 
    
    $ git checkout master   # back to master branch now 
    
  • あなたは、特定の変更を持ってコミットし、変更を保持したくない、あなたはmaster(または、他の分岐)に、次にチェックアウトをstashresetを行うことができます。あなたは何のコミットされていない変更がない場合

    # stash 
    $ git add -A 
    $ git stash 
    $ git checkout master 
    
    # reset 
    $ git reset --hard HEAD 
    $ git checkout master 
    
  • チェックアウトした後、具体的には、ちょうど戻ってmasterまたはotherブランチにコミット。

    $ git status   # see the changes 
    $ git checkout master 
    
    # or, shortcut 
    $ git checkout -  # back to the previous state 
    
+0

それは私の問題を部分的に解決しました。 まだ私は、結果を出さずにコミットを行き来する方法を知る必要があります。 – asdfgh

+1

@rbraun、私はどのように前後にコミットすることができるかを示す私の答えを編集しました。 –

関連する問題