Git 学习笔记(4)

Git stash

使用场景:使用git的时候,我们往往使用分支(branch)解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用git stash就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修Bug,等到修完Bug,提交到服务器上后,再使用git stash apply将以前一半的工作应用回来。

  • git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
  • 可以用 git stash save 来给 压人栈的记录起个名字
$ git stash save "stash_name"
  • git stash pop命令恢复之前缓存的工作目录,这个指令将缓存堆栈中的第一个stash删除,并将对应修改应用到当前的工作目录下
  • git stash apply命令,将缓存堆栈中的stash多次应用到工作目录中,但并不删除stash拷贝
  • git stash list 查看压人栈的临时提交
  • 移除某些临时提交, stash git stash drop命令,后面可以跟着stash名字
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
$ git stash drop stash@{0}
Dropped stash@{0} (364e91f3f268f0900bc3ee613f9f733e82aaed43)

在本地以某个远端分支为蓝本创建新分支,并切换上去

查看所有分支的名称
>git branch -av

> git checkout -b 本地分支名 远端分支名
eg 

> git checkout -b feature_A   origin/feature_A

这样最后直接推送,由于这里已经把分支关联起来了

git push就 ok了


当不同人的人修改了不同的文件/ 当不同人的人修改了相同文件不同部分

一种做法:在本地分支上,执行合并流程
先把远端的数据拉取下来,git fetch不会影响当前分支的未提交数据
>git fetch
然后和最新远端数据进行合并
>git merge 远端分支名

另一种做法:
如果在进行git push之前发现远程又有了更新,比较好的做法应该是,将本地的提交回退掉,避免掉无用的远程merge本地分支的提交记录,可以使用如下命令:
1.git reset HEAD~
2.git pull
然后重新进行新的提交,这样就可以避免掉远程与本地分支的merge提交记录,让git的提交历史更加干净

修改了同一行数据

后提交的人执行了 git pull,git会自动将代码进行合并(merge),如果修改的是同一行代码,那么会自动合并失败
需要手动合并,然后 git add /git commit ,最后推送到远程分支上

个人感觉 git pull = git fetch +git merge

不能使用的git 命令

  • git push -f 分支名 会造成远程分支的数据强制与本地分支相同
  • 不要在团队协作的主分支上,进行rebase操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值