4

私は自分のレポを少し状態にしてしまい、それから抜け出すことができるようにしたいと考えています

リポジトリはこのように見えます (A1、B1、C1 などは明らかにコミットです)

                  A1 ---- A2 ---- A3 ---- A4 ---- A5 ---- A6 ---- A7 ---- A8
                                                                  /
(from a remote repo)  B1 ---- B2 ---------------------------------  
                              | \
                              \  C1 ---------------------------------C2 
                               \                                     /
                                D1 --- D2 --- D3 --- D4 --- D5 --- D6

理想的には、B、C、および D 行のすべてのリビジョンを (リベースで?) 削除できるようにしたいと考えています (これらの行には ref ブランチを除いてローカル ブランチがないため、単にブランチと言うのは嫌です)。リモート リポジトリ) を作成し、おそらくより適切な方法で、リモート リポジトリへのマージを再試行してください。

これらすべてのコミットを取り除く方法についての提案に感謝します。ブランチ名ではなくリビジョン SHA1 を使用する回答をお願いできますか。どうにかしてマージを A7 に戻すことができると思ったのですが、どうすればよいかわかりません。

それが十分な情報であることを願っています。多くのthx

サイモン

4

3 に答える 3

1

xyld が提案したように、ブランチのリベースはおそらくやりたいことです。

その前に、Pro Git book の第 3 章から rebase コマンドを読むことをお勧めします。プロセスがどのように機能するか、および知っておく必要がある「落とし穴」を説明するのに役立ちます。(たとえば、すでに公開リポジトリにプッシュしたコミットをリベースするべきではありません。そうしないと、他のすべての人にとって失敗することになります...しかし、ここではそうではないようです。)

于 2010-05-06T16:03:24.017 に答える
1

整頓とは、変更を線形化することを意味していると思います。

次のようなことができるはずです。

git rebase A B
git rebase 'A C
git rebase ''A D

ABC と D は、リベースに関係するコミット/参照を表しています。実際に ABC や D を rebase に渡しても、おそらく何もしませ。次のようにする必要があります。

git rebase master branchname

それは役に立ちますか?

于 2010-05-06T12:42:06.773 に答える
0

実行すると

git rebase -f 557b29ecc0ec c96769ef2f

明らかにリベースを実行しています。しかし、それは報告します

Falling back to patching base and 3-way merge...
error: Your local changes to 'Client/WebDataEntry/temp.txt' would be overwritten by 
merge.  Aborting.
Failed to merge in the changes.
Patch failed at 0004 Initial Source Load

以前に変更を追加/コミットしたことがあるので、何らかの周期的な状況や、終了後に競合を自動的に解決できない状況がある場合を除いて、なぜこれを報告する必要があるのか​​ わかりません

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".

だから私はインタラクティブにリベースを実行しようとします

git rebase -i 557b29ecc0ec c96769ef2f

しかし、私はエラーが発生します

Invalid branchname: c96769ef2f

おそらく、私の思考/理解に欠陥がある可能性があることを付け加えておく必要があります. A1 と B1 の間に共通の祖先がないため、B1 (またはその後のコミットのいずれか) を A1 にリベースすると、B1/C1/D1 行が効果的に吹き飛ばされることを期待していました。

もう一度Thx

于 2010-05-06T16:39:25.527 に答える