Git - 将克隆的变化拉回到主服务器上

时间:2008-11-13 14:03:57

标签: git version-control

我克隆了一个Git master并对该克隆进行了很多更改。我已经在克隆上提交了这些更改,现在希望主文件成为克隆内容的副本。

我已经尝试使用Git推送克隆将更改推送到主服务器 - 但我没有更新主服务器。

如何让母版制作克隆版内的精确副本?更新克隆并与克隆主同步的命令工作流程是什么?

3 个答案:

答案 0 :(得分:6)

有两种git存储库,裸和非裸。非裸存储库是任何具有“工作副本”的存储库,即当前已检出的存储库的某些部分。

可以推入非裸存储库,但即使签出的分支与你推送的分支相同,它也不会更新签出的工作副本。这是因为签出的副本可能有未提交的更改,并且git不会在没有您明确询问的情况下销毁更改(通常这些命​​令具有--hard参数)

阅读Why won't I see changes in the remote repo after "git push"?How would I use "git push" to sync out of a firewalled host?以获取问题的完整描述和可能的解决方案。警告,如果你已经进入远程仓库,那么远程仓库中任何未提交的更改都将被丢弃。

一般来说,听起来你想要的方法并没有被gitters真正采用,因为它并不真正匹配分布式存储库的心态。确保您的回购副本是最新的,这是您自己的责任。

答案 1 :(得分:5)

如果您已经创建了可以从主服务器轻松访问的自己的克隆,那么您可以轻松地将更改从克隆中提取到主服务器中。只是:

git pull /path/to/clone

这会将克隆的HEAD中的更改提取到master的HEAD中。

另一种常见情况是克隆位于另一个网络上或者无法直接从主服务器访问的内容。在这种情况下,您可以使用以下之一:

  • 克隆推送到的公共存储库,主服务器从(例如github或仅在某个裸存储库中提取)
  • git-bundle将一组更改作为文件移动
  • git-format-patchgit-am通过电子邮件发送更改

答案 2 :(得分:2)

我喜欢Gareth和Greg的答案。我只是补充一点,我发现使用裸存储库与其他人同步工作真的很方便。这允许任何人将他们的更改(包括分支)推送/拉到裸存储库,然后其他人可以按照他们认为合适的方式获取/拉取/合并。这与拥有单个中央存储库不同,因为每个克隆都是一个成熟的存储库。