git常用命令总结(非常实用)

54 阅读5分钟

git 常规用法

  1. 拉取仓库: git clone {仓库地址}
  2. 查看当前仓库配置的远程仓库信息: git remote -v
  3. 拉取代码:git pull;
  4. 查看状态: git status;
  5. 提交到本地缓存区:git add .;
  6. 提交到本地仓库: git commit -m "修改信息";
  7. 提交到远程仓库: git push
  8. 创建分支:git branch -b XXX
  9. 创建分支并检出分支: git checkout -b XXX
  10. 删除本地分支: git branch -d XXX
  11. 删除远程分支: git push origin --delete XXX
  12. 获取所有仓库分支,包括远程的: git branch -a
  13. 本地新建分支推送只服务器:git push origin XXX

git 初始化已有的项目

  1. 创建本地项目,在项目根目录执行 git init 命令 git init
  2. 在 git 服务器上创建一个仓库,这里使用 GitHub 创建一个仓库。
  3. 执行 git remote add origin ,git path 可以在【Clone or download】中获取。 git remote add origin XXX
  4. 从远程分支拉取 develop 分支并与本地 develop 分支合并。(有可能是其他分支) git pull origin develop:develop
  5. 提交本地分支到远程分支
  6. 将现有项目添加并提交上传 git add . git commit -m xxx git push --set-upstream origin develop

恢复文件

  1. 在开发的时候,修改了某个文件,又想恢复,那就需要撤销修改: git checkout 某文件(前提是没有 git add .,此时文件是没有添加到暂存区,所以可以从暂存区恢复即可)
  2. 修改了某个文件,又想恢复,但是已经添加到暂存区或者已经 commit(执行了 git add .),然后想撤销更改: git checkout commitId xx 文件(此时文件是添加到了暂存区,所以执行 git checkout 文件是不行的,需要从仓库里恢复),git的流程图可以参考下图。

git.jpg

提交覆盖

如果 git commit 后发现提交的内容还需要重新修改,并且不想把这次的信息提交,只是想修正而已,则需要使用 git commit --amend -m 信息,这种方式可以覆盖上一次提交的记录;

暂存修改文件

案例:假如你在 dev 分支修改了文件,但是你的领导要让你去 dev-2 分支修复一个 bug,但是 dev 中修改的文件又不想提交,此时需要把文件暂时存放起来,命令如下: 当前分支 dev bug 分支 dev-bugFix git stash git checkout dev-bugFix (修改 bug) git checkout dev git stash pop

git 如何解决冲突

a、2 个分支修改了同一个文件; b、2 个分支修改了同一个文件名; 在当前分支上,直接修改代码,然后 add 、commit

git 日志相关

1、查看日志条数(2 条): git log -2 2、显示的日志只展示提交信息和 id:git log --oneline,如果要控制显示数量则在后面加-{n}, git log --oneline -4 3、日志的图标显示: git log --graph -{n}; -{n}表示数量,可不加 4、查看日志中文件的摘要信息,例如增删减之类的:git log --stat 5、查看文件修改的具体内容: git log --patch 5.1、查看文件的不同:git diff,后面可以接文件名,可以接 2 个 commitId eg: git diff a.md; git diff commitId1 commitId2

Author: XXX@qq.com
Date:   Sat Aug 12 23:04:25 2023 +0800

    测试gitpatch

diff --git a/b.md b/b.md
index 4ff5a5a..570257a 100644
--- a/b.md
+++ b/b.md
@@ -1,2 +1,6 @@
 2222
 3333
+33
+44
+55
+66

100644 含义 100:表示这是常规文件; 644:是文件权限,解释如下:属主:可写 4+可读 2, 属组可读 4,其它:可读 4;

@@ -1,2 +1,6 @@ 的解释

-:表示修改前 +:表示修改后 1,2:修改前从第一行开始,有 2 行 1,6:修改后从第一行开始,有 6 行

6、查看指定时间后的日志: git log --after="2023-08-11" 不包含 2023-08-11 7、查看指定时间前的日志: git log --before="2023-08-11" 包含 2023-08-11 8、组合时间使用 git log --before="2023-08-11" --after="2023-08-08" 9、根据提交信息来查找日志: git log --grep="XXX" 10、根据提交用户来匹配: git log --author="XXX" 或者邮箱也可以,举例 11、引用日志:git log --reflog, 保存所有的日志,只在本地保存

tag 的使用

tag 的引入就是对 commitId 的一个引用,方便查看。 命令:git tag V2.0, 默认是当前最新的提交; 如果要指定在某次提交的版本打标签,则: git tag V2.0 commitId; 注释标签指令:git tag {标签名称} -a -m {注释} commitId 其中-a:全称为--annotate,意为给标签加注释 -m: 指定注释信息文本 eg: git tag V0.0 -a -m "启动项目" 查看标签的方式: git tag,
查看指定标签: git tag -l "V0*"; 表示以 V0 开头的 tag 如何查看指定标签:git show {tag} 如何把本地的 tag 推送给远程仓库: git push origin {tag 名}

如何合并多个提交

git rebase -i commitId,其中 commitId 为下一个 id, 执行该命令后会展示很多信息, 除了第一行的 pick 不需要修改外,把后面的 pick 改为 s; 然后再把提交信息合并即可;