繁体   English   中英

了解git分支

[英]Understanding git branching

我有一个关于Git的新手问题。

场景:

1)我在项目中创建一个“实验”分支

2)然后,我决定进行更改(例如:将文件添加到.gitignore),该更改必须影响“ experiment”分支以及master分支或将来会从master分支分支的任何将来分支。

在那种情况下有什么建议?

在分支之前检出master分支上的最新提交,并使用--amend提交?

创建一个分支来做到这一点,然后与master和实验分支合并? 当我尝试执行此操作时,我将“实验”分支上的所有内容都应用到了master分支上,并且丢失了很多文件。 我现在很困惑...任何帮助将不胜感激

更新

发生了什么(我在上面的最后一段中无法解释):

实际上,我已经将'hotfix'分支(提交了.gitignore)合并到了'experiment'分支中,然后将其从master合并(在'experiment'分支上我删除了一堆文件)。

所以我用了:

git checkout master
git reset —hard [hash for the previously last commit on master]
git branch -d hotfix
git checkout -b hotfix (now from master)
git add .gitignore
git commit -m “add .gitignore”
git checkout master
git merge hotfix
git checkout experiment
git merge hotfix
git branch -d hotfix

然后,我有点“撤消”了,然后使用rebase方法从以下答案之一中再次进行了此操作。 由于“历史重写”,它对我更具吸引力,通过查看分支图,这对我来说更有意义。 我目前(一个人)正在从事这个项目。

不知道我是否理解您上一段的内容。 你在正确的方向上合并了吗? 遵循以下程序应该起作用

git branch MaintainGitIgnore
git checkout MaintainGitIgnore

//manipulate .gitignore file
git commit -a .gitignore -m "Ignoring new files now"

git checkout master
git merge MaitainGitIgnore

git checkout experiment
git merge MaintainGitIgnore

现在,您可以保留分支MaintenanceGitIgnore,并且可以使用脚本自动更新忽略的定义。

在将新的.gitignore提交到master分支后,可以使用rebase

git checkout master git add .gitignore git commit -m 'Updates ignore list' git checkout experiment git rebase master

这将更新experiment分支。

但是,请仅在您是该分支机构的唯一人员时才这样做。 如果其他人也工作正常,则会产生冲突问题。 在这种情况下,我将合并master分支到experiment一中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM