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 config命令也非常适合用于在编写或编辑提交消息时设置用户的首选文本编辑器:
$ git config --global core.editor "editor-name" [Globally]
$ git config core.editor "editor-name" [Project Basis]
将“ editor-name ”替换为您正在使用的文本编辑器的名称。
列出 Git 配置属性
此外,可以使用以下git config命令查看活动存储库的当前配置选项:
$ git config --list
2.git init:创建一个新的 Git 仓库
git init命令可以在本地文件系统的当前目录上初始化 Git 存储库。它还创建一个’.git’子目录(隐藏目录),其中包含必要的存储库文件,如索引和对象数据库文件。
$ cd /path/to/project/codebase
$ git init
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 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
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
9.git status:显示存储库和暂存区的状态
git status命令验证在下一次提交中排队等待暂存的文件是否存在。它突出显示所有添加、修改和/或删除的文件及其绝对路径。
$ git status
此命令对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 日志
对于 branch_22 上不存在的branch_11的提交历史。
$ git log branch_22..branch_11
注意双点语法的使用(..)
。
按作者过滤日志信息:
$ git log --author=author_name
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
origin 远程使用最新的存储库版本更新此存储库的等效本地副本。克隆存储库时,会创建一个名为原始远程的默认远程。
15.git pull:下载并合并 Git 仓库
我们使用git pull命令下载远程存储库的最新版本,然后将其与等效的本地存储库副本合并。git pull命令结合了git fetch和git merge命令的功能。
要检查本地存储库是否与远程存储库保持同步,请运行:
$ git pull
考虑命令:
$ git pull origin
在这里,远程存储库的最新版本被检索并与本地机器上过时的存储库副本合并,以使它们都是最新的。
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
执行上述命令将打开一个文件,供您输入与还原提交相关的提交消息。
保存并关闭文件:
您将成功还原现有或以前的提交。
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 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
对于所有引用(refs)的 reflog,运行:
$ git reflog show --all
对于特定分支的 reflog,例如 main,运行:
$ git reflog show main
结论
本文指南中涵盖的Git命令应该通过掌握版本控制、协作、分支、合并、快速开发以及 Git CLI 带来的更多有用功能来推动您的项目工作流程。
永远记住,“熟能生巧”的规则在git命令的使用中不断应用,你练习这些命令的次数越多,它们就会越多地印在你的肌肉记忆中。
有关更多 git 命令选项,请通过运行查阅其手册页man git
。
- 点赞
- 收藏
- 关注作者
评论(0)