git实战中的一些tips

1,查看差异

git diff

git diff head^ head 查看最近两个commit之间的差异 老版本在前,新版本在后

head^ 前一个版本
head^^ 前二个版本
head^^^^^^ 依次类推
有更快捷的方法 head~5 前5个版本

2,将暂存区的多个功能代码分成多次提交

git add -i 进入交互模式
输入3 进行revert,选择需要撤销的文件
输入7 进行退出

3,开发到一半的时候,切换到bugfix分支

jira 缺陷跟踪系统

stash功能,将工作区修改的的代码,全部暂存起来
git stash 保存起来
git stash list 列出保存起来的代码
git stash apply 开始恢复代码
git stash apply stash@{0} 恢复到指定的一次stash

4,修改上一次commit的备注信息

git commit --amend 只能修改最后一次

5,对历史提交进行修改

git rebase -i HEAD~5 调整最近5个commit
–在编辑状态将pick改成edit
然后就可以输入 git commit --amend 进行备注修改
修改完成之后,输入 git rebase --continue 就可以修改下一个
–在编辑状态将pick改成sqush
可以将多个commit合并,但需要多包含一个

git reset HEAD^
可以将该commit 分拆成2个commit

6,对** 本地 **刚提交的修改、暂存、提交进行撤回

git reset --hard HEAD
命令 git reset HEAD 等价于 git reset --mixed HEAD
执行完命令后,再人工调整一下
代码已经提交后,执行以下命令进行撤回:
git reset --hard HEAD^ 撤回上一个版本
git reset --hard commit标识符 撤回某一个版本

7,如何撤销远程和本地的分支合并请求

(1)git revert -m 1 HEAD
(2)git push origin master

但是这里有个坑,在此之前合并的其他分支,例如release,也需要revert一下,要不然git会犯傻的认为代码已经包含了之前的分支代码,所以需要特殊处理,再次在本地执行:git revert HEAD,git push origin master。原因:再次将master还原到指向一个新的commit,该commit的内容与上一次merge后的那个commiti一样,包含merge的内容

额外知识:
git merge --abort #合并到一半,想取消,执行这个操作

8,查找哪一个分支引发了线上bug

git bisect bad #标记这个commit有bug
git bisect start #开始二分查找

9,submodules 与 subtree

submodules 和 rebase 相对来说都是比较高阶的使用
submodules是在项目下面的子项目,
git submodules init
git submodules update --remote SUBNAME

git 后期版本升级,引入了subtree功能,官方是推荐subtree。subtree相对submodules来说更简单点
git subtree add --prefix=用来放Sub项目的相对路径 sub项目的git地址 xxx分支

实际使用中,不太推荐,会导致版本管理混乱

10, 团队拆分,迁移项目时如何简化历史提交记录

git rebase --onto commit版本1 commit版本2

11,将新版本v1.2提前到v1.1之前上线

git cherry-pick commit号#

额外知识:
git remote remove origin #移除远程链接库
git remote add origin 项目git地址 #增加远程链接库
git branch -d 分支名 #删除分支,如果有未merge的,将删除不了
git branch -D 分支名 #强制删除分支,不管有没有merge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值