297

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

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.

次に、コミットをオリジン/ヘッダーに追加しようとしましたが、成功しませんでした。

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

ローカルとオリジンは同じ方向にあるはずですが、ご覧のとおり、gitは私のローカル/マスターがオリジン/マスターより7コミット遅れていると言っています。

この問題を解決するにはどうすればよいですか? 私が探しているのは、ローカル/マスターのヘッドとオリジン/マスターが同じコミットを指していることです。次の画像は、私がしたことを示しています。ありがとう。

ここに画像の説明を入力

4

5 に答える 5

666

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
于 2013-07-16T02:30:37.930 に答える
62

ここにある解決策は、すでにプッシュされた以前のコミットに master を更新するのに役立ちました。

git checkout master
git reset --hard e3f1e37
git push --force origin e3f1e37:master

受け入れられた回答との主な違いは、プッシュ コマンドのマスターの前のコミット ハッシュ「e3f1e37:」です。

于 2014-08-19T18:44:43.660 に答える