# Git运用场景
#### 场景一:
? 当你正在写代码的时候突然线上服务器出现了个bug,这时候你不得不赶快处理线上的bug。一般我们会将正在写的代码,git add, git commit 一下,再切换到bug分支解决bug。解决完成以后git commit bug分支的代码。在切换回来。除了这样的操作,我们还有一种可选方案:
1.正在写东西,突然有bug需要解决。
git stash #将当前的代码放在一个新的临时区/暂存区。以免带入其他分支。
git checkout bug #切换到bug分支
vim views.py #修改代码,解决bug
git add views.py #添加修改内容到暂存区
git commit "change_bug" #提交代码到本地仓库
git checkout master #切换都master分支
git merge bug #将bug分支的修改后的代码合并到master上
git push origin master #将本地master分支的代码推到远程
git checkout dev #切换到修改代码前的分支(原来的代码在dev分支上写的)
git status #查看dev分支的状态,发现原来对代码的修改没有了(写了半天,没有保存,心里很慌有没有啊。。。)
more readme #查看更久远的操作,发现依然没有。(这是真的有点慌,甚至有点小绝望啊)
git stash list #查看临时保存的文件列表(我擦,找到了,过山车般的体验)
git stash apply #恢复到上次保存的位置(终于找到你,还好我没放弃)
git status #查看状态,发现一切和好如初(这个世界完美了。可以继续愉快的写代码了)
git stash的一些其他操作:
git stash drop #删除最久的那个使用了git stash 保存的临时状态
git stash apply stash@{0} #恢复到指定的那个临时状态
git stash pop #恢复并删除上一个临时状态
(ps: 1.git stash apply 恢复后,stash内容并不会删除,需要使用git stash drop 来删除
2.另一种方式是使用git stash pop, 删除的同时把stash的内容也删除了)
#### 场景二:
多人合作开发,最后把所有人的代码合并到一起,然后测试并推到master中:
git add * git commit "success" #将完成的代码添加到本地仓库,等待合并
checkout maste #切换到本地master分支
git pull #将远程master分支的代码下载到本地
git merge dev #将本地dev中开发的代码合并到master中(这时候发现有冲突。自己的代码和master里最新的代码有不一致的地方,不要慌,我和别人同时修改了原文代码导致的这种问题。下面需要进行手动合并。)
git status #查看文件状态,看都有哪些文件有冲突
git diff views.py #查看文件冲突的具体情况
vim views.py #手动修改文件
git add views.py git commit "change_merge" #添加到本地仓库
git push origin master #推送到远程master分支