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