常见的git命令


主要目的

  • 实现 git 项目管理,本地开发与提交。

基本命令

1.查看分支

  1. 查看所有分支(远程和本地)
git branch -a
  1. 查看本地所有的分支
git branch
  1. 列出所有的远程分支
git branch -r
  1. 查看本地分支与远程分支的映射关系
git branch -vv
  1. 撤销本地分支与远程分支的关系
git branch --unset-upstream
  1. 将本地新建的分支与远程分支相关联(在当前分支下输入以下命令)
git branch -u origin/分支名       //其中origin/分支名 中分支名 为远程分支名

或使用下面命令

git branch --set-upstream-to origin/分支名

###

2.拉取远程分支并更新本地分支

git fetch origin(不指定分支名就是远程全部分支)
git fetch origin XXX (拉下远程指定的分支)

git pull origin master

3.新建分支

  1. 从远程拉取分支到本地
git checkout -b 本地分支名 origin/远程分支名
  1. 新建一个本地分支并切换到该分支
git checkout -b 本地分支名
  1. 新建一个本地分支(仍停留在当前分支)
git branch 本地分支名

4.切换分支

  1. 切换到另一个分支
git checkout 分支名
  1. 切换到上一个分支
git checkout -

5. 提交分支

  1. 添加当前目录的所有文件到暂存区
git add .
  1. 提交暂存区到仓库区
git commit -m 'submit-新功能开发完成'
  1. 直接来提交到仓库 (不需要执行 git add 命令)相当于 一二步的合并
git commit -a -m  'submit-新功能开发完成'
  1. 直接来提交到仓库 (不需要执行 git add 命令)相当于 一二步的合并,但是只能提交已经追踪过且修改了的文件,如果是新增文件就必须使用 git add 的命令;
git commit -am  'submit-功能完成'
  1. 提交时显示所有 diff 信息
git commit -v
  1. 分次提交 (添加每个变化前,都会要求确认对于同一个文件的多处变化,可以实现分次提交)
git add -p

查看所有分支列表,包括本地和远程

git branch -a

查看远程版本库分支列表

git branch -r

可以查看本地分支对应的远程分支

git branch -vv

对当前分支重命名

git branch -m  

6.删除分支

  1. 删除本地的分支
git branch -D XXX  //强制删除


git branch -d XXX  //如果在分支中有一些未merge的提交,那么会删除分支失败
  1. 删除远程仓库的 分支.
git push origin --delete XXX

###

7.重置分支

//切出一个master稳定分支
git checkout master

//删除本地分支
git branch -D cs

//本地切出一个cs分支
git chekcout -b cs

//强制推送到远程
git push origin cs --force

8.查看信息

  1. 显示有变更的文件
git status
  1. 显示当前分支的版本历史
git log
  1. 显示暂存区和工作区的差异
git diff

  1. 显示某次提交的元数据和内容变化
git show [commit]
  1. 显示 commit 历史,以及每次 commit 发生变更的文件
 git log --stat
  1. 显示当前分支的最近几次提交
 git reflog
  1. 显示过去 5 次提交
git log -5 --pretty --oneline

  1. 显示某次提交发生变化的文件
git show --name-only [commit]
  1. 显示指定文件相关的每一次 diff
git log -p [file]
  1. 显示指定文件是什么人在什么时间修改过
git blame [file]

  1. 搜索提交历史,根据关键词
git log -S [keyword]
  1. 显示所有提交过的用户,按提交次数排序
git shortlog -sn
  1. 显示某次提交时,某个文件的内容
git show [commit]:[filename]

实例:

1. 新建本地分支并推送到远程分支

//远程先开好分支然后拉到本地
git checkout -b feature origin/feature //检出远程的feature分支到本地

//本地先开好分支然后推送到远程
git checkout -b feature    //创建并切换到分支feature
git push origin feature:feature  //推送本地的feature(冒号前面的)分支到远程origin的feature(冒号后面的)分支(没有会自动创建)

2.分支提交:

//提交 feature-goods-3.1.2 代码,操作如下

git add .
git commit -m 'submit- 商品图片上传功能完成'
// git commit -a -m 'submit- 商品图片上传功能完成' //将 1,2 步合并
git push

3.切换分支

git checkout -b feature-goods-3.1.3 //新建一个本地分支并切换到该分支
git checkout feature-goods-3.1.3 //切换到当前分支
git checkout - //切换到上一个分支

4.合并分支

例如:想将 dev 分支合并到 master 分支,操作如下:

git  checkout master    //切换到master分支上
git pull origin master  //把远程分支pull下去,及时更新
git  merge dev          //把dev分支的代码合并到master上
git branch --merged     //只是为了确认所有内容都已合并,请运行以下命令:
git status              // 查看状态
git push origin master  //push到远程分支

5.回滚代码版本(慎用)

git fetch --all
git reset HEAD //需要回滚的版本号
git push origin --force //然后本地分支覆盖远程分支

6.代码撤销

git checkout . // 恢复暂存区的所有文件到工作区
git reset --hard  //重置暂存区与工作区,与上一次commit保持一致

7.本地分支覆盖远程分支(慎用)

git checkout 分支名
git push origin 分支名 --force       (远程分支名)

8.远程分支覆盖本地分支(慎用)

git fetch --all  (拉取所有分支)
git reset --hard origin/master (master指定远程的分支)
git pull

9.删除分支

//查看所有分支(本地和远程)
git branch -a

//删除本地分支
git branch -d  XXXX

//删除远程分支
git push origin --delete XXX

10.保存当前工作进度

保存当前工作进度
git stash

添加一些注释
git stash save 'message...'

恢复最新的进度到工作区
git stash pop

11.将本地新建的分支与远程分支相关联(在当前分支下输入以下命令)

git branch -u origin/分支名       //其中origin/分支名 中分支名 为远程分支名

或使用下面命令

git branch --set-upstream-to origin/分支名

12.撤销本地分支与远程分支的关系

git branch --unset-upstream

13. 分支打标签

列出当前分支所有标签
git tag

打标签(轻量标签和附注标签)
git tag v0.1.2  (标签版本)
git tag -a v0.1.2 -m '0.1.2版本'  (带标注的标签)

# 补打标签
git tag -a v0.1.2 9fbc3d0  (为之前的版本补打标签)

标签发布(git push 不会将标签对象提交到git服务器)
git push origin v0.1.2    # 将v0.1.2标签提交到git服务器
git push origin –-tags     # 将本地所有标签一次性提交到git服务器

查看标签版本信息
git show v0.1.2

删除标签
git tag -d v0.1.2   删除标签

###

14.用于比较两次修改的差异

工作区与暂存区(默认)
git diff

Git仓库 vs Git仓库
git diff <commit> <commit>

暂存区 vs Git仓库
git diff --cached <filename>

参考文章:

https://blog.csdn.net/litongqiang/article/details/107388918
https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html


文章作者:   leader755
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 leader755 !
评论
 上一篇
YAML YAML
现代编程中,少不了编写配置文件,常用的配置文件编写格式有:xml,json,在前端工程化开发中,甚至还有使用 js 作为配置文件的。本文将介绍一种更适合编写配置的语言 YAML(Yet Another Markup Language)。并记
2020-09-27
下一篇 
vscode设置一键同步--settings sync vscode设置一键同步--settings sync
最近换了新工作,然后作为程序猿首先是编辑器的设置。但是每个人的编辑器都有自己的编程习惯的。那能不能将 vscode 的编辑器设置同步呢?答案是有的:setttings-async 1.vscode 插件中查找插件 setting-syn
2020-09-12
  目录