我在usb存储上使用git bare repo作为不同位置之间工作的传输机制。我通过以下方式启动了USB存储:
git clone --bare / path / to / clone
问题是如何刷新克隆(即获得新克隆的等效结果)而不删除旧克隆并进行新克隆。
由于以下原因,仅仅执行git-fetch是不够的:
第一个问题可以通过以下脚本解决:
git fetch --prune origin -- \
`git ls-remote -h origin | while read sha ref; do echo "+$ref:$ref"; done`
(参见:http://git.661346.n2.nabble.com/How-to-fetch-all-remote-branches-from-remote-td3380849.html)
但第二个问题怎么解决?如何清除遥控器上不再存在的提交?
答案 0 :(得分:1)
git gc
将清除任何无法访问的提交。
看起来你在usb挂载的目录中运行命令。如果是这种情况,那么我建议您采取不同的方法。使用工作目录中的git push
更新usb存储库,并将git pull
移动到其他计算机时。这将确保在usb存储库中确保所有内容都是最新的。不要在安装usb的目录中运行任何东西。
顺便说一句,git fetch
应拉入新分支。如果不是那么就会出现其他问题。
答案 1 :(得分:1)
不使用--bare
切换进行克隆,而是使用--mirror
个。{
然后git fetch
将完成这项工作。
答案 2 :(得分:0)
git fetch
会获取新分支。
作为替代方案,从您的工作/主要仓库为您的裸仓做git push
。