git的几个小技巧

简介:

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。

目录
相关文章
|
机器学习/深度学习 Shell Linux
常用 Git 使用技巧,收藏了~
只有在遇到问题的时候,才体会到技巧带来的好处! 常见企业工作流程 主要介绍,企业中常用的 Git 工作流程!
常用 Git 使用技巧,收藏了~
|
安全 Java Unix
高富帅们的Git技巧
Git是一个分布式版本控制系统,拥有许多神奇而易用的特性(比如:分支),这让它可以轻松适应各种工作流程。这篇文章不涉及Git的基本使用,而是介绍了一些高级却有用的小技巧。让我们一起来看看高富帅们的Git技巧,准备好逆袭吧!
392 0
|
网络安全 开发工具 git
|
应用服务中间件 开发工具 git
git常用技巧
一般的过程:①如果还没有库先用 git clone 克隆一个库。②使用 git checkout master切换到master分支。③使用 git pull 同步远程master分支(即git fetch + git merge,可用git pull -rebase避免merge垃圾提交信息)。
1156 0
|
10月前
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
2571 15
|
安全 开发工具 git
git的常用操作命令
git的常用操作命令
699 57
|
人工智能 前端开发 Java
用git rebase命令合并开发阶段中多条commit提交记录
通过 `git rebase`,可以合并多个提交记录,使开发历史更简洁清晰。操作分为 6 步:查看提交历史 (`git log --oneline`)、设置需合并的提交数 (`git rebase -i HEAD~N`)、修改动作标识为 `s`(squash)、保存退出编辑、调整提交信息、强制推送至远程仓库 (`git push -f`)。此方法适合清理本地无关提交,但若有团队协作或冲突风险,需谨慎使用以避免问题。
2716 60
|
存储 项目管理 开发工具
Git常用命令及操作技巧
以上是Git的常用命令及操作技巧,尽管看起来有些繁琐,但实际上只要花费一些时间进行实践,您将很快熟练掌握。随着使用熟练度的提高,您会发现Git对项目管理和协同工作的强大帮助。
312 20
|
11月前
|
存储 缓存 开发工具
Git stash命令的详细使用说明及案例分析。
通过上述案例,我们看到stash命令能够在不丢失进度的情况下,帮助开发者临时切换开发上下文,这在处理多个任务或紧急bug时特别有用。正确使用Git stash可以大大提高开发的灵活性和效率。
2651 0