我有一个历史悠久的GitHub存储库funfun
。我还有另一个GitHub存储库TBD
。
现在,我想将文件夹funfun
移到文件夹TBD
下,然后从现在开始,我将仅在存储库TBD
上工作。我希望保留funfun
的提交历史记录。
我关注了this solution。结果如下:
MBP:TBD$ ls
OCaml README.md
MBP:TBD$ git remote add funfun ../funfun
MBP:TBD$ git fetch funfun --tags
warning: no common commits
remote: Counting objects: 11874, done.
remote: Compressing objects: 100% (4286/4286), done.
remote: Total 11874 (delta 9020), reused 9813 (delta 7494)
Receiving objects: 100% (11874/11874), 21.98 MiB | 20.68 MiB/s, done.
Resolving deltas: 100% (9020/9020), done.
From ../funfun
* [new branch] master -> funfun/master
MBP:TBD$ git merge --allow-unrelated-histories funfun/master
warning: Cannot merge binary files: .DS_Store (HEAD vs. funfun/master)
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Auto-merging .DS_Store
CONFLICT (add/add): Merge conflict in .DS_Store
Automatic merge failed; fix conflicts and then commit the result.
MBP:TBD$ git remote remove funfun
MBP:TBD$ ls
Addins bin package-lock.json units
OCaml config package.json views
README.md git.sh public webpack.config.js
addin models routes
app.js output.csv ssl
当我在GitHub网站上查看TBD
时,没有添加funfun
。
是因为Automatic merge failed; fix conflicts and then commit the result.
吗?有人知道如何解决吗?
PS:拥有子文件夹TBD\funfun\
或将funfun
的所有子文件夹放在TBD
下(如上所述)都很好,我以后总是可以安排文件夹。
答案 0 :(得分:4)
您已经完成了大部分工作。现在,仅解决合并冲突。让我们一一解决。
CONFLICT (add/add): Merge conflict in README.md
这很简单。 README.md
文件存在一些冲突,您可以通过编辑文件并保存其中的任何内容来手动解决。确保删除其中包含<<<<<<<
,=======
和>>>>>>>
的行,这些行被Git用于显示冲突。转到下一个。
CONFLICT (add/add): Merge conflict in .DS_Store
.DS_Store
是在Mac上创建的,您可以通过运行ls -a
进行查看,通常应将其添加到位于目录根目录下的.gitignore
文件中,从源代码管理中将其忽略回购目录。由于尚未完成,因此该文件也发生了冲突。因此,现在您应该首先通过在repo目录的根目录中运行以下命令来从您的repo目录中删除所有.DS_Store
的出现:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
接下来,如果您已经有一个.gitignore
文件,请在其中添加一个带有.DS_Store
的行。否则,通过命令在repo目录的根目录下创建并添加条目
echo .DS_Store >> .gitignore
接下来,只需像平常一样提交更改
git commit -am "Commit message"
然后使用
推送更改git push origin master
工作完成!
答案 1 :(得分:1)
看起来像合并冲突是问题所在。两个文件夹都有一个README.md文件,因此它们引起了冲突。选择您要保留的那个,那个应该工作。您的合并由于冲突而没有完成(这就是“修复冲突,然后提交结果。”的意思。)因此事情与您的指示背道而驰。
.DS_Store文件是Mac OS X创建的隐藏文件。我假设您正在Mac上执行此操作?它不会以ls开头,因为它以开头。 (解释为隐藏文件)。快速解决方案是在尝试合并之前将其从目标目录中删除,以免造成冲突。
稍长一点的版本是您通常不想首先将这些文件检入git repo中。在.gitignore文件中包括.DS_Store并将签入忽略文件检入到仓库中是很常见的,这样git不会跟踪它。现在,文件已经签入,您仍然需要在合并之前将其从存储库中删除。