1. ホーム
  2. ギット

[解決済み】Git、コミット時にorigin/masterをリセットする方法は?

2022-03-31 07:38:08

質問

このコマンドでローカルのマスターをコミットにリセットしました。

git reset --hard e3f1e37

を入力すると $ git status コマンドを実行すると、ターミナルにこう表示されます。

# On branch master
# Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.

#   (use "git pull" to update your local branch)
#
nothing to commit, working directory clean

origin/headerもリセットしたいので、origin/masterにチェックアウトしています。

$ git checkout origin/master
Note: checking out 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 2aef1de... master problem fixed for master. its okay now.

で、このコマンドでヘッダをリセットします。

$ git reset --hard e3f1e37
HEAD is now at e3f1e37 development version code incremented for new build.

その後、origin/headerにcommitを追加しようとしましたが、うまくいきませんでした。

$ git commit -m "Reverting to the state of the project at e3f1e37"
# HEAD detached from origin/master
nothing to commit, working directory clean

最後に、ローカルのマスターにチェックアウトします。

$ git checkout master
Switched to branch 'master'
Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

オリジン/マスターの頭をリセットしたので、ローカルとオリジンは同じ方向にあるはずなのですが、ご覧のとおり、ローカル/マスターはオリジン/マスターより7コミット分遅れていることがわかります。

どうすればこの問題を解決できますか?私が探しているのは、local/master と origin/master のヘッドが同じコミットを指しているかどうかです。次の画像は、私がやったことを示します。ありがとうございます。

解決方法は?

origin/xxx ブランチは常にリモートへのポインタです。ローカルリポジトリへのポインタではないので、チェックアウトすることはできません(コミットをチェックアウトするだけです。そのため、コマンドラインインターフェイスのブランチマーカーには名前が表示されず、コミットハッシュのみが表示されます)。

リモートを更新するために必要なことは、ローカルの変更をマスターに強制的にプッシュすることです。

git checkout master
git reset --hard e3f1e37
git push --force origin master
# Then to prove it (it won't print any diff)
git diff master..origin/master