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_b , git 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来帮助做什么。 
上一篇: Git delete branch and all corresponding changes
下一篇: Can I send changes of git staged area for code review (to any code review tool)?
