1. ホーム
  2. git

Git チェックアウト - HEAD に戻す

2023-07-28 10:38:47

質問

私は自分のプロジェクトを行ってきましたが、ある時点で1つのものが動作しなくなったことを発見しました。私はそれが正しく動作していたときに私のコードの状態を調べる必要があったので、私はgit checkoutを使用することに決めました(私は何かをチェックアウトしたかったので)。そして、私は

git checkout SHA

を数回実行すると、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

私は何も変更していないことを確信しています。コマンドは

git checkout master

は同じ出力をします。

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

履歴のコミットを飛び越える安全な方法は何ですか?

どのように解決するのですか?

以下の方法があります。 stash (一時的なボックスに変更を保存します) その後、再び master ブランチHEADになります。

$ 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 'Commit message'
      $ git push origin HEAD          # push the current branch to remote 
    
      $ git checkout master           # back to master branch now
    
    
  • 特定のコミットで変更があり、その変更を保持したくない場合、次のようにします。 stash または reset にチェックアウトして master (あるいは他のブランチ) にチェックアウトします。

      # 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