我刚刚开始使用git,并且对SVN的工作流程差异印象深刻,但我遇到了一个结构/设置问题,文档似乎没有直观地解释如何设置,我想知道是否它甚至可能.
我的设置是我从桌面和笔记本电脑开发了几台计算机,因此,为了更容易保持同步并为git存储库提供备份,我在我的家用Linux服务器上设置了一个"公共"裸存储库,我可以从桌面和笔记本电脑进入.它不是真正公开的,因为它需要SSH访问框才能到达.
当我在桌面上进行更改时,我的问题就出现了,我可以轻松地将更改推送到服务器存储库(我为该存储库上mirror的origin远程设置了标志),并且使用gitx我可以看到本地和远程状态看起来相同,并且每个我的个人提交已记录到服务器.
问题是当我切换到我的笔记本电脑时,我很少使用它,git存储库可能有几个提交服务器版本,需要更新.我开始使用git pull本地更改这些更改,但不是将服务器上的所有单独提交复制到本地存储库,而是向本地存储库添加一个新的"合并"提交,并gitx在此时显示在远程存储库分支中的合并.
是否有一个命令/工作流可以让我将本地存储库更新到远程存储库的确切状态(如果我这样做,git push --mirror没有数据会丢失)?我是否每次都要删除我的本地存储库,每次都要删除git clone它?
目前没有其他人需要访问此存储库,但将来它可能会成为人们从中拉出的公共存储库,因此不会破坏这种可能性的答案.
编辑:我的提交确实包括从主分支重新分支; 这可能是什么触发git pull命令显示为合并?是--rebase什么,我需要再国旗?
解决方案说明:事实证明我已完成以下操作来设置我的存储库:
由于这一个额外的提交是一个无意的新错误,它让我认为它永远是一个合并.根据Xentac的建议,我回去在笔记本电脑上发现我做了一个未被推送到服务器的合并,这是罪魁祸首,一旦我让所有三个真正同步,git pull --ff(只强制快进合并)工作得很好,并在进行合并之前警告我,如果某些内容不同步.
git ×1