因此,我有两棵目录树,一棵在台式计算机上,一棵在笔记本电脑上。它们主要包含文本文件。它们应该是等效的,我尝试手动使其模糊地保持同步。显然,这是一种低效的方法,并且缺乏任何版本控制。
因此,我希望它们成为Git存储库。问题在于,两个目录不相同;从上次同步事物开始,每个事物都略有偏离,而且我的同步过程总是马虎不平衡。而且,两个都不是Git存储库。所以这就是我想做的:
这不是关于合并两个Git存储库的问题-当前两个目录都没有版本跟踪-也不是关于将一个存储库移入另一个存储库。这是关于使用可用的Git工具将两个目录合并到一个新的Git存储库中。谢谢!
答案 0 :(得分:1)
这个基本想法有效...可能有更好的方法。
创建新的存储库(从新的空目录开始):
git init
touch .gitignore #give git something to commit
git add .
git commit -m "blank directory"
为目录1创建分支
git checkout -b dir1
touch a b c #<3 example files..replace this command by copying directory 1 in here
git add .
git commit -m "directory 1"
为目录2创建分支
git checkout master # very important...start directory 2 from master
git checkout -b dir2
touch c d e #<3 example files..one of which overlaps..again, replace with appropriate directory
git add .
git commit -m "directory 2"
合并分支:
git checkout master
git merge dir1
git merge dir2
新的主目录:
>ls -a
a b c d e .gitignore
请注意,我在第一次发布后确实尝试了更复杂的合并(出于好奇)。似乎可以很好地与子目录,具有不同内容的文件等一起使用。一个重要警告 可能是我的.gitconfig文件中包含以下行:
[diff]
algorithm = minimal
[merge]
tool = vimdiff
[mergetool "diffconflicts"]
cmd = vim -c DiffConflicts \"$MERGED\" \"$BASE\" \"$LOCAL\" \"$REMOTE\"
trustExitCode = true
为此git mergetool -t diffconflicts
我使用了diffconflicts工具(一个vim插件)。它基于diff标记至少执行两次双向合并。它确实了解基础,但是我不确定它在乎什么程度。与git兼容的其他各种工具也可以执行双向合并。