0

git status私にこれを与えます:

あなたのブランチは11回のコミットで「origin/network」の後ろにあり、早送りすることができます。

これは、以前のバージョンにリセットしたためです(後で行ったすべてを破棄したいと考えています)。

ただし、そのバージョン(またはいくつかのマイナーな変更を加えたバージョン)をプッシュしようとすると、これは機能しません。新しいものは必要ありません。元に戻した古いバージョンから始めたいだけです。

私は何をしますか?

4

2 に答える 2

3

リポジトリの唯一のユーザーである場合は、プッシュを強制できます。ただし、他の誰かがリポジトリからプルした場合は、他のすべての履歴を台無しにするため、プッシュを強制しないでください。

コミット履歴を変更せずに、過去11回のコミットを元に戻す新しいコミットを生成することができますgit merge --ff-only origin/networkgit revert HEAD~11

同様の質問に対するこの回答も参照してください。

于 2013-01-11T07:48:08.103 に答える
2

すでに「将来の」コードをプッシュしているので、他の貢献者がいる場合は、履歴を書き直さないようにする必要があります。あなたはかなり深刻な更新の悪夢を紹介するでしょう。

他の誰も最新のコードをプルしていないことがわかっている場合は、次の手順を実行して、特定のポイントでブランチを「再作成」できます。network以下は、ブランチの履歴を書き換えます。

git reset --hard <commit-id>
git push --force origin network

履歴を書き換えたくない場合(プッシュされた履歴の書き換えは常に避ける必要があります)、networkブランチの最後の11個のコミットを「元に戻す」ことができます。以下は、ブランチ上で実行されHEADます。network

git revert OLDER_COMMIT^..NEWER_COMMIT

これにより、既存のコミットを「元に戻す」コミットが効果的に作成されます。これで問題が発生する可能性があるのは、後でこのブランチを別のブランチにマージし、マージされたブランチの既存の11個のコミットを保持したい場合です。参照:複数のgitcommitを元に戻すための回答。

1回のコミットで11個のコミットを元に戻すこともできます。

# reset your network branch to be the same as the remote
git reset --hard origin/network

# Set your branch (soft) index to the commit point you want your branch state to have:
git reset --soft <commit-id>

# The index will change and the files will reflect a difference you can now commit:
git commit -a
于 2013-01-11T08:41:18.037 に答える