git命令

一、前言

阅读本教程,默认读者已了解版本控制和git的相关概念

借用菜鸟教程 git 简明指南 (runoob.com) 的一个图复习一下git的工作流程:
在这里插入图片描述

二、指令

1. 主要指令

通过一个git使用流程介绍git指令

1.1 git add

git add [filename] 指令将你在工作目录修改的内容加入暂存区。


1.2 git commit

git commit -m "message" 指令提交暂存区到本地仓库。

  • Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样,但比复制粘贴优雅许多!

  • Git 希望提交记录尽可能地轻量,因此在你每次进行提交时,它并不会盲目地复制整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的差异打包到一起作为一个提交记录。

  • Git 还保存了提交的历史记录。这也是为什么大多数提交记录的上面都有父节点的原因 。对于项目组的成员来说,维护提交历史对大家都有好处。


1.3 git push

git push指令将本地仓库的提交同步到远程仓库(github/gitee等)


2. 分支

结点:一次提交就是一个结点

2.1 git branch

git branch name创建新分支name,git做的操作只是将name指向当前的结点(提交),但是工作目录仍是master(主分支)


2.2 git checkout

git checkout name 切换分支到name分支。如果分支不存在,可以使用git checkout -b name创建分支同时切换到name分支


2.3 git merge

git merge name指令将name分支合并到当前分支。git做的事是建立一个新结点,其父节点为name分支和当前分支;同时将当前分支指向该结点,name所在分支指向结点不变。如果想让name分支也指向当前结点,在name分支上运行git merge nowBranch 指令,参数是前述的“当前分支”。


2.4 git rebase

git merge name 指令将当前指令不在name分支上的结点复制后加在name分支上,并将当前分支指向最后的结点,name分支指向结点不变。如果想让name分支也指向最新结点,类似git merge,在name分支上运行git rebase nowBranch 指令,参数是前述的“当前分支”。


2.5 git cherry-pick

git cherry-pick <提交号列表>将提交号列表中的提交复制后加入当前结点的下方。


2.6 git rebase -i

git rebase -i HEAD~4 Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。
HEAD~4即不是从当前结点开始往上四个结点。在该界面中,我们可以调整这些选中结点的顺序,并决定是否删除,提交后将根据你设置的顺序和是否删除在当前结点下分支相同的记录。


2.7 总结

git rebasegit cherry-pick都是将你要的结点复制到当前分支的下方,这破坏了“分支树”的结构,很难直观地看到某次提交来源于哪些分支。但从功能上看三个命令各有优势,有些操作无法用merge指令完成。


3. 相对引用

3.1 HEAD

HEAD指当前的结点(当前的工作目录)。

​ 事实上默认指向为“HEAD→分支名→结点(提交)”,git checkout var指令就是将HEAD指向var,var可以是分支,也可以是提交记录的哈希值。当var是分支时,就是上述的“HEAD→分支名→结点(提交)”,当var是提交记录的哈希值时,就变成了“HEAD→结点(提交)”,实现了分离HEAD


3.2 ~ & ^

​ 分支/提交记录哈希值/HEAD后加~ & ^表示这些名字对应的提交记录的上一个结点。在~^后可以加数字n表示上n个结点。


3.3 使用

git branch -f master HEAD~2:将master分支指向HEAD结点的第2级父提交。


4. 撤销变更

4.1 git reset

git reset HEAD~将当前分支指向HEAD的父节点,实现撤销HEAD指向的提交记录

  • 对远程分支无效,为了撤销更改并分享给别人,我们需要使用 git revert

4.2 git revert

git revert HEAD创建一个新结点,将会在HEAD下生成一个新结点,该结点引入的更改刚好是用来撤销 HEAD 这个提交的。也就是说该结点的状态与HEAD~是相同的。


4.2 git revert

git revert HEAD创建一个新结点,将会在HEAD下生成一个新结点,该结点引入的更改刚好是用来撤销 HEAD 这个提交的。也就是说该结点的状态与HEAD~是相同的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值