博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git的几个小技巧
阅读量:5912 次
发布时间:2019-06-19

本文共 1969 字,大约阅读时间需要 6 分钟。

1、git撤销本地修改

Java

1

2

git reset --hard origin/master

git pull

2、git回退到前n个版本

如下为向前回退3个版本,git reset –hard HEAD~3

3、git多用户提交冲突一

场景:用户UserA修改了文件File1,用户UserB也修改了文件File1并成功merge到了服务器上,而UserA和UserB改动了同一个代码块,当UserA拉取代码时git无法merge此改动,就会出现如下错误提示,

error: Your local changes to the following files would be overwritten by merge: cn/trinea/appsearch/MainActivity.java
Please, commit your changes or stash them before you can merge.
这时
(1) 如果希望保存本地改动并拉下最新服务器代码,手动merge,使用命令如下:

Java

1

2

3

4

git stash

git pull

git stash pop

git diff -w cn/trinea/appsearch/MainActivity.java

其中git stash表示备份当前工作区内容到git栈中,并使当前工作区内容与上次提交时一致,然后git pull拉取最新代码,git stash pop表示从Git栈中读取最近一次保存的内容,恢复工作区的相关内容,最后git diff表示手动merge你之前冲突的文件

(2) 如果希望服务器上版本完全覆盖本地修改,使用如下命令回退并更新:

Java

1

2

git reset --hard

git pull

4、git多用户提交冲突二

场景:用户UserA提交了change A,没有merge,之后用户UserB提交了change B,merge成功。当merge change A时出错,会提示,

The change could not be merged due to a path conflict.

Please rebase the change locally and upload the rebased commit for review.

大多数人的解决方式都是拷贝改动代码,并重拉最新代码Beyond Compare,重新提交。其实几条命令就可以搞定,gerrit上先abandon原来的提交,后执行如下命令:

Java

1

2

3

4

git reset --hard HEAD~2

git pull

git fetch ssh://xxxx refs/changes/46/28146/1 && git cherry-pick FETCH_HEAD

git push gerrit:xxxxxx HEAD:refs/for/xxxxxx

其中git reset –hard HEAD~2表示本地代码后退两级,如果有问题可以多后退几次

git pull表示拉最新代码

git fetch 表示获取之前没merge成功的改动到本地,后面跟的具体地址为gerrit上该change review页面选择cherry-pick、ssh后的地址,如下图红线标识

git fetch
git push 跟平时push一样

5、git命令简化

(1) 简化git push命令

通常git push命令为git push gerrit:aaa HEAD:refs/for/bbb,其实可简化为git push。

编辑git库下的.git/config文件,在[remote "remoteName"]下添加两行

Java

1

2

pushurl=gerrit:aaa.git

push=HEAD:refs/for/bbb

以后提交只需要用git push即可。

(2) 简化git add *;git commit -a;git push命令,一步完成添加、commit、push

第(1)步配好后,你还可以将命令git add *;git commit -a;git push添加别名到系统path中,如下操作:

vim ~/.bash_profile,文件最后添加

Java

1

2

# add by trinea.cn for git simplify

alias gpush='git add *;git commit -a;git push'

source ~/.bash_profile

这样以后只需要gpush即可完成添加、commit、push,当然你也可以取其他的别名如gp、gitpush、gitp。

转载地址:http://bpqpx.baihongyu.com/

你可能感兴趣的文章
集成测试
查看>>
[android] 手机卫士黑名单功能(列表展示)
查看>>
c3p0连接池配置
查看>>
对于I/O流中解压中遇到的问题
查看>>
问答项目---用户注册的那些事儿(JS验证)
查看>>
Android进阶篇-百度地图获取地理信息
查看>>
返回前一页并刷新页面方法
查看>>
2.3 InnoDB 体系架构
查看>>
linux系统配置之单一网卡配置多个不同网段IP(centos)
查看>>
.erb 中不能显示从mysql检索出的中文 incompatible character encodings: UTF-8 and ASCII-8BIT...
查看>>
51nod 1831: 小C的游戏(Bash博弈 找规律)
查看>>
使用filezilla连接树莓派失败
查看>>
[数分提高]2014-2015-2第5教学周第2次课讲义 3.2 微分中值定理
查看>>
Clr静态数据Table-Valued函数
查看>>
转:一个基于互联网医疗的创业公司,三年是一个收获
查看>>
How to effectively work with multiple files in Vim?
查看>>
Android 中文API (70) —— BluetoothDevice[蓝牙]
查看>>
不定宽高垂直居中分析
查看>>
ibatis中使用like模糊查询
查看>>
Scrum三头猪
查看>>