将GitHub仓库移动到另一个仓库时出错

8
我有一个历史悠久的GitHub存储库funfun,还有另一个GitHub存储库TBD

现在我想将文件夹funfun移动到文件夹TBD下面,然后从现在开始,我只会在存储库TBD上工作。 我希望保留funfun的提交历史记录。

我遵循了这个解决方案。 这是结果:

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没有被添加。

这是因为自动合并失败;请解决冲突后再提交结果。吗?是否有人知道如何解决这个问题?

PS:无论是有子文件夹TBD\funfun\还是将funfun的所有子文件夹放在TBD下方(如上所述),都可以。我之后可以安排文件夹。


修复这些冲突。它们是 README.md.DS_Store 文件。也许您将其添加到根目录而不是自己的 funfun 目录中了? - Justinas
那么我如何将内容添加到 funfun 文件夹中呢? - SoftTimur
2个回答

3

你已经完成了大部分的工作,现在只需要解决合并冲突问题。我们逐一处理。

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 目录中所有出现的 .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
看起来合并冲突是个问题。两个文件夹都有一个README.md文件,因此它们引起了冲突。选择要保留的文件,然后就可以解决问题。由于存在冲突,您的合并未能完成(这就是“修复冲突,然后提交结果”的含义),所以事情与您的指令不符。
.DS_Store文件是Mac OS X创建的隐藏文件。我假设您正在使用Mac?它在ls中不显示,因为它以.开头(被解释为隐藏文件)。快速解决方法是在尝试合并之前从目标目录中删除它,以避免创建冲突。
稍长一点的版本是,通常您不希望首先将这些文件检入git存储库中。将.DS_Store包含在.gitignore文件中并将忽略文件检入存储库中,以便git不跟踪它。现在该文件已经被检入,您仍然需要在合并之前将其从存储库中删除。

是的,我正在使用 Mac。 - SoftTimur

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