13

2 つのローカル ブランチmasterdev. どちらのブランチにも 3 つのフォルダーが含まれていました。

projectBeta
project
project_v1

projectBeta保持して削除projectproject_v1、名前projectBetaを として変更したかっただけprojectです。それが私が両方のブランチで別々に行ったことであり、進行中にコミットしました。ブランチを master にマージしようとするまではすべて問題ないように見えましたがdev、これらの種類のエラーが山積みになりました。

CONFLICT (rename/delete): Rename projectBeta/test.c->project/test.c in dev and deleted in HEAD
CONFLICT (rename/delete): Rename project_v1/test.c->project/test.c in HEAD and deleted in dev

そのため、Git はさまざまなブランチでさまざまな方法で名前変更を追跡しているようです。

もし私がするならgit status、私は得る

# On branch master
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   added by us:        project/test.c
#
no changes added to commit (use "git add" and/or "git commit -a")

最初に理解できないのは、マージ レポートで名前が変更され、私たちと彼らの両方によって削除されたと表示されているのに、なぜステータスが「私たちによって追加された」と表示されるのかということです。

次に、test.c の dev ブランチ バージョン (それら) を使用したいのですが、試してみると

git co --theirs project/test.c

私は得る

error: path 'project/test.c' does not have their version

...マージで dev ブランチのコンテンツが確実に使用されるようにする方法がわかりません。

最後に、将来このような混乱を避けるためのベストプラクティスの方法はありますか? 基本的に、コンテンツが最初にマージする準備ができていないブランチでフォルダー構造を個別に変更します...

4

2 に答える 2

2

これを試して

git pull

フォルダーに移動してプロジェクトと project_v1 を削除し、projectBeta の名前を project に変更します。

git add --all
git commit 
git push

他のブランチについても同じことを行います

于 2014-06-10T08:25:52.417 に答える
2

必要なのはgit mvgit rmです。

私の推測では、おそらく git に知らせずにディレクトリを rm したと思います。git はすべてのフォルダーを追跡し、それらを正しく処理する方法を知る必要があるため、git に通知する必要があります。

あなたがすべきことは次のとおりです。

git rm -r project
git rm -r project_v1
git mv projectBeta project
于 2011-09-03T02:46:08.067 に答える