Git删除分支和所有相应的更改

我是一个新手,在创建/删除分支方面领先一点,并想找出正确的过程。 基本上,我开始了一个新的分支( branch_a ),然后做了一些改变。 然后我决定测试一个第三方软件包,知道它可能无法正常工作。 在这一点上,我在分支A中进行了一些改变,但我没有分阶段或提交。 我继续检查一个新的分支( branch_b )。 我玩弄了这个“测试分支”,然后决定删除它。 首先,我完成了对原始分支的检查:

git checkout branch_a

然后,我删除了分支,认为我所做的所有更改都会被删除:

git branch -d branch_b

所以分支被删除,但是当我回到branch_a继续从离开的地方开始工作时,我发现我在branch_b中所做的更改仍然存在。 由于我之前没有提交任何内容,因此我无法弄清楚如何分隔pre- branch_b和post branch-b的更改。 这仍然是可能的吗?

就“流程”而言,是否有更好的方式来创建和删除测试分支? 例如,我应该使用git reset --hard


我会猜想发生了什么事。

您在branch_a进行了更改。 你没有提交。 你签出了新的分支branch_b ,做了一些东西,没有提交。 现在您切换回branch_a 。 git的确可以让你继承一个肮脏的工作目录。

清理它(假设我的猜想是正确的)

为了清理你的垃圾,执行git status 。 你需要git add所有你想为branch_a的项目。 然后执行一个git commit来保存你在branch_a想要的branch_a 。 请注意,它只提交您添加到舞台的项目。

现在你可以自由地回到branch_bgit add你想要的东西,并且承诺。 git status有很好的帮助文本来帮助你。

我推荐的工作流程

你在branch_a工作。 你有个想法去尝试一些不同的东西。 如果您认为您将在15分钟内回到branch_a ,请执行git stash save <message> 。 这使branch_a东西分开。 如果你要更长时间,只需提交。 不要担心,您可以稍后使用交互式底图对其进行清理: git rebase -i 。 徘徊有点让人讨厌,你可能会意外地删除它们,或者在你不想要的时候弹出它们。

现在回到master ,并创建branch_b 。 我最喜欢的方式是all-in-one命令git checkout -b branch_b 。 现在你可以在那里工作。 完成实验后,再次储存或提交。 请记住,只要你不推动,你就可以提交给你,然后用交互式重新分配来清理它。

检查branch_a并继续在那里工作。 如果你收藏了某些东西,请打开藏匿处: git stash pop 。 否则你承诺,它已经在那里等着你。


使用gitk --all查看哪个分支当前指向哪个提交。

如果你没有提交你的修改,git不知道你的修改。

使用git status来检查工作树中的文件是否与已知的git不同。 它也会告诉你如何改变它。

在更改分支之前,请确保您提交更改(让当前分支知道您的更改)或放弃更改。 切勿以未提交的更改更改分支。

它也将有助于为你的shell配置一个好的git提示符。 对于bash,你可以使用类似于:

PS1='[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[31m]$(__git_ps1)[33[00m]$ '
GIT_PS1_SHOWDIRTYSTATE=yes # show changed files as `*`
GIT_PS1_SHOWUNTRACKEDFILES=yes # show new files as `%`
GIT_PS1_SHOWSTASHSTATE=yes 
GIT_PS1_SHOWUPSTREAM=auto

如果你设置为以这种方式提示,只需确保它在更改分支之前不显示*% 。 如果它确实使用git status来帮助做什么。

链接地址: http://www.djcxy.com/p/26093.html

上一篇: Git delete branch and all corresponding changes

下一篇: Can I send changes of git staged area for code review (to any code review tool)?