理解git分支

理解git分支,git,branch,Git,Branch,我有一个关于Git的新手问题 情景: 1) 我在一个项目中创建了一个“实验”分支 2) 然后我决定做一个改变(例如:将文件添加到.gitignore),这一定会影响“实验” 分支机构以及主分支机构或任何我将从主分支机构分支的未来分支机构 对这种情况有什么建议 在分支之前签出主分支上的最新提交,并使用--amend提交 创建一个分支来完成这个任务,然后与master和实验分支合并?当我尝试这样做时,我将“实验”分支上的所有内容应用到主分支上,并丢失了大量文件。我现在很困惑。。。任何帮助都将不胜感激

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

情景:

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

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

对这种情况有什么建议

在分支之前签出主分支上的最新提交,并使用
--amend
提交

创建一个分支来完成这个任务,然后与master和实验分支合并?当我尝试这样做时,我将“实验”分支上的所有内容应用到主分支上,并丢失了大量文件。我现在很困惑。。。任何帮助都将不胜感激

更新

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

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

所以我用了:

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

然后,我用下面的一个答案,用重定基址的方法再次“解开”了它。它更吸引我,因为“历史重写”的事情,通过查看分支图,这对我来说更有意义。到目前为止,我一个人在做这个项目。

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

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
现在,您可以保留分支MaintaintGitIgnore,还可以使用脚本自动更新您忽略的定义。

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


切换到主分支
git add.git忽略
git提交-m“更新忽略列表”
git校验实验
git重基主控器

这将更新
实验
分支


但是,请仅当您是该分支机构的唯一工作人员时才这样做。如果其他人也在工作,就会产生冲突问题。在这种情况下,我将在
实验
中合并
主分支
一个。

最后一行的可能重复,如果我使用“git merge master”,我会得到相同的结果吗?如果且仅当没有其他分支合并到主分支。考虑处理issue0并自动打开热修复0,例如错误修复。修复后,将hotfix0合并到master,然后签出分支issue0并继续常规工作。这就像Git SCM参考中的一个例子,你的意思是我不需要创建一个新的分支吗?那太好了!就像我想做的那样,好像在将master分支到“实验”之前在历史中插入了一个commit。但是,通过查看源代码树中的分支图,似乎只有一个分支,只有一种颜色(尽管两个分支“master”和“experience”都在那里,并且与各自的提交正确关联)@zok,您仍然必须创建
experiment
分支。你可能在图上看到了,因为最后一次提交在这两种情况下都是一样的。是的,就是这样。