一、如何保持一个干净的分支
当执行命令 git checkout develop 切换到develop分支时,如果之前的分支对文件有修改,也会将修改的文件信息带到develop分支上来。怎么干净地切换到develop分支?
方案一:git reset HEAD -- hard
方案二:git stash
方案三:git commit
场景描述
当前分支:alanchen。
在alanchen分支上修改了几个文件,如,A、B、C。
切换到develop分支时,A、B、C这三个文件的修改也会带过来。用 git status 查看,可以看到A、B、C这三个文件有修改。
1. 方案一适用场景
想切换到develop分支时是干净的,如果这些修改不再需要,可以直接丢弃的话,采用这种方案。
//执行以下命令 git checkout develop git reset HEAD --hard //特别注意:alanchen分支上A、B、C的修改也没有了
2. 方案二适用场景
如果这些修改还需要,只是想临时切换到develop分支,那么采用第二种方案。
git stash git checkout develop
3. 方案三适用场景
如果是同时开了两份分支在开发,在当前分支上的修改都需要保留,希望切换到另外一个分支去开发,那么采用第三种方案。
#添加到git版本库 git add . #提交 git commit -m "message" #切换分支 git checkout develop
二、git stash详解
当你在git分支中改代码时,接到任务需要修复一个bug,你需要在当前分支外新建一个分支来处理bug,当然不能把你刚才写的代码带到那个分支,因为你做的新功能还没测,更不能提交。所以你需要git stash命令暂存修改(git stash帮助开发人员暂时搁置当前已做的改动,倒退到改动前的状态):
#暂存 git stash save "备注" #查看stash情况 git stash list
当你修完bug想要继续写你的新功能时,就需要git stash pop(前提是你的stash在栈顶,git stash会将你的修改压入一个栈中,你如果git stash暂存了很多次,你需要指定pop版本,可以使用git stash apply [email protected]{1})。其中[email protected]{1}是啥?你可通过git stash list查看到[email protected]{1}是你stash内容的版本。
注意:并不是每次git stash都要先git add .的。当你的修改的都是原有文件,那是不需要在git stash之前进行git add 操作的,但是如果你所作的修改涉及到了本次才新建的文件,那么此时git stash之前是要做git add .的。因为新建的文件还没有进入版本控制库,需要add操作才能将新建的文件添加进库。如果在你新建之后直接git stash,未作git add .操作。那么新建文件将仍然保留在工作区,进栈内容不包含新建的文件。
当需要拉取远端文件,但又不想提交正在修改的文件时,可以使用git stash 命令将当前的工作区保存(藏匿)起来,等pull 完后再还原。
#暂存修改工作区 git stash #拉取远端文件 git pull #将工作区还原 git stash pop [email protected]{0}
如果还原工作区的文件与pull 下来的文件有冲突,要手动修改冲突
当然,我们可以删除git stash的内容:
#注意这是清空你所有的内容 git stash clear #这是删除第一个队列 git stash drop [email protected]{0}
原文地址:https://www.cnblogs.com/myitnews/p/11816177.html