为初学者准备的 32 个 Git 命令备忘单
已发表: 2022-09-23GIT 命令备忘单是开发人员的方便参考,包含 git 项目最常用的命令。
什么是 GIT?
GIT 是一个开源存储库,用户可以在其中放置他们的文件,包括代码、zip、文本或整个项目。
它具有多个功能,如协作、版本控制、流程控制等。与其他版本控制系统相比,GIT 更有效地存储文件并提供更好的完整性。 Git 是一个命令行工具。
什么是 GitHub?
凭借其简洁的用户界面,GitHub 作为开发人员的中心,已成为使用最广泛的版本控制系统,任何人都可以在任何地方访问。
Git 工作流程
Git 有不同的工作流程,每个项目都应该有一个基于其需求的工作流程。 Git 工作流只不过是一个轻量级的、基于分支的工作流,它可以帮助定期部署项目的团队。
例如,分支 Git 工作流会创建存储库的本地副本。 因此,每个开发人员都有一个本地工作区和一个中央存储库。 当涉及多个开发人员时,这种工作流程很好,并允许开发人员在对主存储库进行更改之前就分叉副本进行协作。
为什么我们需要 Git?
由于 Git 是一个版本控制系统,因此开发人员会不断地使用它来保存他们的更改、让其他人可以看到它们、将他们的更改与其他人合并等等。
对于 Git 存储库的任何更改,开发人员需要知道正确的命令才能执行正确的操作。 以下是重要且常用的 Git 命令的列表:
常用 Git 命令
混帐添加
将指定的文件添加到暂存中
git add <file> -- add a specific file git add * -- add all the files
git存档
创建提交、分支和树的存档,并将多个文件合并为一个。 您可以在需要时通过提取文件来检索内容
git archive HEAD
— 从 repo 的 HEAD ref 创建一个档案
git archive output = '.tar'
— 将归档文件存储在给定位置
git archive --format=tar.gz
— 指定归档文件的格式,如 tar、zip、tar.gz
git 分支
列出存储库中的所有分支。 如果指定了分支,将创建一个具有该名称的新分支。 要删除分支,请使用带有分支名称的 -d 选项。 要重命名当前分支,请使用 -m。
git branch
— 列出所有分支git branch <branch_name
> — 创建一个名为“branch_name”的新分支,但不签出新分支。
git branch -d <branch_name>
- 删除分支,如果有任何未合并的更改,则阻止删除git branch -D <branch_name>
— 强制删除分支,即使存在未合并的更改git branch -m <branch2>
- 重命名当前分支
git cat 文件
显示存储库对象的内容或大小/类型信息
git cat-file <object>
— 显示对象内容git cat-file -t <object>
— 显示对象的类型git cat-file -s <object>
— 显示对象的大小git cat-file -p <object>
— 以漂亮的方式打印对象的类型git cat-file -e <object>
— 如果对象的格式无效或不存在,则在 stderr 上显示错误git cat-file <type> <object>
— 显示对象的原始内容
git结帐
要在存储库的不同分支之间切换,请小心使用它,因为它没有“撤消”功能。
git checkout <branch_name>
— 签出指定的分支git checkout -b <branch_name>
— 创建一个新分支并切换到这个分支
例如:
C:\Users\geekflare>git checkout -b development_branch Switched to a new branch 'development_branch'
清理干净
清理工作主管。 提交的文件不会被删除
git clean -n
— 列出将被删除的文件git clean -f
- 删除文件
git 克隆
将现有 repo 的副本创建到新目录中。 用于获取中央存储库的开发副本。
git clone <central_repo> <new_dir>
— 将中央仓库的副本创建到新目录中
例如:
C:\Users\geek>git clone geekflare master Cloning into 'master'… done.
git clone -branch <branch> <repo>
— 从提到的存储库中克隆一个分支
git 提交
将更改保存到暂存环境中,以便其他人可以看到。
git commit
— 提交对暂存区的更改git commit -m <useful_msg>
— 在提交时给出一条消息以突出显示所做的更改git commit -a
— 直接提交更改,无需暂存
假设您在工作目录中添加了一个名为 samplefile.txt 的文件,并且想要提交该文件。 给出上述命令后,您将获得输出:
Please enter the commit message for your changes. Lines starting with '#' will be ignored, and an empty message aborts the commit. On branch master Initial commit Changes to be committed: new file: samplefile.txt
发送消息后,将提交更改:
C:\Users\geekflare>git commit -m 'samplemsg' [integration_branch (root-commit) ed52dd0] 'samplemsg' 1 files changed, 24 insertions(+) create mode 100644 samplefile.txt
混帐配置
指定要写入属性值的配置级别。 “本地”级别是默认值(未指定任何内容时)。
git config –local
— 将配置保存在 repo 的 .git 目录中git config –global
— 将配置保存在用户的主目录中git config –system
— 包含所有用户和存储库的配置,位于根目录的 git config 文件中。
混帐差异
比较 git repo 中的更改,可以在 staging 之前、staging 时和 staging(提交)之后完成。
git diff
— 跟踪尚未暂存的 repo 更改git diff --staged
— 跟踪暂存文件的更改(未提交)
git diff HEAD
— 跟踪提交后的文件更改git diff <commit1_id> <commit2_id>
— 跟踪两次提交之间的变化; 您可以使用 ' git log -p --follow --filename
' 找出 commit_ids
获取
获取分支或整个远程存储库
git fetch <remote-url>
— 从远程仓库 URL 获取整个仓库git fetch <branch_url> <branchname>
— 获取特定分支git fetch -all
— 获取远程仓库的所有分支git fetch origin
— 更新本地 repo 并将其与远程 repo 中的新更改同步
git fsck
文件系统检查命令检查数据库对象的有效性和连接性。 它检查对象的 SHA-1ID 和它们建立的连接。 Fsck 对于恢复丢失的提交和文件很有用。
git fsck –full
混帐 gc
在当前存储库上运行垃圾收集并清理未使用的文件。
git gc
git grep
在存储库中搜索特定内容。 Git 提供了许多选项来以不同的方式进行搜索
git grep -i 'search_term'
— 忽略大小写搜索 [Man and man will be the same]
git grep -f <file_name>
— 显示特定文件的匹配模式git grep -e 'search-term'
— 使用 -e 进行模式匹配git grep -E 'regexp|multiple_exp'
搜索正则表达式,我们可以使用管道(OR)运算符搜索多个git grep -n 'expr'
— 匹配行的前缀行号git grep -c 'expr'
— 显示匹配的行数,而不是每行
git ls-树
从当前目录列出树对象的内容。
git ls -tree -d <path>
— 只显示指定的树条目,不显示子条目git ls -tree -r
— 递归到子树git ls -tree -l
— 显示文件(blob)对象的大小git ls -tree --name-only
— 只显示文件名而不是长输出git ls -tree --full-name
— 显示完整路径名,而不仅仅是相对于当前目录的路径
例子:
C:\Users\geek>git ls-tree --full-tree -r HEAD 100644 blob e883e60087e84f1660a9673ccb86eb0adc4f004d samplefile.txt 100644 blob 1426dc6fbff0677a484b248983a8740ff30fbb80 sample_jsindex.js
混帐初始化
创建一个新的空白存储库。 这是您创建 git 项目时执行的第一个命令。

