我正在尝试使用git作为在不同计算机之间工作时保持源代码最新的方法(我最初使用的是Dropbox,但这变得无法管理)。
根据我的理解,当您使用命令git pull
时,它将从远程存储库中获取任何更改,并将更改与本地存储库中的任何现有文件合并。但是,如果我的本地存储库中有冗余/过时的文件,它将不会自动删除它们。同样,如果我从本地存储库中删除文件并将更改推送到服务器,则服务器将不会删除该已删除的文件。
如何解决这个问题?什么是必要的命令?
谢谢!
答案 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
的最简单方法是强行重置工作目录以匹配遥控器。