冻结Git分支

时间:2012-06-12 12:01:22

标签: git branch git-branch

假设我有一个开发分支。我从中创建了一个功能分支来开发一个功能。一旦开发了该功能,它就会合并回到开发中。非常像这里显示的那样:

enter image description here

有没有办法可以冻结功能分支,以便不再进行提交?

不直接删除分支的原因是查看历史记录仍然可以显示功能分支,如果需要对功能进行调整,则有人可以从该功能创建新功能分支。最后一次提交上一个功能。

5 个答案:

答案 0 :(得分:16)

克里斯托弗是对的,标记会帮助你做到这一点。我建议删除分支名称,以使某人更难以签出分支并进行编辑。

首先,将分支合并到develop

git checkout develop
git merge --no-ff feature_1 

然后结帐分行

git checkout feature_1

然后创建一个带注释的标签。

git tag -a -m "Freezing a feature branch that fixes.." feature_1_frozen

然后删除分支

git checkout develop
git branch -d feature_1

执行此操作后,您将无法按名称签出分支。相反,您将能够按名称签出标签,这将使您进入一个分离的头状态,这将阻止对代码的更改。

现在包装并与原始同步...

推送更新和新标记

git push --tags origin develop

删除远程功能分支

git push origin :feature_1

答案 1 :(得分:8)

只需标记即可。

git tag -a frozen -m "Feature branch frozen here."
git push <remote> frozen

当然,有人可以稍后来到分支机构,但标签不应该改变,除非它被强行覆盖。如果您担心,可以配置遥控器拒绝强制推送,或even sign the tags with a GPG key to ensure authenticity.

在冻结功能分支时获取功能分支的状态就像git checkout frozen一样简单。开发人员可以使用一个命令随意分支:git checkout -B <new_branch> frozen

答案 2 :(得分:2)

您可以使用 gitolite gerrit 等内容来访问分支,标记和存储库中的访问控制和权限。

看看这里:

答案 3 :(得分:1)

答案 4 :(得分:0)

我正在使用“Git Bash”控制台冻结分支:

没有Git Bash?

以下是如何安装和使用Git Bash控制台:

参考:

https://github.com/msysgit/msysgit/releases/

https://help.github.com/articles/set-up-git/

如何冻结分支

git checkout {branch-to-keep-alive}
git merge --no-ff {branch-to-freeze} 

如果git请求合并消息,请键入它,然后使用[Esc]键,然后键入“:wq”命令保存并退出。

您必须前往visual studio并确保您可以成功构建解决方案(使用{branch-to-keep-alive})。

git checkout {branch-to-freeze} 

git tag -a -m "{your-description}" {tag-for-the-branch-to-freeze}

约定:创建如下标记:{branch-name} _frozen

git checkout {branch-to-keep-alive}

git branch -d {branch-to-freeze} 

git push --tags origin {branch-to-keep-alive}

git push origin :{branch-to-freeze} 

如何将分支与master合并:

git checkout {your-working-branch} 

Git merge master

打开vs并解决合并冲突(如果有)。总是重建一切。

git checkout master
git merge development

现在不会有任何冲突,一切都准备好了。

Git Bash控制台:

enter image description here