2023年最新整理的Git 命令大全,值得收藏!

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 2023年最新整理的Git 命令大全,值得收藏!

关于 Git

Git软件通过跟踪不同的或分组的文件更改以及协作协调对开发软件源代码感兴趣的开发人员之间的工作来实现分布式版本控制。

Git使开发人员可以定期访问和修改来自不同托管存储库的应用程序源代码,它还支持回溯以撤消已经实施的更改,此外,Git 支持项目的版本控制,以跟踪项目整个生命周期中所做的更改和改进。

有用的 Git 命令速查表

Linux 命令行环境非常适合通过Git CLI(命令行界面)工具与Git存储库进行交互。本文将给大家带来50多个Git命令速查表:

  • git config : 设置 Git 配置值

    • 设置 Git 用户名
    • 创建 Git 别名
    • 设置 Git 编辑器
    • 列出 Git 配置属性
  • git init : 创建一个新的 Git 仓库
  • git clone : 克隆一个 Git 仓库
  • git add : 添加文件内容到暂存区

    • 添加单个文件
    • 添加多个文件
    • 添加所有文件
    • 添加删除和修改的文件
    • 在当前目录中添加文件
    • 添加具有特定文件扩展名的文件
  • git rm -f : 从 Git 存储库中删除文件

    • 删除单个文件
    • 删除多个文件
    • 删除目录
  • git mv : 移动或重命名 Git 存储库文件

    • 重命名项目文件
    • 移动项目文件
  • git commit : 将更改保存到 Git 存储库

    • 添加新提交
    • 修复先前的提交
    • 提交修改后的文件
  • git branch : 列出、创建或删除分支

    • 列出存储库分支
    • 创建一个新分支
    • 删除现有分支
  • git status : 显示存储库和暂存区的状态
  • git diff : 跟踪文件中的更改

    • 显示未暂存但已修改的更改
    • 显示分阶段但未提交的更改
    • 显示两个分支之间的差异
    • 比较已提交与未提交的文件
    • 比较两个特定文件版本
  • git log : 显示提交历史

    • 显示提交历史
    • 过滤 Git 日志
  • git checkout : 在分支之间切换

    • 切换到现有分支
    • 切换到新分支
    • 恢复文件的先前版本
  • git merge:合并 Git 分支

    • 分支间合并
    • 不提交合并分支
  • git fetch` : 下载远程 Git 存储库
  • git pull:下载并合并 Git 仓库
  • git push:使用本地提交更新远程分支
  • git rebase : 更改一系列提交
  • git revert : 还原现有提交
  • git reset : 还原 Git 存储库提交
  • git stash : 在本地保存未提交的更改
  • git reflog : 跟踪分支的变化

下面我们来详细了解一下:

1. git config:设置 Git 配置值

设置 Git 用户名

要全局设置与git存储库关联的用户名和电子邮件地址,请执行:

$ git config --global user.name "your_username" 
$ git config --global user.email "your_email_address"

要在项目基础上(不是全局)设置存储库的用户名和密码,请执行:

$ git config user.name "your_username"
$ git config user.email "your_email_address"
创建 Git 别名

我们还可以使用git config命令创建 Git 别名,如图所示。

$ git config --global alias.s status 

上面的命令将状态缩短为s,因此,而不是运行:

$ git status

我们将运行:

$ git s

创建 Git 别名

设置 Git 编辑器

git config命令也非常适合用于在编写或编辑提交消息时设置用户的首选文本编辑器:

$ git config --global core.editor "editor-name" [Globally]
$ git config core.editor "editor-name"          [Project Basis]

将“ editor-name ”替换为您正在使用的文本编辑器的名称。

列出 Git 配置属性

此外,可以使用以下git config命令查看活动存储库的当前配置选项:

列出 Git 配置选项

$ git config --list

2.git init:创建一个新的 Git 仓库

git init命令可以在本地文件系统的当前目录上初始化 Git 存储库。它还创建一个'.git'子目录(隐藏目录),其中包含必要的存储库文件,如索引和对象数据库文件。

$ cd /path/to/project/codebase
$ git init 

创建一个新的 Git 存储库

3.git clone:克隆一个 Git 仓库

git clone命令使您可以访问其他用户存储库代码库,这使得下载和个性化大量可公开访问的用户存储库变得容易。

如果您对GitHub等平台上托管的公共存储库感兴趣,您可以通过指定存储库的有效 Git URL 来检索它:

$ git clone [URL]

在 GitHub 上,它将是这样的:

$ git clone https://github.com/username/repository_name.git

可以使用以下示例突出显示上述实现:

$ git clone https://github.com/jumagemini/gitcommandtutorials.git

克隆一个 Git 存储库

您还可以指定用于下载目标存储库的目录:

$ git clone https://github.com/jumagemini/gitcommandtutorials.git test-dir

上面的命令将gitcommandtutorials存储库下载到test-dir目录中。

另一方面,您可能对克隆特定的存储库分支感兴趣:

$ git clone --branch <branch_name> [URL]
or
$ git clone -b <branch_name> [URL]

例如:

$ git clone -b developer https://github.com/jumagemini/gitcommandtutorials.git

克隆特定的 Git 存储库

4.git add:添加文件内容到暂存区

git add命令可用于收集暂存文件。暂存区(也称为index)提供收集文件的临时存储,同时在进行任何存储库提交之前跟踪与当前/活动存储库关联的文件更改。文件需要已经存在。

添加单个文件

要为暂存添加单个文件,请执行:

$ git add [file_name]
添加多个文件

要为暂存添加多个文件,请执行:

$ git add file1 file2 file3
添加所有文件

要添加用于暂存的所有文件(新文件和修改后的文件),请执行:

$ git add -A
添加删除和修改的文件

要仅添加已删除和已修改的文件以进行暂存,请实施:

$ git add -u
在当前目录中添加文件

要在当前目录中添加所有创建和修改的文件以进行暂存,请执行:

$ git add . 
添加具有特定文件扩展名的文件

要添加与特定文件扩展名关联的所有文件,例如 Python 文件,请执行:

$ git add *.py

5.git rm -f:从 Git 存储库中删除文件

git rm命令可用于从 git 存储库中删除不需要的项目文件。该-f标志强制删除带有阻止正常删除限制的文件。它还会暂存已删除的文件以供提交,以便托管存储库知道已删除的项目文件。

删除单个文件

要删除单个文件,请执行:

$ git rm -f file4.txt
删除多个文件

要删除多个文件,请执行:

$ git rm file1.txt file2.php file3.py file4
删除目录

我们还可以使用-r标志递归地删除项目目录及其内容:

$ git rm -f -r directory_name

6.git mv:移动或重命名 Git 存储库文件

git mv命令移动并重命名 Git 存储库文件。来自这些移动和重命名操作的更改也被暂存以提交到存储库。

重命名项目文件

要重命名项目文件,请执行以下命令:

$ git mv old-name.txt new-name.txt
移动项目文件

要将项目文件移动到不同的目录,请执行:

$ git mv file3.txt beta/file3.txt

上面的 git mv 操作可以概括为三个子操作:

$ mv file3.txt beta/file3.txt
$ git add beta/file3.txt
$ rm file3.txt

7.git commit:将更改保存到 Git 存储库

提交对于版本控制很重要,因为代码库的快照副本由 git 存档。git commit命令永久存储(在存储库中)来自 git add 命令的暂存更改。

添加新提交

要添加新提交,请实施:

添加更改以提交

$ git commit -m "commit message"
修复先前的提交

要修复以前的提交(修改提交错误),请实施:

$ git commit --amend -m "commit message"

修复先前的提交

提交修改后的文件

要提交所有修改过的文件(在暂存之后),请使用-a如下所示的标志:

$ git commit -a -m "Commit message"

提交修改后的文件

8.git branch:列出、创建或删除分支

git branch命令在列出、创建和删除 Git 存储库项目分支时很有用。在 git 存储库中,分支是一条单独的开发线,多个开发人员可以同时为一个项目做出贡献,而不会影响开发主线(主分支)的代码库。

列出存储库分支

要列出所有存储库项目分支,请运行:

$ git branch

当前或主要分支标有星(*)号。

创建一个新分支

要创建一个新分支,请运行

$ git branch [new-branch-name]

参考上面的例子,创建一个新的分支,可以在不干扰主分支上的主要代码库的情况下,独立地处理新的项目特性。

请注意,上述新分支的创建是在当前提交上进行的。

删除现有分支

在单独的分支上处理新的项目功能并成功将它们合并到主分支或主分支上后,您将不再需要单独的分支并可能考虑将其删除。

要删除现有分支,请执行:

$ git branch -d [branch-name]

为避免错误,请确保在删除分支之前已离开该分支。例如,如果您仍在一个名为newest的分支上并需要删除它,请先离开该分支并移动到另一个现有分支或主分支上,然后再删除它。

移动到另一个分支(例如 main):

$ git checkout main

现在删除最新的分支:

$ git branch -d newest

Git 分支示例

9.git status:显示存储库和暂存区的状态

git status命令验证在下一次提交中排队等待暂存的文件是否存在。它突出显示所有添加、修改和/或删除的文件及其绝对路径。

$ git status

显示 Git 存储库的状态

此命令对Git工作流程(第一步)至关重要,因为它显示存储库文件的当前状态(已修改和未跟踪)。

10. git diff – 跟踪文件中的更改

git diff命令在跟踪更改(在代码库中)方面非常有效,因为它显示了两个文件版本之间、提交之间、索引树和工作树之间以及 blob 对象之间的差异。此 Git 命令会突出显示添加、删除和修改的更改。

显示未暂存但已修改的更改

要展示未暂存但已修改的更改(工作树与索引树),请使用:

$ git diff
显示分阶段但未提交的更改

要展示暂存但未提交的更改,请使用:

$ git diff --staged 
显示两个分支之间的差异

区分两个分支:

$ git diff Branch_1...Branch_2

不要忘记使用三点语法(...)

区分两个分支的替代命令是:

$ git diff Branch_1...Branch_2

要将分支与当前代码版本进行比较,请实现:

$ git diff branch-name
比较已提交与未提交的文件

要区分已提交和未提交的文件状态,请实施:

$ git diff file-name
比较两个特定文件版本

要区分当前版本并提交特定文件的当前版本,请执行:

$ git diff HEAD~1 HEAD file-name

11.git log:显示提交历史

git log命令显示 git 存储库的历史记录。它为 git 用户提供了已实施的存储库更改的预览。此类更改包括提交更改、作者和日期。

显示提交历史

对于当前活动分支的提交历史:

$ git log

列出 Git 提交历史

过滤 Git 日志

对于 branch_22 上不存在的branch_11提交历史。

$ git log branch_22..branch_11

过滤 Git 日志

注意双点语法的使用(..)

按作者过滤日志信息:

$ git log --author=author_name

按作者过滤 Git 日志

12.git checkout:在分支之间切换

大多数软件开发项目都涉及团队合作。在这种情况下,创建了几个特性和开发分支。当你想在分支之间成功切换时, git checkout命令很有用。

切换到现有分支

要切换到另一个现有分支并从当前目录预览它,请执行:

$ git checkout [分支名称]
切换到新分支

要创建并切换到新分支,请执行:

$ git checkout -b new-branch 

在这里,首先创建分支new-branch,然后再切换到它。

恢复文件的先前版本

要将名为file3.txt的文件恢复到存储库中当前提交的版本,我们将实现:

$ git checkout HEAD -- file3.txt

13.git merge:合并 Git 分支

当在两个不同的分支上工作并需要合并它们时,请考虑使用git merge命令,这对于连接分支之间的开发历史(两个或多个)很有用。

您首先需要像主分支一样签出到您的稳定或活动分支(如果还没有),然后合并开发分支。

$ git checkout [active-master]
$ git merge [development-branch-name] 

查看和合并分支

分支间合并

考虑下面的合并命令:

$ git merge -s ours branch1

这里,branch1与当前分支(例如 main)合并。但是,两个分支的更改不会合并。branch1的变化被丢弃,主分支的变化被保留。

当你想避免合并冲突时, git merge -s ours命令非常有效。请注意,此命令将永久丢弃指定的分支更改。

不提交合并分支

考虑下面的合并命令:

$ git merge --no-commit branch2

这里,branch2与当前分支合并,没有自动提交的选项。

14.git fetch:下载远程 Git 存储库

git fetch命令下载远程存储库的最新版本并更新此存储库的等效本地副本。它在本地存储检索到的引用、文件和提交,而不将它们与本地存储库合并。

要使用此命令,请执行:

$ git fetch [alias]

例如,

$ git fetch origin

下载 Git 存储库

origin 远程使用最新的存储库版本更新此存储库的等效本地副本。克隆存储库时,会创建一个名为原始远程的默认远程。

15.git pull:下载并合并 Git 仓库

我们使用git pull命令下载远程存储库的最新版本,然后将其与等效的本地存储库副本合并。git pull命令结合了git fetchgit merge命令的功能。

要检查本地存储库是否与远程存储库保持同步,请运行:

$ git pull  

考虑命令:

$ git pull origin

下载并合并 Git 存储库

在这里,远程存储库的最新版本被检索并与本地机器上过时的存储库副本合并,以使它们都是最新的。

16.git push:使用本地提交更新远程分支

git push命令使远程存储库分支能够接收本地分支提交。当本地存储库领先于(更多更新)远程存储库时,我们使用此命令。它使远程存储库与本地存储库中的新更改保持同步。

$ git push    

使用本地更新远程存储库

用于使用新更改更新远程存储库的备用git push命令如下所示:

$ git push origin

更新远程存储库

要将分支推送到远程存储库,请指定分支名称:

$ git push origin branch-name

17.git rebase:更改一系列提交

git rebase命令将 branchA 的更改集成到branchB。它采用当前分支的本地提交并在更新的代码版本之上重播它们,而不是采用“ git merge ”命令方法来创建新提交并合并更改。

考虑以下命令:

$ git rebase branch1

在这里,当前分支的提交在branch1 的更新代码版本之上重新应用。只有在没有发生分支冲突时,rebase 操作才会完成。否则,您需要先解决冲突。

作为git merge命令的替代方法,git rebase创建了一个更易于理解和解释的线性提交历史记录。

虽然git merge是非破坏性的,但git rebase有潜在的缺陷。它通过生成新的提交来重写项目历史。

考虑以下 git rebase 示例:

$ git checkout main
$ git rebase loco

上面的演示将整个分支移动到一个loco分支的顶端。所有本地分支提交也被合并。

更改一系列提交

18.git revert:还原现有提交

当需要恢复现有/以前的提交时,git revert命令很有用。它撤消以前/现有的 Git 存储库更改。它为还原的提交更改创建一个新的提交,并使存储库处于干净状态,就好像这些已删除更改的实现从未发生过一样。

git revert命令的语法如下:

$ git revert <commit_hash>

使用此命令需要执行几个步骤。

第一步是检索commit_hash,它是所有已实现提交的唯一标识符。

要获取提交哈希,请运行以下任一命令:

$ git log -1 --format=format:"%H"
or
$ git rev-parse HEAD

获取提交哈希

之后,我们应该通过执行上面生成的 .git 文件来运行git revert<commit_hash>命令。示例实现如下所示:

$ git revert 6b9c1a2cabb6650b43618340ad8a3f1562ac6fd7

执行上述命令将打开一个文件,供您输入与还原提交相关的提交消息。

撤消 Git 提交

保存并关闭文件:

保存 Git 提交

您将成功还原现有或以前的提交。

19.git reset:还原 Git 存储库提交

git reset命令撤消 Git 存储库提交。撤消的提交可以从存储库中永久删除,因此可以使用此命令丢弃它们。它还将存储库重置为先前的状态,并移至分支指针的先前提交。

要取消暂存特定项目文件并保留当前工作目录更改,请执行:

$ git reset [file_name]

要清除暂存区并根据特定提交重写工作树,请执行以下命令:

$ git reset --hard [commit_hash] 

--hard选项丢弃提交并修改工作目录。要放弃提交而不修改工作目录,请使用该--mixed选项。

要既不丢弃提交也不修改工作目录,请使用该--soft选项。

要获取 commit_hash,请运行:

$ git log -1 --format=format:"%H"
or
$ git rev-parse HEAD

撤消 Git 存储库提交

另一种使用git reset命令的方法如下:

$ git reset  HEAD~1

在上面的命令中,分支指针被移动到当前提交后面的提交,便于删除最近的提交。这里--mixed是默认选项。

20.git stash:在本地保存未提交的更改

git stash命令临时搁置项目更改,如跟踪和修改的文件,而用户在返回以重新应用这些项目更改之前处理其他内容(例如切换分支)。这些临时保存的更改不会提交 ( git commit )。

要保存已修改和暂存的项目更改,请运行:

$ git stash

要使用消息存储项目,请按如下方式使用保存选项:

$ git stash save "saved changes for branch1"

以上改动是在当前分支中进行的。

列出StackOrder的隐藏文件更改:

$ git stash list

在本地保存未提交的更改

要在使用 stash 返回分支后重新应用保存的 stash,请运行:

$ git stash apply

21.git reflog:跟踪分支的变化

git reflog命令在处理参考日志时很有用。它在显示 Git 存储库中的更改历史记录时引用本地分支。此命令的输出需要提交哈希、执行的操作和与更改相关的分支名称。

对于最近的还原、拉取、提交等的 HEAD reflog,运行:

$ git reflog

列出 Git 存储库中的更改

对于所有引用(refs)的 reflog,运行:

$ git reflog show --all 

显示所有 Git 存储库中的更改

对于特定分支的 reflog,例如 main,运行:

$ git reflog show main

列出特定存储库中的更改

结论

本文指南中涵盖的Git命令应该通过掌握版本控制、协作、分支、合并、快速开发以及 Git CLI 带来的更多有用功能来推动您的项目工作流程。

永远记住,“熟能生巧”的规则在git命令的使用中不断应用,你练习这些命令的次数越多,它们就会越多地印在你的肌肉记忆中。

有关更多 git 命令选项,请通过运行查阅其手册页man git

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
开发工具 git
git 常用命令
这些只是 Git 命令的一部分,Git 还有许多其他命令和选项,可根据具体需求进行深入学习和使用。熟练掌握这些命令能够帮助你更高效地管理代码版本和协作开发。
|
5月前
|
存储 开发工具 git
|
29天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
33 3
|
5月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
77 0
|
2月前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
57 1
[Git]入门及其常用命令
|
3月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
148 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
2月前
|
开发工具 git 开发者
|
2月前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
69 0
|
4月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
4月前
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7