在我的公司,我们有一个基础软件,可以为每个客户定制.今天使用SVN,我们有这样的设置:
/trunk
/tags
…
/branches
/client_project_x
/client_project_y
/client_project_z
Run Code Online (Sandbox Code Playgroud)
如何用git组织这个最好的方法?为每个项目创建一个远程存储库,为基本代码创建一个远程存储库,或者拥有一个包含多个分支的大型远程仓库
如果我们使用带有多个分支的大型远程仓库,有一种方法可以从远程存储库中克隆一个分支吗?
我有两个本地分支 A 和 B 跟踪同一个远程分支 C。我想保留所有分支,但我想删除连接 A -> C 但保留连接 B -> C。我该怎么做?
假设git branch -a输出如下:
粗体是远程存储库中的那些分支(X,Y,Z),但我还没有检查它们,我什至不打算检查它们,它们与我不参与的项目有关。
是否有命令可以删除所有没有本地跟踪分支的远程分支(那些保存在 MY 存储库中的分支,而不是远程中的实际远程分支)?
编辑:我打算删除保存在我的存储库中的远程分支,显示远程分支的存在。我不想删除遥控器中的实际分支。
编辑 2:在对 mattmilten 的评论中澄清
您可以使用 重新创建所有远程分支git pull,但我并不总是git pull.
我经常只是git fetch origin master A B C然后合并或变基或做任何我想做的与分支主、A、B 或 C 的事情。
重点是,每当我“git pull”(出于某种原因)时,我不想要的所有分支都会被创建,而且似乎我没有简单的选择之后将它们删除。
我找到了很多关于将forked git存储库与原始远程存储库同步的q&a,但没有应用于我的确切问题.
让我们假设我分叉了一个远程名称为upstream的项目,我的fork的名字是origin.我在本地有一个master和一个dev分支,跟踪master和dev的起源.
只要我并没有改变我的分叉回购,我知道我可以同步我的分叉回购起源与上游/大师通过
git checkout master
git pull upstream master
git push origin master
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但现在我在我的本地dev分支上工作,一旦完成,我想将它合并到我的本地主人.但首先我会带我的本地主最新与变化上游通过
git checkout master
git pull upstream master
git push origin master
Run Code Online (Sandbox Code Playgroud)
第一个问题:这是正确的吗?但那么我将如何处理我的本地开发分支?变基在我的更新主合并到我的地方前主人或尝试没有基础重建合并呢?或者我应该一直尝试让我的本地开发人员与上游/主人同步,通过不时地拉入上游/主人?
一旦完成,我会的
git push origin master
Run Code Online (Sandbox Code Playgroud)
并删除我的开发分支,本地和原产地.但现在我的主人(本地和原籍)偏离了我的本地开发者所做的更改的上游/主人 …
我首先将仓库同步到分支名称 myBranch 的清单。然后我从中获取标签
git tag -l
Run Code Online (Sandbox Code Playgroud)
现在我想知道使用 git 作为 git tag -l 的结果获得的每个标签实际上是在哪个分支上创建的。请注意:我不希望 myBranch 作为输出,而是希望创建标签的远程分支名称。
我正在摆脱开发(紫色)分支并让所有子分支从master(在teal中)分支并合并到master.开发分支从硕士分支.如果还有尚未合并的开发子分支,那么在远程开发分支被删除后,它们是否可以在以后合并为master?叶子(芥末色)分支的命运是什么.

我想将远程分支(origin/featureX)的副本添加到我的本地存储库.
因此,我生成了一个本地分支featureX并将其设置为跟踪给定的远程分支:
git branch featureX
git branch -u origin/featureX featureX
# Branch featureX set up to track remote branch featureX from origin.
Run Code Online (Sandbox Code Playgroud)
现在有办法显示这种联系吗?我尝试过git branch -av,但是没有featureX和之间的联系remotes/origin/featureX.
我有一个有 1000 个分支的 Git 远程服务器,我想删除所有名称不以foo_. 有没有简单的方法可以做到这一点?
我们需要允许开发人员:
1)创建主题分支并将其保存在远程仓库中.
2)做出改变.
3)合并到'开发'分支.
4)删除主题分支(git push origin:TestRemoteBranch).
但我们宁愿禁止在使用RW权限的情况下使用非快进合并.但是这个权限也禁止删除主题分支.
有没有办法避免非快进合并并允许删除主题分支(不是'开发'和'主')?
如何将本地git repo中的所有远程分支都转换为本地跟踪分支,而不需要一一检查出来。
您可能想要这样做的一个原因(我想这样做的原因)是这样您就可以获取本地存储库的克隆,并在该新克隆中拥有来自原始远程源的所有分支。
因为“clone”只克隆本地分支。
编辑:已经提供了几个脚本化的答案(为此 - 谢谢!)......我真的希望有一种 in-git 方式,这样它是完全可移植的(我有“仅限 Windows”的用户,所以far 已经幸存下来,而不必使用 bash(git-bash 或其他方式))。
git ×10
remote-branch ×10
branch ×4
fast-forward ×1
git-branch ×1
git-push ×1
gitolite ×1
repository ×1
tags ×1