添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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,使用命令如下:

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

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

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原来的提交,后执行如下命令:

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 push 跟平时push一样

5、git命令简化

(1) 简化git push命令

通常git push命令为git push gerrit:aaa HEAD:refs/for/bbb,其实可简化为git push。
编辑git库下的.git/config文件,在[remote "remoteName"]下添加两行

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

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

  • (395,912) Android 开发助手功能及版本介绍
  • (167,262) Android自动滚动 轮播循环的ViewPager
  • (163,707) Android利用Fiddler进行网络数据抓包
  • (154,994) Java(Android)线程池
  • (133,304) Android系统下载管理DownloadManager功能介绍及使用示例
  • (128,688) Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
  • (124,850) HashMap循环遍历方式及其性能对比
  • (112,996) Android 插件化 动态升级
  • (100,533) Android利用tcpdump和wireshark抓取网络数据包
  • (96,389) 阿里集团、蚂蚁金服 2023 年北上广深杭招聘 Android(iOS) 工程师、高级工程师、架构师
  •