32个Git命令速查表(适用于初学者)
GIT命令速查表是开发人员的便捷参考,包含了Git项目中最常用的命令。
GIT是什么?
GIT是一个开源的存储库,用户可以将文件(包括代码、压缩包、文本或整个项目)放在其中。
它具有协作、版本控制、流程控制等多个功能。与其他版本控制系统相比,GIT存储文件更高效、提供更好的完整性。Git是一个命令行工具。
Github是什么?
凭借其简洁的用户界面,GitHub,开发人员的中心已成为使用最广泛的版本控制系统,任何人在任何地方都可以访问。
Git工作流程
Git有不同的工作流程,每个项目都应该根据其需求选择适合的工作流程。Git工作流不过是一种基于分支的轻量级工作流,有助于经常部署项目的团队。
例如,分叉Git工作流会创建一个存储库的本地副本。因此,每个开发人员都有一个本地工作空间和一个中央存储库。当多个开发人员参与时,这种工作流非常有用,并允许开发人员在更改主存储库之前在分叉副本上进行协作。
为什么我们需要Git?
由于Git是一个版本控制系统,开发人员会不断地在上面工作,保存他们的更改、让其他人查看、合并他们的更改等等。
对于Git存储库的任何更改,开发人员都需要知道正确的命令以执行正确的操作。下面是一些重要且常用的Git命令列表:
常用的Git命令
git add
将指定的文件添加到暂存区
git add -- 添加特定文件
git add * -- 添加所有文件
git archive
创建提交、分支和树的归档,并将多个文件合并为一个。在需要时,可以通过提取文件来检索内容
git archive HEAD
— 从存储库的HEAD引用创建归档
git archive output = ‘.tar’
— 将归档文件存储在指定位置
git archive --format=tar.gz
— 指定归档文件的格式,如tar、zip、tar.gz
git branch
列出存储库中的所有分支。如果指定了分支名称,则创建一个名为该名称的新分支。使用-d选项和分支名称删除分支。使用-m选项重命名当前分支。
git branch
— 列出所有分支
git branch -- 创建名为'branch_name'的新分支,但不切换到新分支。
git branch -d
— 删除分支,如果存在未合并的更改,则会阻止删除
git branch -D
— 强制删除分支,即使存在未合并的更改
git branch -m
— 重命名当前分支
git cat-file
显示存储库对象的内容或大小/类型信息
git cat-file
— 显示对象的内容
git cat-file -t
— 显示对象的类型
git cat-file -s
— 显示对象的大小
git cat-file -p
— 以漂亮的方式打印对象的类型
git cat-file -e
— 如果对象格式无效或不存在,则在stderr上显示错误
git cat-file
— 显示对象的原始内容
git checkout
用于在存储库的不同分支之间切换,要小心使用,因为没有“撤消”。
git checkout
— 检出指定的分支
git checkout -b
— 创建一个新的分支并切换到该分支
例如:
C:Usersyaoweibin>git checkout -b development_branch
切换到新分支'development_branch'
git clean
清理工作目录。已提交的文件将不会被删除
git clean -n
— 列出将要被删除的文件
git clean -f
— 删除文件
git clone
将现有仓库创建一个副本到一个新目录中。用于获取中央仓库的开发副本。
git clone
— 将中央仓库创建一个副本到一个新目录
例如:
C:Usersgeek>git clone yaoweibin master
正在克隆到 'master'...
完成。
git clone -branch
— 克隆来自指定仓库的分支
git commit
保存更改到暂存区以供他人查看。
git commit
— 将更改提交到暂存区
git commit -m
— 在提交时提供一个消息以突出显示所做的更改
git commit -a
— 直接提交更改,无需暂存
假设你在工作目录中添加了一个名为samplefile.txt的文件,并想要提交该文件。在执行上述命令后,你将获得以下输出:
请输入提交的消息。以 '#' 开头的行将被忽略,空消息会中断提交。
在分支 master 上
初始提交
将要提交的变更内容:
新文件:samplefile.txt
在输入消息后,更改将被提交:
C:Usersyaoweibin>git commit -m 'samplemsg'
[integration_branch (root-commit) ed52dd0] 'samplemsg'
1 files changed, 24 insertions(+)
create mode 100644 samplefile.txt
git config
指定要写入属性值的配置级别。当未指定任何配置级别时,默认为'Local'级别。
git config –local
— 将配置保存在仓库的 .git 目录中
git config –global
— 将配置保存在用户的主目录中
git config –system
— 包含所有用户和仓库的配置,位于根目录的 git config 文件中。
git diff
比较git仓库中的更改,可以在暂存之前、暂存时和暂存之后(提交)进行。
git diff
— 跟踪尚未暂存的仓库更改
git diff --staged
— 跟踪已暂存的文件更改(未提交的)
git diff HEAD
— 跟踪提交后的文件更改
git diff
— 跟踪两次提交之间的更改;可以使用'git log -p --follow --filename'命令查找提交ID
git fetch
获取一个分支或整个远程仓库
git fetch
— 从远程仓库URL获取整个仓库
git fetch
— 获取指定分支
git fetch -all
— 获取远程仓库的所有分支
git fetch origin
— 更新并同步本地仓库与远程仓库中的新更改
git fsck
File System ChecK 命令检查数据库对象的有效性和连接性。它检查对象的SHA-1ID及其之间的连接。Fsck用于恢复丢失的提交和文件。
git fsck –full
git gc
对当前仓库运行垃圾回收,清理未使用的文件。
git gc
git grep
在仓库中搜索特定内容。Git提供了许多选项以不同的方式进行搜索
git grep -i ‘search_term’
— 忽略大小写进行搜索 [Man和man将被视为相同]
git grep -f
— 显示特定文件的匹配模式
git grep -e ‘search-term’
— 使用-e进行模式匹配
git grep -E ‘regexp|multiple_exp’
— 搜索正则表达式,可以使用管道(或)运算符搜索多个
git grep -n ‘expr’
— 在匹配行的前面添加行号
git grep -c ‘expr’
— 显示匹配行数的计数,而不是每行显示
git ls-tree
列出当前目录下树对象的内容。
git ls -tree -d
— 只显示指定的树项,不包括子项
git ls -tree -r
— 递归到子树
git ls -tree -l
— 显示文件(blob)对象的大小
git ls -tree --name-only
— 仅显示文件名,而不是详细输出
git ls -tree --full-name
— 显示完整路径名,而不仅仅是相对于当前目录的路径
示例:
C:Usersgeek>git ls-tree --full-tree -r HEAD
100644 blob e883e60087e84f1660a9673ccb86eb0adc4f004d samplefile.txt
100644 blob 1426dc6fbff0677a484b248983a8740ff30fbb80 sample_jsindex.js
git init
创建一个新的空白仓库。这是你执行的第一个命令,用于创建一个git项目。
git init
— 在工作目录中创建一个.git仓库。
例如,要创建一个名为「yaoweibin」的新仓库,请执行以下命令:
$ git init yaoweibin
Initialized empty Git repository in C:/Users/geek/yaoweibin/.git/
git instaweb
通过浏览器浏览git仓库的用户界面。使用CGI脚本GitWeb。
git instaweb --httpd=webrick
— 启动服务器(httpd)并在网页上打开浏览器。
要停止服务器,请使用上述命令加上--stop选项。
git log
记录git仓库中的每个活动。
git log
— 显示最近几次提交
git log --oneline
— 每行显示SHA的前7个字符和提交消息
git log stat
— 显示有关修改文件的更多信息,如添加/删除的行数,更改的总记录数,添加/删除的行数的汇总
git log --patch (或 -p)
— 显示已修改的文件、具体更改及其位置
git log --graph
— 以图形形式查看日志结果
git log -
— 显示最近的「n」个提交
git log --after=
— 显示指定日期之后的所有提交。你可以使用--before
来显示指定日期之前的提交
git log --author=
— 显示特定作者(用户)的提交
git log --grep=
— 根据提交消息筛选提交
git merge
将所有开发文件集成到一个分支中,合并两个分支,并将多个提交合并为一条历史记录。如果存在冲突,则合并会停止,并且git会显示冲突的文件。解决冲突后,合并会继续进行。
git checkout -b
— 首先,检出要合并的分支
git add
git commit
— 添加并提交文件
git checkout master
git merge
— 将分支与主分支合并
git prune
删除(修剪)当前分支中无法访问的文件。这是一个清理过程,用于从分支中删除未使用的文件。
git prune -n
— 不进行修剪,只显示可以修剪的内容
git prune -v
— 显示修剪操作的输出
git prune --progress
— 显示修剪的进度
git fetch --prune
— 修剪所有过时的分支
git pull
从远程服务器接收数据到工作仓库。它使用远程仓库的最新文件更新本地(工作)分支。
git pull
— 拉取远程仓库
git pull
— 拉取特定的远程分支
git push
将所有本地更改推送到远程仓库。它是与pull和fetch相反的上传过程。
git checkout master
— 切换到最新更改的分支
git push origin master
— 将更改推送到远程仓库
示例:
C:Usersgeek>git checkout development_branch
切换到分支 'development_branch'
C:Usersgeek>git push master development_branch
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 612 bytes | 204.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
To master
[development_branch] development_branch -> development_branch
我们还可以使用push命令删除远程分支,使用命令git push --delete
。
例如:
C:Usersgeek>git push master --delete development_branch
To master
[deleted] development_branch
git rebase
将不同分支的多个提交合并为一个新的基本提交。在合并所有更改之前,将不同分支的更改逐个提交(线性提交)。
git rebase
— 将提交合并为一个新的基本提交
如果存在冲突,请解决它们并继续rebase:git rebase --continue
要跳过任何更改:git rebase --skip
git remote
检查远程服务器的配置,并允许远程和本地之间的连接访问。
git remote
— 默认情况下,返回'origin',Git给出的远程服务器的默认名称
git remote -v
— 列出所有可用的远程连接的简短名称和URL
git remote add
— 显式添加远程服务器到可用连接中。可以在git命令中使用简短名称而不是提供整个URL。
git remote remove
— 从仓库中删除远程服务器
git reset
返回到之前的提交,并放弃该提交之后的更改
git reset
— 将仓库恢复到指定的提交。Git将保留提交历史,因此您可以使用不同的提交(哈希)进行另一个reset以撤消reset。
git rm
从git中移除特定文件。可以使用reset或checkout命令撤消rm的影响
git rm
— 移除特定文件
要从git中删除文件但在本地(暂存区)保留文件,请使用:
git rm --cached
git show
通过指定其SHA1查看任何对象,例如blob、tree、commit或tag
git show
— 不指定将显示分支上最后一次提交的详细信息。
git show
— 显示由其SHA1 ID指定的对象内容,例如blob ID、tree ID等。要检查对象的类型,请使用命令git cat-file -t
git show –pretty
— 以漂亮的格式显示输出。
您可以提供自定义格式:
git show --pretty='format:名称:'
或者您可以使用其中一个短格式、完整格式、一行格式、中等格式或更完整格式,例如:
git show --pretty='medium'
— 这将显示作者、日期、标题和完整的提交消息
git show --abbrev-commit
— 缩写SHA1
git stash
在当前分支中切换而不进行提交,可以安全地存储未提交的数据
git stash
— 保存工作和索引状态
git stash save
— 保存时给出一条消息
git stash list
— 查看存储内容的列表
git stash apply
— 提交存储的更改。要应用特定存储的更改,请使用存储索引ID和apply
git stash show
— 查看存储文件的内容
git stash drop
— 从队列中删除最近的存储
git status
查看仓库和暂存区的状态,即提交阶段之前的状态。您可以在任何其他git命令之后使用此命令,例如添加、更新或删除文件。
git status
— 显示将要提交的更改,或者未跟踪(未暂存)的更改
例如,如果您在工作目录中添加了一个名为samplefile.txt的文件并想要检查它是否已添加,可以给出上述命令。它将结果输出如下:
在分支 master 上
尚无提交
将要提交的更改:
(使用“git rm --cached…”取消暂存)
新文件:samplefile.txt
git tag
友好的引用用于指示代码中的里程碑或参考点
git tag
— 使用给定的名称创建一个标签
git tag
— 列出所有可用的标签
git tag show
— 显示指定标签的详细信息
git tag -l ".*"
— 显示与指定模式或字符匹配的标签
gitk
启动git用户界面,以在窗口中显示内容、提交、完整差异和其他详细信息
gitk
— 在窗口中打开git仓库以进行可视化
git version
使用git version命令检查您正在使用的git版本。
C:Usersyaoweibin>git version
git version 2.38.0.windows.1
最后的话
本文列出了常用的git命令及其选项。
接下来,您可以查看 GitHub credentials scanner.