【发布时间】:2011-01-18 10:47:51
【问题描述】:
更新:我认为这与 windows git 客户端 msysgit 的问题有关。很抱歉给大家添麻烦了。 http://code.google.com/p/msysgit/issues/detail?id=379&colspec=ID%20Type%20Status%20Priority%20Component%20Owner%20Summary
我正在寻找一种方法来使多个客户端框与远程 git 存储库保持同步。强制从远程存储库进行更新并放弃客户端框上可能已更改的任何内容。
我遇到的问题是客户端框会修改一些文件(安装日志等),并在我需要从远程存储库更新它们时给我一个合并噩梦。我尝试了几个命令来尝试重置它们的本地更改(应该放弃本地更改),但似乎没有一个像宣传的那样工作(git reset --hard)。
我不想克隆然后删除这些框上的 .git 目录,因为我希望它们只更新更改而不是每次都拉下整个 repo。
有什么想法吗?
【问题讨论】:
-
您是说
git reset --hard不会将您的本地树恢复到最新版本 (HEAD)? -
客户端是否修改了文件的权限及其内容?如果是这样,“git reset”可能不会覆盖它们,具体取决于您运行的平台。
-
是的,在运行 git reset --hard 后,我仍然看到一堆修改过的文件(通过 git status)。这些客户端机器是 windows 盒子,我正在使用 msysgit(最新)。
-
@Dave:我看到你(可能)找到了问题,这是一个 msysgit 错误。我建议你在 Cygwin 下使用 Git 代替?如今,它实际上在大多数操作中运行得相当快,并且是在 Windows 上运行 Git 的“官方”方式。不言而喻,这个 bug 在 Cygwin 的 Git 中不存在。
-
@Dan:我很少使用 Windows 机器,这只是这个特定项目的要求,所以我选择了一个快速的解决方案,让我们的测试客户及时了解我们的变化.我不确定这是一个 msysgit 问题,但似乎更像是一个 git + windows 时间戳问题。我会尝试使用 cygwin 或 rsync 解决方案。啊窗户,每次我碰到它,它都会提醒我为什么我一开始就避开它。
标签: git merge copy repository clone