程序员需要了解的 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 的简写)命令会进入一个交互式的界面。我们可以更灵活地选择要添加到暂存区的内容,比如说:

  1. 查看修改的文件列表,并选择要添加的文件
  2. 提交文件中的部分内容
  3. 对暂存区的内容进行更多的操作和管理

比较操作

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:获取并合并来自跟踪的远程分支的任何提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值