Git、origin/master をコミットにリセットするにはどうすればいいですか? 質問する

Git、origin/master をコミットにリセットするにはどうすればいいですか? 質問する

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

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にコミットを追加しようとしましたが、成功しませんでした。

$ 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)

origin/master のヘッドをリセットしたので、local と origin は同じ方向になるはずですが、ご覧のとおり、git は local/master が origin/master より 7 コミット遅れていると表示しています。

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

ここに画像の説明を入力してください

ベストアンサー1

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

おすすめ記事