2

中央のgitリポジトリにいくつかの変更をプッシュすると、すぐに、古い、現在は廃止された変更があり、それとのマージを導入したことに気付きました。

前

次に、git rebaseを使用して、この偽の親を取り除きました。

後

それから私はこれgit push -fを原点に押し込みました。それは「すべて最新」で答えます。

今、私は中央リポジトリが私がローカルに持っているものと一致することを期待します。しかし、私cloneが新たにプロジェクトを行うとき、私はまだ偽の親を中に持っています。さらに悪いことに、gitがマージしたいのですが、それを許可すると、最新のコミットが2回取得されます(1回は古いハッシュで、もう1回はリベース後に新しいコミットで)。

gitにマージせずに持っているものをプッシュさせ、リポジトリの状態を新しい状態にする(つまり、基本的に、すべてのリモートの違いを拒否する)にはどうすればよいですか?

または私はこれを間違っていますか?「プロパティを読み取るとき...」コミットと、上の画像の赤い線全体を削除したいと思います。

4

1 に答える 1

1

これはさまざまな方法で解決できます。1つの方法は、reset、stash、およびcommitを使用して、履歴をローカルで再構築することです。以下は、最後のコミット(...の最初のインポート)を元に戻し、それらの変更を隠します。

git reset --mixed HEAD^
git stash

これで、abcd1234が「Testinggit」のハッシュであると仮定して、マージを実行する前に行っていたコミットにマスターをリセットできます。専念:

git reset --hard abcd1234

ここで、隠し場所を戻し、再度コミットします。

git stash pop
git add .
git commit -m 'Initial import of the C++ client library.'

最後に、書き直したマスターをプッシュアップします。

git push -f origin master
于 2012-04-05T14:59:44.120 に答える