Git常用命令

        Git是一个开源的版本控制系统。区别于其它版本控制系统例如SVN等,它是分布式的。

        我们使用Git的一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

        当然,相信很多人都对它的用法非常的熟悉,这不是这篇文章的重点。接下来我主要整理一下Git的一些常用命令,帮助大家在工作中更好地使用GIt。

一、基础命令 

0.

(1) git init:初始化本地库

(2) git status:查看工作区、暂存区的状态

(3)git add <file name>:将工作区的“新建/修改”添加到暂存区

(4)git rm --cached <file name>:移除暂存区的修改

 

1. git commit (<file name>):将暂存区的内容提交到本地库

  • –m “本次提交描述”:该命令会将git add .存入暂存区修改内容提交至本地仓库中
  • –am “本次提交描述” 或  –a –m “本次提交描述”:会自动把修改的文件,先暂存,然后直接commit 。相当于git add . 与git commit –m “本次提交描述” 两句操作合并为一句进行使用
  • -s:会弹出vim 文本编辑器,让你编写提交备注(-s命令可以自动加上Signed-off-by信息,并且可以其他参数一起使用)
  • --amend:改变当前分支最近的一次提交,用新提交取代了原始提交 

2. git branch <your-branch-name>:创建一个新分支

  • -f <your-branch-name>:指向其他分支的一个提交,例如:git branch -f master HEAD~3  

3. git checkout   <your-branch-name>/<提交号>/相对引用:切换到某个分支或某次提交

  • -b <your-branch-name>:创建一个新的分支同时切换到新创建的分支 (= git branch <your-branch-name> + git checkout <your-branch-name>)
  • -t <remote-branch-name>:在本地新建同名的分支,并切换到该分支(=git checkout -b branch-name origin/branch-name)

4. git merge/rebase <target-branch-name>:合并分支

区别:

-Merge:把 bugFix 分支合并到 master 分支上。从 master 开始沿着箭头向上看,在到达起点的路上会经过所有的提交记录。

-Rebase:把 bugFix 分支里的工作直接移到 master 分支上。移动以后会使得两个分支的功能看起来像是按顺序开发,但实际上它们是并行开发的。

Rebase 的优势就是可以创造更线性的提交历史,取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。

    进阶用法:

    使用 -i 选项,即交互式(interactive)rebase命令,所谓交互式命令,Git会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。

5. git log:查看提交记录与对应的提交号(哈希值

    1)通过哈希值定位提交记录的方式为绝对引用

    2)定位提交记录也使用相对引用,其中相对引用的参照可以是HEAD,也可以是分支(代表该分支的当前节点)。

  • 使用 ^ 向上移动 1 个提交记录
  • 使用 ~<num> 向上移动多个提交记录,如 ~3

         查看当前HEAD的指向的两个命令:

  • cat .git/HEAD
  • git symbolic-ref HEAD

补充:空格向下翻页,b向上翻页,q退出

6. git reset/revert <提交号>:撤销提交

区别:

-Revert 是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留;

-Reset 是回到某次提交,该提交及之前的commit都会被保留,但是此提交之后的commit都会被删除

  • --soft xxx:用于将文件提交至本地仓库后撤回暂存区的操作
  • --hard xxx:会将工作区、暂存区、本地仓库的所有提交的文件全都撤销

7. git cherry-pick <提交号>...:将一些提交复制到当前所在的位置(HEAD)下。

8. git clone <远程库地址>:克隆远程库

  功能:①完整的克隆远程库为本地库,②为本地库新建origin别名,③初始化本地库

9. git fetch:将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态。

注意: git fetch 并不会改变你本地仓库的状态。它不会更新你的 master 分支,也不会修改你磁盘上的文件。可以将 git fetch 的理解为单纯的下载操作。

10. git pull:实际上相当于 git fetch 和 git merge 的缩写。

  • --rebase:实际上相当于 git fetch 和 git rebase 的缩写

11. git push:负责将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录。

二、高级命令

1. git tag:为某次提交打上标签。(通常在发布软件的时候打一个tag ,tag 会记录版本的提交号,方便后期回溯)

  • -l "关键字":过滤tag

2. git describe:显示当前离当前提交最近的tag。如果符合条件的tag指向最新提交则只是显示tag的名字,否则会有相关的后缀来描述该tag之后有多少次提交。

3. git bisect:查找哪一次代码提交引入了错误

4. git stash:将当前的工作状态保存到git栈,并且将当前代码切换到 HEAD 上

  • + pop:恢复git栈中的一个stash,默认恢复最新的stash
  • + apply:恢复被隐藏的文件,但是git栈中的这个不删除
  • + list:查看所有被隐藏的stash列表
  • + show:显示stash的内容具体是什么,如 git stash show stash@{0}
  • + drop:删除指定的一个stash,默认删除最新的stash
  • + clear:删除所有存储的stash

5. git reflog:以简洁的一行显示,包含简洁哈希索引值,同时显示移动到某个历史版本所需的步数

6. git diff:查看所有被隐藏的文件列表

  • --cached([file]):显示暂存区和上一次commit的差异
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值