这是一个很难描述的问题(当然也很难找到答案),我发现最接近的答案是 将两个现有的已同步目录树移动到 git annex
我有两个文档文本文件副本,一个在台式 Linux 机器上,一个在笔记本电脑上。以前,我rsync
会定期运行以使这些文件保持同步。现在我想将这个问题的管理转移到git
,但不知道最干净的开始方式是什么。
git
我按照网上的说明将桌面上的文件放入远程服务器。这样很好。现在我的问题出在笔记本电脑上。也就是说,我的笔记本电脑上已经有一半同步的文件和文件夹,我认为通常的建议git clone
不是解决我的情况的正确方法,不是吗?
假设我的笔记本电脑上的文件和文件夹已经与台式机不同步,双向git
。使用已设置的远程存储库使我的文档文本文件重新同步的正确步骤是什么git
?
答案1
查看答案以了解为什么使用 git 进行同步不是一个好主意。
这是一个测试用例,展示了如何将 git 与两个已填充的目录同步。
cd /tmp
mkdir foo
cd foo
git init
echo "hello" > README.md
git add .
git commit -m "initial commit"
git remote add origin [email protected]:<myUser>/test.git
git push -u origin master
此时,我有一个与我的 git 服务器同步的本地 git repo。我现在将创建 REDME.md 文件的新副本,就像它已 rsyn 到另一台机器一样
cd /tmp
mkdir bar
cd bar
git init
echo "hello" > README.md
git add .
git commit -m "initial commit"
git remote add origin [email protected]:<myUser>/test.git
git push -u origin master
由于 bar 位于 master 后面,因此我无法推动。
To [email protected]:<myUser>/test.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:<myUser>/test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
我尝试执行 git pull。Git 合并了 repo,但没有下载该文件,因为它已存在于本地。
git pull origin master 来自 github.com:/test * branch
master -> FETCH_HEAD 通过“递归”策略进行的合并。
您还必须始终记住在更改每个系统上的任何文件之前执行 git pull,否则您将遇到需要解决的冲突。
答案2
您可以将 git clone 到笔记本电脑,然后将笔记本电脑中的现有文件复制到工作副本上。然后,您可以通过检查差异来编写合并文件,并可能恢复您想要保留的已删除行。
答案3
看起来使用 git 作为同步中介确实是完美的解决方案。我建议您不要使用 git 作为同步工具,原因如下。
Git 从未打算以这种方式工作。
Git 不跟踪其他 git 项目(任何包含 .git 文件夹的文件夹)
引用自 Github 网站
虽然 Git 听起来像是一个很棒的备份工具,但从长远来看,Git 确实不适合备份
https://help.github.com/articles/what-is-my-disk-quota
如果您曾经使用过包含数千个提交的存储库,git 会变得非常慢。Dropbox 或 rsync 将是完成这项工作的更好工具。