git init
— 在工作目录中创建一个 .git 存储库,
例如,要创建一个名为“geekflare”的新存储库,请提供以下命令:
$ git init geekflare Initialized empty Git repository in C:/Users/geek/geekflare/.git/
git instaweb
通过浏览器浏览 git 存储库的用户界面。 同样使用 CGI 脚本 GitWeb。
git instaweb --httpd=webrick
— 启动服务器 (httpd) 并在页面上打开 Web 浏览器。
要停止服务器,请使用带有 –stop 选项的上述命令。
混帐日志
记录 git 存储库中的每个活动。
git log
— 显示最近的几次提交git log --oneline
— 将输出显示为 SHA 的前 7 个字符和每行一个提交的提交消息git log stat
— 显示有关修改文件的更多信息,例如添加/删除的行数、更改的总记录摘要、添加/删除的行git log --patch (or -p)
— 显示修改的文件、具体更改及其位置git log --graph
— 以图表形式查看日志结果git log -<n>
— 显示最后 'n' 次提交git log --after=<date/x days/yesterday>
— 显示指定日期之后的所有提交。 您可以使用--before
显示指定日期之前的提交git log --author=<author_name>
— 显示特定作者(用户)的提交。
git log --grep=<commit message>
— 根据提交消息过滤提交
git 合并
将所有开发文件集成到一个分支中,合并两个分支,并将多个提交合并到一个历史记录中。 如果发生冲突,合并将停止,并且 git 会显示冲突文件。 解决冲突后,合并将继续。
git checkout -b
— 首先,检出要合并的分支
git add <file>
git commit
— 添加并提交文件
git checkout master
git merge
— 将分支与 master 合并
git 修剪
删除(修剪)从当前分支无法访问的文件。 从分支中删除未使用的文件是一个清理过程
git prune -n
— 不修剪,只显示可以修剪的内容git prune -v
— 显示 prune 执行的操作的输出git prune --progress
— 显示修剪的进度git fetch --prune
— 修剪所有过时的分支
git 拉
它从远程服务器接收数据到工作存储库。 它使用远程存储库中的所有最新文件更新本地(工作)分支。
git pull
— 拉取远程仓库git pull <repo URL>
— 拉取一个特定的远程分支
git 推送
将所有本地更改推送到远程存储库。 这是一个与 pull 和 fetch 命令完全相反的上传过程
git checkout master
— 签出具有最新更改的分支
git push origin master
— 将更改推送到远程仓库
例子:
C:\Users\geek>git checkout development_branch Switched to branch 'development_branch' C:\Users\geek>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
我们还可以使用命令git push --delete <branch>
使用 push 删除远程分支。
例如:
C:\Users\geek>git push master --delete development_branch To master [deleted] development_branch
git rebase
组合来自不同分支的多个提交以创建新的最终基本提交。 在合并所有更改之前很有用,可以一一提交来自不同分支的更改(线性)。
git rebase <branch name>
— 将提交合并为一个最终基数
如果存在任何冲突,请解决它们并继续 rebase:
git rebase --continue
要跳过任何更改:
git rebase --skip
远程git
检查远程服务器的配置并允许远程和本地之间的连接访问。
git remote
— 默认情况下,它返回 'origin',Git 给出的远程服务器的默认名称git remote -v
— 列出所有可用远程连接的短名称和 URL
git remote add <short name> <remote url>
— 将远程服务器显式添加到可用连接中。 短名称可用于 git 命令,而不是提供整个 URL。
git remote remove <remote url/short name>
— 从存储库中删除远程服务器
git 重置
返回上一个提交,并丢弃该提交后所做的更改
git reset <hash of the commit>
— 将 repo 恢复到指定的提交。 Git 将保留提交历史记录,因此您可以使用不同的提交(哈希)进行另一次重置以撤消重置。
git rm
从 git 中删除特定文件。 您可以使用 reset 或 checkout 命令撤消 rm 的影响
git rm <file_ name>
— 删除特定文件
要从 git 中删除文件但将它们保存在本地(暂存)中,请使用:
git rm --cached
git 显示
通过指定其 SHA1 查看任何对象,例如 blob、树、提交或标记
git show
— 不指定 <object> 会显示分支上最后一次提交的详细信息。
git show <SHA1_id>
— 显示由其 SHA1 id 指定的对象的内容,例如,blob id、树 id 等。要检查对象的类型,请使用命令git cat-file -t
git show –pretty
— 以漂亮的格式显示输出。
您可以提供自定义格式:
git show --pretty = 'format:Name: <format>'
或者您可以使用短格式、全格式、单行格式、中格式或更全格式之一,例如:
git show --pretty= 'medium'
——这将显示作者、日期、标题和完整的提交信息
git show --abbrev-commit
— 缩写 SHA1
混帐藏匿
要切换分支而不在当前分支中提交,请安全存储未提交的数据
git stash
— 保存工作和索引状态git stash save <message>
— 保存时给消息git stash list
— 查看隐藏内容列表git stash apply
— 提交隐藏的更改。 要应用特定存储的更改,请使用存储索引 id 和 apply
git stash show
— 查看隐藏文件的内容git stash drop
— 从队列中删除最近的存储
状态
查看repository和staging的状态,即commit stage之前的状态。 您可以在任何其他 git 命令之后使用此命令,例如添加、更新或删除文件
git status
— 显示要提交的更改,或未跟踪(无暂存)的更改
例如,如果您在工作目录中添加一个名为 samplefile.txt 的文件并检查它是否已添加,则可以发出上述命令。 它将导致输出如下:
On branch master No commits yet Changes to be committed: (use "git rm --cached …" to unstage) new file: samplefile.txt
git标签
友好引用用于指示代码中的里程碑或参考点
git tag <tag_name>
— 创建一个给定名称的标签git tag
— 列出所有可用的标签git tag show <tag_name>
— 显示指定标签的详细信息git tag -l “.*”
— 显示匹配指定模式或字符的标签
吉特克
启动 git 用户界面,在窗口中显示内容、提交、完整差异和其他详细信息
gitk
— 在可视化窗口中打开 git repo
git版本
使用 git version 命令来检查你正在使用的 git 的版本。
C:\Users\geekflare>git version git version 2.38.0.windows.1
最后的话
这篇文章列出了最常用的 git 命令及其选项。
接下来,您可以查看 GitHub 凭据扫描程序。