Git备忘单
介绍
开发人员和开源软件维护人员团队通常通过 Git(一种支持协作的分布式版本控制系统)管理他们的项目。
此备忘单样式指南提供了对在 Git 存储库中工作和协作有用的命令的快速参考。要安装和配置 Git,请务必阅读“如何为开源做出贡献:Git 入门”。
如何使用本指南:
- 本指南采用备忘单格式,带有独立的命令行片段。
- 跳转到与您尝试完成的任务相关的任何部分。
- 当您
<span class="highlight">highlighted text</span>
在本指南的命令中看到时,请记住,此文本应指代您自己 存储库中的提交和文件。
设置和初始化
使用以下命令检查您的 Git 版本,这也将确认安装了 Git:
git --version
Git 允许您配置一些将应用于本地计算机上所有存储库的设置。例如,配置一个用户名,Git 将使用该用户名将您对本地存储库所做的任何更改归功于您:
git config --global user.name “firstname lastname”
配置要与每个历史标记关联的电子邮件地址:
git config --global user.email “valid-email”
还要配置您首选的文本编辑器:
git config --global core.editor “nano”
您可以使用以下命令将当前工作目录初始化为 Git 存储库 init
:
git init
要复制远程托管的现有 Git 存储库,您将使用存储库 git clone
的 URL 或服务器位置(在后一种情况下,您将使用 ssh
):
git clone https://www.github.com/username/repo-name
显示当前 Git 目录的远程存储库:
git remote
要获得更详细的输出,请使用以下 -v
标志:
git remote -v
添加 Git 上游,它可以是 URL,也可以托管在服务器上(在后一种情况下,使用 连接 ssh
):
git remote add upstream https://www.github.com/username/repo-name
分期
当您修改了一个文件并将其标记为下次提交时,它被认为是一个暂存文件。
检查 Git 存储库的状态,包括添加的未暂存的文件和暂存的文件:
git status
要暂存修改后的文件,请使用该 add
命令,您可以在提交前多次运行该命令。如果您进行了要包含在下一次提交中的后续更改,则必须 add
再次运行。
您可以使用以下命令指定特定文件 add
:
git add my_script.py
随着 .
您可以添加在当前目录下的所有文件,包括一个开头的文件 .
:
git add .
如果要添加当前目录中的所有文件以及子目录中的文件,可以使用 -all
或 -A
标志:
git add -A
您可以使用以下命令从暂存中删除文件,同时保留工作目录中的更改 reset
:
git reset my_script.py
承诺
暂存更新后,您就可以提交它们,这将记录您对存储库所做的更改。
要提交暂存文件,您将 commit
使用有意义的提交消息运行该命令,以便您可以跟踪提交:
git commit -m "Commit message"
您可以通过一步提交来压缩暂存所有跟踪的文件:
git commit -am "Commit message"
如果需要修改提交消息,可以使用以下 --amend
标志:
git commit --amend -m "New commit message"
分行
Git 中的分支是指向存储库中提交之一的可移动指针,它允许您隔离工作并管理功能开发和集成。您可以通过阅读Git 文档了解有关分支的更多信息。
使用 branch
命令列出所有当前分支。*
您当前活动的分支旁边会出现一个星号 ( ):
git branch
创建一个新分支。您将留在当前活动的分支上,直到切换到新分支:
git branch new-branch
切换到任何现有分支并将其检出到您当前的工作目录:
git checkout another-branch
您可以使用以下 -b
标志来合并新分支的创建和检出:
git checkout -b new-branch
重命名您的分支名称:
git branch -m current-branch-name new-branch-name
将指定分支的历史记录合并到您当前正在使用的分支中:
git merge branch-name
中止合并,以防出现冲突:
git merge --abort
您还可以选择要与 cherry-pick
引用特定提交的字符串合并的特定提交:
git cherry-pick f7649d0
当您合并了一个分支并且不再需要该分支时,您可以将其删除:
git branch -d branch-name
如果您尚未将分支合并到主分支,但确定要删除它,则可以强制 删除分支:
git branch -D branch-name
协作和更新
要从另一个存储库(例如远程上游)下载更改,您将使用 fetch
:
git fetch upstream
合并获取的提交。请注意,某些存储库可能会使用 master
而不是 main
:
git merge upstream/main
将您的本地分支提交推送或传输到远程存储库分支:
git push origin main
从跟踪远程分支获取并合并任何提交:
git pull
检查
显示当前活动分支的提交历史:
git log
显示更改特定文件的提交。无论文件重命名如何,这都遵循文件:
git log --follow my_script.py
显示在一个分支上而不是在另一个分支上的提交。这将显示在提交 <span class="highlight">a-branch</span>
不属于上 <span class="highlight">b-branch</span>
:
git log a-branch..b-branch
查看参考日志 ( reflog
) 以了解分支提示和其他参考在存储库中的最后更新时间:
git reflog
通过其提交字符串或哈希以更易读的格式显示 Git 中的任何对象:
git show de754f5
显示更改
该 git diff
命令显示提交、分支等之间的更改。您可以通过Git 文档更全面地了解它。
比较暂存区上的修改后的文件:
git diff --staged
显示在 <span class="highlight">a-branch</sp
但不在的差异
an><span class="highlight">b-branch</span>
:
git diff a-branch..b-branch
显示两个特定提交之间的差异:
git diff 61ce3e6..e221d9c
通过从项目中删除文件来跟踪路径更改并暂存此删除以进行提交:
git rm file
或者更改现有文件路径,然后暂存移动:
git mv existing-path new-path
检查提交日志以查看是否移动了任何路径:
git log --stat -M
藏匿
有时您会发现您对某些代码进行了更改,但在完成之前您必须开始处理其他代码。您还没有准备好提交到目前为止所做的更改,但您不想丢失您的工作。该 git stash
命令将允许您保存本地修改并恢复到与最近 HEAD
提交一致的工作目录。
隐藏你当前的工作:
git stash
查看您当前存储的内容:
git stash list
您的藏匿处将命名为 stash@{0}
、stash@{1}
等。
显示有关特定存储的信息:
git stash show stash@{0}
要将当前存储中的文件从存储中取出,同时仍保留存储,请使用 apply
:
git stash apply stash@{0}
如果您想从存储中取出文件,并且不再需要存储,请使用 pop
:
git stash pop stash@{0}
如果您不再需要保存在特定存储中的文件,您可以 drop
存储:
git stash drop stash@{0}
如果您保存了多个 stash 并且不再需要使用它们中的任何一个,则可以使用 clear
删除它们:
git stash clear
忽略文件
如果您想将文件保留在本地 Git 目录中,但不想将它们提交到项目中,则可以将这些文件添加到您的 .gitignore
文件中,以免它们引起冲突。
使用文本编辑器(例如 nano)将文件添加到 .gitignore
文件中:
nano .gitignore
复制
要查看 .gitignore
文件示例,您可以查看 GitHub 的.gitignore
模板 repo。
变基
rebase 允许我们通过更改分支所基于的提交来移动分支。通过变基,您可以压缩或改写提交。
您可以通过调用您想要变基的提交数量来启动变基(5
在下面的情况下):
git rebase -i HEAD~5
或者,您可以根据特定的提交字符串或哈希值进行变基:
git rebase -i 074a4e5
压缩或改写提交后,您可以在项目上游代码的最新版本之上完成分支的变基。请注意,某些存储库可能会使用 master
而不是 main
:
git rebase upstream/main
恢复和重置
您可以使用 来恢复对给定提交所做的更改 revert
。为了实现这一点,您的工作树需要保持干净:
git revert 1fc6665
有时,包括在 rebase 之后,您需要重置您的工作树。您可以使用以下命令重置为特定提交,并删除所有更改 :
git reset --hard 1fc6665
要将最后一次已知的非冲突提交强制推送到原始存储库,您需要使用 --force
:
警告 :master
除非有非常重要的原因,否则强制推送到主(有时)分支通常是不受欢迎的。在您自己的存储库上工作时要谨慎使用,并在合作时努力避免这种情况。
git push --force origin main
要从 Git 目录中删除本地未跟踪的文件和子目录以获得干净的工作分支,您可以使用 git clean
:
git clean -f -d
需要修改你的本地仓库,让它看起来像当前的上游主分支(也就是冲突太多),你可以执行硬重置:
注意 :执行此命令将使您的本地存储库看起来与上游完全一样。您所做的任何提交但未进入上游的提交都将被销毁 。
git reset --hard upstream/main
结论
本指南涵盖了您在管理存储库和协作软件时可能使用的一些更常见的 Git 命令。