程序员需要了解的 Git 命令汇总对于 Git ,大部分程序员应该都不陌生。但是由于 git 的命令太多了,即使很多使用
对于 Git ,大部分程序员应该都不陌生。但是由于 git 的命令太多了,即使很多使用过 git 几年的人可能就会使用几种 git 的命令。
对于 git 命令,最好不要死记硬背,而是从命令的作用的角度来归纳总结。简单来说,我们可以把 git 的操作看成不同区域之间交互,每一个命令就是在不同区域之间做“增删改查”。如下图所示,git 主要处理四个区域,分别是工作目录、暂存区、本地仓库、远程仓库,下面分别从这些区域的 “增删改查” 的角度来记住这些 git 命令。
Git 的四个区域
- 工作目录:平常开发的目录
- 暂存区:通过调用
git add
命令添加文件进入的区域,就是暂存区 - git本地仓库:通过
git commit
命令添加提交的区域 - git远程仓库:通过
git push
命令上传提交的区域
获取与创建项目
首先我们需要初始化项目,git 的命令如下:
git init
: 将一个目录转化为一个 git 仓库git clone <repository_url>
: 克隆一个远程仓库到本地
工作区——暂存区之间的增删改查
增加操作
git add file
将指定的内容从工作目录添加到暂存区git add .
将所有内容从工作目录添加到暂存区
删除操作
git reset [file]
:将文件从暂存区移除,但保留工作目录中的更改。git rm --cache
: 只移除暂存区的文件,但保存工作区的文件
如果你想直接删除工作区不想要的文件,可以手动删除,也可以使用 git clean
命令。git clean
用于从工作区移除不想要的文件。它有三个常用的后缀:-fd
的作用是强制删除当前目录下所有未跟踪的文件和空目录;-f
表示强制删除,忽略可能存在的任何保护或警告;-d
表示同时删除未跟踪的空目录。
注意:
git clean
删除的未跟踪文件不会出现在版本控制历史中,因为它们从未被正式纳入版本控制。
修改操作
使用 git add -i
(-i
是 --interactive
的简写)命令会进入一个交互式的界面。我们可以更灵活地选择要添加到暂存区的内容,比如说:
- 查看修改的文件列表,并选择要添加的文件
- 提交文件中的部分内容
- 对暂存区的内容进行更多的操作和管理
比较操作
在 git
中的查找操作主要是显示添加文件的不同,有如下的命令:
git status
显示工作区和暂存区中发生修改的文件git diff
命令则会查看工作区与暂存区的差异
临时存放区
在工作区——暂存区之间其实还有一个临时存放区,主要用于临时存放变动的文件。当我们在开发过程中,临时需要切换到其他分支时,这个命令就非常好用。临时存放区的相关命令如下:
git stash
:保存已修改和已暂存的更改。git stash list
:列出暂存文件更改的堆栈顺序。git stash pop
:从暂存堆栈顶部取出工作内容。git stash drop
:丢弃暂存堆栈顶部的更改。
暂存区——Git本地仓库的增删改查
增加操作
git commit -m “[描述性信息]”
命令会将暂存的内容作为新的提交快照提交到git本地仓库。我们也可以加上 -a
来跳过 add
这一步。
删除操作
在 git
中没有真正意义上的删除 commit
的操作,而是通过不同的方式来实现的:
第一种是通过 HEAD 指针移动来实现的,命令是 git reset
,它有三种方式:
git reset --soft <commit_hash>
:这会将 HEAD 指针移动到指定的提交,但会保留工作区和暂存区的更改git reset --mixed <commit_hash>
(这是git reset
的默认行为):将 HEAD 指针移动到指定的提交,之前的 commit 的修改都在工作区,暂存区会被重置。git reset --hard <commit_hash>
:这是一种比较激进的操作,它不仅将 HEAD 指针移动到指定的提交,还会重置工作目录和暂存区,使工作目录回到指定提交时的状态。使用时要非常小心,因为这可能会导致未保存的工作丢失。
第二种是通过新的提交来实现的,命令是 git revert
。使用 git revert <commit_hash>
命令,不会直接删除提交,而是创建一个新的提交来撤销指定提交的更改。
修改操作
git commit --amend
命令可以重新提交git reset
你也可以先回退,再提交
查找操作
git diff --staged
查看暂存区域与你最后提交之间的差异;git diff master branch
比较两个提交记录的差异。git log
:显示当前活动分支的提交历史。git log --follow [file]
:显示更改了文件的提交,甚至包括重命名的情况。git show [SHA]
:以人类可读格式显示 Git 中的任何对象。
分支
创建分支
git branch [分支名称]
:在当前提交处创建一个新分支。git checkout
:切换到另一个分支。git checkout -b [分支名称]
创建分支并切换当创建的分支上去。
合并分支
git merge [分支]
:将指定分支的历史合并到当前分支中。git rebase [分支]
:将当前分支的任何提交应用于指定分支之前。
git merge 的原理如下图所示:
git rebase 的原理如下图所示:
更新分支
git branch -m <old_branch_name> <new_branch_name>
更新分支名git cherry-pick
:把选中的 commits 一个个合并到当前的分支上
删除分支
git branch -d <branch_name>
删除本地的分支
查找分支
git branch
:列出你的所有本地分支。其中当前的分支旁边会出现一个“*”。加上-a
会列出本地和远程的所有分支git branch | grep <branch_name>
或者git branch -a | grep <branch_name>
使用 grep 来查找指定的分支git log branchB..branchA
:显示在分支 A 上但不在分支 B 上的提交。git diff branchB...branchA
:显示分支 A 中有而分支 B 中没有的差异。
本地仓库——远程仓库
git fetch [别名]
:从那个 Git 远程仓库获取所有分支。git push [别名] [分支]
:将本地分支提交传输到远程仓库分支。git pull
:获取并合并来自跟踪的远程分支的任何提交
参考
转载自:https://juejin.cn/post/7403683232808566835