Git命令同步远程分支和本地分支



是否有同步远程和本地分支的命令?

例如,我从remote中删除了几个分支,这些分支使用命令git remote update --prune不再有用。现在我已经在本地删除了这些分支。

如果不存在同一分支的远程副本,是否有删除本地分支的命令?

git fetch --prune应该做您想要做的事情。

Git中没有用于此任务的内置命令。你必须用你喜欢的语言写一个剧本。我会使用Powershell,但你总是可以把它转换成一些花哨的*SH一行。

试验台

脚本:gist.github.com/tkirill/7c14331de4da814069af。确实如此:

  1. 创建具有两个分支的repo test-repo:分支1和分支2
  2. 将repo克隆到test-clone,然后转到该克隆并签出所有分支。最后一步有效地创建了相应的本地分支
  3. 删除原点上的分支branch1branch2
  4. 把你留在test-clone

正在删除分支

脚本:gist.github.com/tkirill/0f0f1902eb0c0723582。确实如此:

  1. 获取本地分支
  2. 获取没有远程名称的远程分支
  3. 删除远程上不存在的每个本地分支

运行实验

.test-rig.ps1
..remove-local-branches.ps1

最后一个命令的输出显示branch1branch2都被删除:

Removing branch branch1
Deleted branch branch1 (was ab1575a).
Removing branch branch2
Deleted branch branch2 (was c9a24c2).

但这还没有结束

如果您想要一个通用的解决方案,那么编写这样的脚本可能非常棘手。例如,脚本从所有远程获取分支,而不仅仅是从原点获取分支。您可能只想使用原点。

但从我的角度来看,主要问题是它可以删除未合并的地方分支机构。

仅删除合并的分支

我认为这正是你真正需要的。合并的分支没有什么用处。有很多脚本和别名在做这项任务,因为这真的很常见。选择你最喜欢的:)对于Windows,我为posh git写了相应的扩展。

最新更新