理解git分支

时间:2014-10-01 14:49:20

标签: git branch

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

情景:

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

2)然后我决定做一个必须影响“实验”的更改(例如:将文件添加到.gitignore)  分支以及主分支或我将从主分支分支的任何未来分支。

在这种情况下建议什么?

在分支并提交--amend

之前,检查主分支上的最新提交

创建一个分支来做那个,然后与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方法从下面的一个答案再次做到了。由于“历史重写”这一点,它对我更有吸引力,通过查看分支图对我来说更有意义。我一直在这个项目上工作(到目前为止)。

2 个答案:

答案 0 :(得分:1)

不知道我是否理解你最后一段的内容。你有没有合并正确的方向?以下程序应该有效

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

您现在可以保留分支MaintainGitIgnore,也可以使用脚本自动更新忽略定义。

答案 1 :(得分:1)

您可以在将新.gitignore提交到主分支后使用rebase

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

这将更新experiment分支。

但是,如果你是唯一一个在这个分支上工作的人,请这样做。如果其他人也在工作,那么就会产生冲突问题。在这种情况下,我会合并master中的experiment分支。