GIT-常用命令
GIT-常用命令
0. 撤销commit
提交commit 后,还没有push时,想要撤销刚刚的 commit 。
git reset --soft HEAD^
注意,仅仅是撤回commit操作,您写的代码仍然保留。
1. 合并分支
把远端分支dev1 合并到 当前分支。
$ git merge --no-ff origin/dev1 -m 'merge to 主分支'
merge的三种方式:
- fast-forward
Git 合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward)不过这种情况如果删除分支,则会丢失merge分支信息。
在merge时如果什么都不加,则使用默认的 --ff , 即 fast-forward 方式则使用默认的 --ff , 即 fast-forward 方式
如:git merge origin/dev1
- –squash
把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用–squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。
- --no-ff
关闭fast-forward模式,在提交的时候,会创建一个merge的commit信息,然后合并的和master分支
0merge的不同行为,向后看,其实最终都会将代码合并到master分支,而区别仅仅只是分支上的简洁清晰的问题,然后,向前看,也就是我们使用reset
的时候,就会发现,不同的行为就带来了不同的影响
如:git merge --no-ff origin/dev1 -m 'merge to 主分支'

2. 删除分支
删除本地分支:
git branch -d dev20181018
删除本地分支-强制
git branch -D dev20181018
删除远端分支:
git push origin --delete dev20181018
3. 修改commit 注释
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
4. 撤销本地提交节点
撤销本地的commit,在本地commit后,还没有push。
想要撤回,可执行以下命令
git reset --soft HEAD^
这样就成功的撤销了你的commit,注意,仅仅是撤回commit操作,您写的代码仍然保留。
参数解释如下:
- --mixed
- --soft
- --hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
5. 撤销远端提交节点
如图,我想撤销 dev1分支下的 dev1.3 节点的提交 ,查看到其commit的版本号为 fcb025fc
//撤销语句
$ git revert fcb025fc
//提交上去即可
$ git push origin dev1
修改后分支图如下:
6. 撤销远端merge节点
我有两个分支 dev1、developMas。
分支dev1 修改后提交 merge 到 developMas,注释:dev1.1
分支dev1 再次修改后提交 merge 到 developMas,注释:dev1.2
现在想把developMas 分支上的 dev1.1 合并撤销掉。查看到其版本号为:ad6aa32c
执行revert语句报错如下
$ git revert ad6aa32c
error: commit ad6aa32c9b691067b701864f8cc7bf713a7725a1 is a merge but no -m option was given.
fatal: revert failed
但是,这是一个merge的提交。那么在撤销时,git并不知道我要撤销具体哪次!
可通过show语句查看这次commit的详细信息。
$ git show ad6aa32c
commit ad6aa32c9b691067b701864f8cc7bf713a7725a1
Merge: 57260e7 8059573
Author: lihongyuan <lihongyuan@MF11-XXZXLHY01>
Date: Wed Jan 8 08:26:00 2020 +0800
merge
在GitLab管理页面中也可以看到
可参考如下语句:
git revert ad6aa32c -m 1
git push
注解:参数 -m 就是选择一个主线从左往右(按图中的parents版本号顺序),从1开始数。在这个例子中,我要撤销到 57260e7e 下。因此-m 后跟参数1。

7. 回退到指定节点
当前master分支图如下,想要回退master 到 指定节点(init prod)下
先用 git pull 保存本地与远端一致。
git pull
查看指定版本号
执行回退命令:
git reset --hard f21b8069
强制提交本地分支覆盖远程分支
git push origin 分支名 --force
8. 取消merge
git merge后想取消merge状态
如上图,分支处于|MERGING状态,只需下面命令即可
git reset --hard
Git 多个远程仓库的管理
1. 查看远程仓库地址
git remote -v
2. 添加远程仓库
git remote add <name> <url>
3. 从远程仓库获取代码
git fetch origin git fetch upstream
4. 推送代码到远程仓库
git push origin master
5. 从远程仓库拉取代码并合并到本地
你可以使用git pull <name> <refspec>
从指定的远程仓库拉取代码并合并到本地。例如:
git pull origin master
6. 删除远程仓库
你可以使用git remote remove <name>
删除一个远程仓库。例如:
git remote remove origin
7. 重命名远程仓库
你可以使用git remote rename <old_name> <new_name>
重命名一个远程仓库。例如:
git remote rename origin old-origin
引用:https://www.jianshu.com/p/418323ed2b03
引用:https://www.cnblogs.com/bellkosmos/p/11409904.html
引用:https://www.cnblogs.com/lfxiao/p/9378763.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异