Git合并:冲突,我不知道如何解决

4
我有一个存放在Git上的Django项目。
我对Git不太熟悉。
我刚刚完成了我的feature/22分支并进行了提交和推送。
我已经提交(使用git add .命令)并推送我的master分支。
所以我的两个分支都是最新的。
现在,我想在本地将我的master分支与我的feature/22分支合并,但我遇到了冲突。
即使在提交后,我也有2个“未合并路径”的文件。
Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   unblind/migrations/__pycache__/0002_auto_20200124_0904.cpython-37.pyc
        both modified:   unblind/migrations/__pycache__/0003_auto_20200124_1007.cpython-37.pyc

如果我使用推荐的命令 git add,会发生什么?

为什么这两个文件在之前的 git add . 命令中没有被包含进去?

编辑:

$ git merge feature/22
warning: Cannot merge binary files: unblind/migrations/__pycache__/0003_auto_20200124_1007.cpython-37.pyc (HEAD vs. feature/22)
warning: Cannot merge binary files: unblind/migrations/__pycache__/0002_auto_20200124_0904.cpython-37.pyc (HEAD vs. feature/22)
Auto-merging unblind/migrations/__pycache__/0003_auto_20200124_1007.cpython-37.pyc
CONFLICT (content): Merge conflict in unblind/migrations/__pycache__/0003_auto_20200124_1007.cpython-37.pyc
Auto-merging unblind/migrations/__pycache__/0002_auto_20200124_0904.cpython-37.pyc
CONFLICT (content): Merge conflict in unblind/migrations/__pycache__/0002_auto_20200124_0904.cpython-37.pyc
Removing randomization/templates/randomization/_randomisation_edit.html
Automatic merge failed; fix conflicts and then commit the result.

编辑2:

我已经暂时解决了我的合并问题:

  • git checkout feature/22
  • rm(删除主分支/feature/22合并时提到的所有文件)
  • git commit -m“delete *.pyc”
  • git checkout master
  • git merge feature/22
  • git push origin master

但是.pyc仍然被跟踪,在在主分支上运行我的django项目后,如果我运行 git status 命令:

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   export/migrations/__pycache__/__init__.cpython-37.pyc
        modified:   parameters/migrations/__pycache__/0003_auto_20200128_1337.cpython-37.pyc
        modified:   parameters/migrations/__pycache__/0004_auto_20200129_1206.cpython-37.pyc
        modified:   parameters/migrations/__pycache__/0005_auto_20200305_0810.cpython-37.pyc
        modified:   parameters/migrations/__pycache__/0006_auto_20200305_1238.cpython-37.pyc
        modified:   parameters/migrations/__pycache__/0007_auto_20200305_1242.cpython-37.pyc
        modified:   parameters/migrations/__pycache__/0008_auto_20200305_1428.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0001_initial.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0002_auto_20200129_1206.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0003_auto_20200129_1434.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0004_auto_20200210_1750.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0005_historicalstock_stock.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0006_auto_20200218_1344.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0007_auto_20200218_1359.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0008_auto_20200218_1403.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0009_auto_20200218_1410.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/0010_auto_20200302_1059.cpython-37.pyc
        modified:   pharmacy/migrations/__pycache__/__init__.cpython-37.pyc
        modified:   randomization/migrations/__pycache__/0008_auto_20200302_1059.cpython-37.pyc

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        unblind/migrations/__pycache__/

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


1
https://www.gitignore.io/api/django - Ivan Starostin
4个回答

6

你可以忽略项目中任何 /__pycache__/ 文件夹。

  1. 如果你还没有 .gitignore 文件,你可以在项目文件夹中创建一个:project/.gitignore
  2. */__pycache__/* 放入 .gitignore 文件中。

我已经在主分支和一个名为feature/22的分支中更新了我的gitignore文件,但仍然存在冲突(更多细节请参见EDIT)。 - SLATER
我可以直接删除这些文件吗? - SLATER
1
@SLATER 是的。Python会自己重新创建它们。所以尝试使用 git rm -r unblind/migrations/__pycache__/ - aminrd

2

删除那些带有缓存的文件。

rm -rf <path_of_filename>

尽量不要把你的代码推送出去。
 git add.

保持练习以开始添加

.gitignore

在开始任何项目之前,将缓存、编译的文件添加到其中。


0

将pycache文件存储在git仓库中从来都不是一个好主意。这些文件会在每次构建时由py_compile模块自动生成。

您可以添加这些文件以解决合并冲突,但我建议在项目的根目录下使用.gitignore。

这里有一个很好的.gitignore可以添加到您的项目中。


由于这些文件会在编译代码时重新生成,我可以毫无副作用地删除它们吗? - SLATER
你应该是正确的,但不知道为什么我的gitignore没有生效... - SLATER
我已经阅读了,可能是编码问题还是因为我在git init之后创建了我的gitignore文件,所以所有文件都已经被跟踪了...这是可能的...我该如何解决? - SLATER
我也尝试使用git rm -r --cached . - SLATER
然后使用 "git add ." 命令添加已跟踪的文件,但那些在 ".gitignore" 中被忽略的文件不会被跟踪。 - SLATER
显示剩余4条评论

0

我曾经遇到类似的问题,解决方法是在 .gitignore 文件中添加 < /pycache/ >,然后重新提交更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接