您的位置:首页 > 编程语言

【Git/Github学习笔记】Git常用命令(代码冲突二)

2016-08-01 09:41 621 查看
 代码冲突二:总结一句话 就是(新功能实现还未完成,之前完成的部分又出现了新的问题需要修复),如何既能修复bug,又不让写的新任务代码丢弃的问题。

 上一节中我们解决了多人协作代码冲突的问题,这一节要讲解另外一种冲突解决:有这样一种场景,今天老板给我安排了一个新的项目,我们昨天的代码已经提交到github上了,今天我们需要干一个新的事情,但是在干这个新的事情的过程中,我们之前的项目出现了一个紧急的错误需要我们修复,那么我们怎么处理当前处理的任务代码呢?我们不能把它丢弃掉,但是如果不丢弃直接更新到线上,因为没有经过测试,会有很多的问题。

   我们用git stash命令解决这一个问题。git stash能够对当前的工作区的代码以及暂存区的代码进行保存。stash像一个堆栈,我们可以对他多次推送,相当于入栈的操作。stash还有另外几条命令。

git stash list
 列出所有保存的记录列表。就是推送多次到stash里面,它都会帮我们存储。



以下参考:http://blog.csdn.net/wh_19910525/article/details/7784901 比教程中所讲的更加容易理解。

//*****************************************

git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码(远程抽取最新的代码), 又不想加新commit(所以将当前的工作区保存住),或者另外一种情况,为了fix 一个紧急的bug,  先stash,
使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作(这种情况用到的比较多,也比较好理解),这段文字比较好理解,比视频中的好理解。

$git stash
$do some work
$git stash pop
进阶:

git stash save "work in progress for foo feature"


当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑。

git stash list’ 命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash
clear
’来将栈清空。
git stash          # save uncommitted changes
# pull, edit, etc.
git stash list     # list stashed changes in this git
git show stash@{0} # see the last stash
git stash pop      # apply last stash and remove it from the list
git stash --help   # for more info
//***********************************************


最原始的程序为:



新任务的程序为:


现在最原始的程序出现了紧急bug需要修复,所以使用了git stash保存当前的工作区,执行完该命令后,程序重新变为了最原始的程序(没有任何新任务(功能)的代码痕迹):

然后我们修复了bug(这个bug的修复我们用定义新的变量程序代码来模拟),如下图:



将修复完之后的程序推送到github上,我们需要继续完成我们未完成的新任务,使用git stash pop返回之前保存过的工作区,这时,恢复的版本和修改bug之后的版本会出现冲突,如图:



修改程序,解决冲突,完成新功能后就可以重新提交到github上了,这样我们既解决了之前老程序存在的问题,有保存了完成新任务和新功能所为而未完成的程序,冲突解决之后,就可以完成新的功能了,并进一步的提交了



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git github 冲突解决