web-dev-qa-db-fra.com

Conflit Git (renommer / renommer)

Après la fusion de branches, j'ai reçu un conflict (rename/rename) sur un tas de fichiers, avec file~HEAD, et file~my_test_branch établi. Comment résoudre ces problèmes?

Merci

27
spacemonkey

Compte tenu de la configuration de test suivante:

git init resolving-rename-conflicts
cd resolving-rename-conflicts
echo "this file we will rename" > will-be-renamed.txt
git add -A
git commit -m "initial commit"
git checkout -b branch1
git rename will-be-renamed.txt new-name-1.txt
git commit -a -m "renamed a file on branch1"
git checkout -b branch2 master
git rename will-be-renamed.txt new-name-2.txt
git commit -a -m "renamed a file on branch2"
git checkout master

Puis fusionner branch1 et branch2

git merge --no-ff branch1
git merge --no-ff branch2

Rendements:

CONFLICT (rename/rename): Rename "will-be-renamed.txt"->"new-name-1.txt" in branch "HEAD" rename "will-be-renamed.txt"->"new-name-2.txt" in "branch2"
Automatic merge failed; fix conflicts and then commit the result.

git status

On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)

    added by us:        new-name-1.txt
    added by them:      new-name-2.txt
    both deleted:       will-be-renamed.txt

no changes added to commit (use "git add" and/or "git commit -a")

Si vous souhaitez conserver un fichier, dites new-name-2.txt:

git add new-name-2.txt
git rm new-name-1.txt will-be-renamed.txt
git commit

Bien sûr, en choisissant un fichier ou l'autre, vous pouvez avoir d'autres modifications à apporter aux fichiers qui référencent ce fichier par son nom. De plus, s'il y a d'autres modifications non-renommer dans le fichier, avant ou après le changement de nom sur les branches, vous devrez les comparer manuellement et les fusionner pour les conserver dans le fichier que vous conservez.

Si vous souhaitez plutôt conserver les deux fichiers:

git add new-name-1.txt new-name-2.txt
git rm will-be-renamed.txt
git commit
18
javabrett