likes
comments
collection
share

程序员需要了解的 Git 命令汇总对于 Git ,大部分程序员应该都不陌生。但是由于 git 的命令太多了,即使很多使用

作者站长头像
站长
· 阅读数 22

程序员需要了解的 Git 命令汇总对于 Git ,大部分程序员应该都不陌生。但是由于 git 的命令太多了,即使很多使用

对于 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 命令汇总对于 Git ,大部分程序员应该都不陌生。但是由于 git 的命令太多了,即使很多使用

增加操作

  • 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 命令汇总对于 Git ,大部分程序员应该都不陌生。但是由于 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 命令汇总对于 Git ,大部分程序员应该都不陌生。但是由于 git 的命令太多了,即使很多使用

创建分支

  • git branch [分支名称]:在当前提交处创建一个新分支。
  • git checkout:切换到另一个分支。git checkout -b [分支名称] 创建分支并切换当创建的分支上去。

合并分支

  • git merge [分支]:将指定分支的历史合并到当前分支中。
  • git rebase [分支]:将当前分支的任何提交应用于指定分支之前。

git merge 的原理如下图所示:

程序员需要了解的 Git 命令汇总对于 Git ,大部分程序员应该都不陌生。但是由于 git 的命令太多了,即使很多使用

git rebase 的原理如下图所示:

程序员需要了解的 Git 命令汇总对于 Git ,大部分程序员应该都不陌生。但是由于 git 的命令太多了,即使很多使用

更新分支

  • 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
评论
请登录