1. ホーム
  2. git

[解決済み] Git チェックアウト - HEAD に戻る

2022-03-03 16:39:38

質問

プロジェクトを進めていて、ある時、あるものが動かなくなったことに気づきました。正しく動作していたときの自分のコードの状態を調べる必要があったので、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