0

正確なメッセージやその理由を思い出せませんが、変更をリモート リポジトリにプッシュしようとすると、次のようなメッセージが表示されtip/head pointers were not in sync、最初にプルしてからプッシュする必要があるというメッセージが表示されました。私はそれをしました、そして今ここに私が持っているものがあります:

現在の状態を観察する:

* commit 7f82d39
|     comment 3
|
*   commit f4d754b
|\  Merge: aadc751 328b900
| | 
| |     Merge branch 'master' of https://github.com/myrepo
| |
| * commit 328b900
| | 
| |     comment 2
| |
* | commit aadc751
|/  
|       comment 1
|
* commit aa65fee

私はこれらすべてのコミットの作成者であり、他の作成者は関与していないことに注意してください。これをリベースして、GitHub が行った誤った/意図しない変更を破棄し、ローカル マシンのレポで行われたコミットのみを保持するようにします。ブランチを効果的に 1 つにマージします。そして、そのローカル リポジトリを GitHub にプッシュして、GitHub が持っていたものを上書きします。

言い換えれば、分岐やマージを行わずに単一のブランチ ラインが必要です。そこでは、GitHub で作成されたコミットを破棄またはマージし、何も失うことなく、ローカル リポジトリのみを 1 つの「真の」ブランチとして使用できます。

どのように?

リベースについて少し知っていますが、これを台無しにしないようにしたいです。

ボーナス: レポのヒントが一致しない場合はどうすればよいですか?

4

1 に答える 1

0

手順は次のとおりです。 1.「真のブランチ」に名前を付けてチェックアウトします 2.履歴を修正します 3.マージ後に行った最後のコミットを適用します

これは次のように変換されます。

git checkout -b onetrue aadc751
git rebase 328b900
git cherry-pick 7f82d39

これで完了です。これで、必要な履歴を持つ「onetrue」というブランチが作成されました。気に入ったら保管してください。「master」など、不要になった別のブランチを使用していた可能性がある場合は、それを削除できます。

git branch -D master

新しいブランチの名前を master にしたい場合は、名前を変更します。

git branch -m onetrue master

おまけに答えて、将来これを避けるために、プルするときに「リベース」フラグを含めます。

git pull --rebase
于 2013-11-07T17:00:23.127 に答える