下载远程/上传区域存储库并删除任何过时的文件

时间:2011-12-20 15:13:09

标签: git

我正在尝试使用git作为在不同计算机之间工作时保持源代码最新的方法(我最初使用的是Dropbox,但这变得无法管理)。

根据我的理解,当您使用命令git pull时,它将从远程存储库中获取任何更改,并将更改与本地存储库中的任何现有文件合并。但是,如果我的本地存储库中有冗余/过时的文件,它将不会自动删除它们。同样,如果我从本地存储库中删除文件并将更改推送到服务器,则服务器将不会删除该已删除的文件。

如何解决这个问题?什么是必要的命令?

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用git clean删除这些文件。请参阅man-page了解选项(或git help clean)。

答案 1 :(得分:1)

您应该使用裸设备在不同的存储库之间进行通信。拉出非裸露是可以的,但推送到这样的回购可以是皇家PITA - 好吧,不,它皇家PITA:对于一个,你不能推默认情况下检出分支。

要创建裸设备,请选择要放置它的目录并执行:

git init --bare /path/to/repo

然后,在您的所有存储库中添加此遥控器,我们称之为bare

git remote add bare user@machine:/path/to/repo

选择您的参考存储库,将主分支推送到它:

git push bare master

然后将所有存储库推入其中,在专用分支或甚至命名空间下。例如,对于机器host1上的存储库:

git push bare master host1/master

同样适用于host2等。选择适合您的命名约定。冲洗,重复所有主机和分支 - 如果你有它们甚至标签。

然后根据需要推送/拉出。

对于更长期的解决方案,我建议您使用gitolite如果它是为您的发行版打包的,或者您安装并配置它:它是具有类固醇访问权限的git,您可以真正做到很多。

答案 2 :(得分:0)

执行git pull然后执行git reset --hard的最简单方法是强行重置工作目录以匹配遥控器。