如何使用 Git:参考指南
Git 备忘单
介绍
开发人员和开源软件维护人员团队通常通过 Git(一种支持协作的分布式版本控制系统)管理他们的项目。
本速查表式指南提供了一些在 Git 仓库中工作和协作时常用的命令的快速参考。要安装和配置 Git,请务必阅读“如何为开源做出贡献:Git 入门”。
如何使用本指南:
- 本指南采用备忘单格式,包含独立的命令行片段。
- 跳转到与您要完成的任务相关的任何部分。
- 当您看到
highlighted text
本指南的命令时,请记住此文本应引用您自己的存储库中的提交和文件。
设置和初始化
使用以下命令检查您的 Git 版本,这也将确认 Git 已安装。
git --version
您可以使用 初始化当前工作目录作为 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 .
您可以从暂存区中删除文件,同时保留工作目录中的更改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
合并获取的提交。
git merge upstream/master
将本地分支提交推送或传输到远程存储库分支。
git push origin master
从跟踪远程分支获取并合并任何提交。
git pull
检查
显示当前活动分支的提交历史记录。
git log
显示更改特定文件的提交。无论文件是否重命名,此操作都会跟踪该文件。
git log --follow my_script.py
显示一个分支上有而另一个分支上没有的提交。这将显示 上的提交,a-branch
但不在 上的提交b-branch
。
git log a-branch..b-branch
查看参考日志(reflog
)以了解分支和其他参考的提示在存储库中的最后更新时间。
git reflog
通过提交字符串或哈希以更易于人类阅读的格式显示 Git 中的任何对象。
git show de754f5
显示更改
该git diff
命令显示提交、分支等之间的更改。您可以通过Git 文档了解更多详细信息。
比较暂存区中已修改的文件。
git diff --staged
a-branch
显示在 中但不在 中的差异b-branch
。
git diff a-branch..b-branch
显示两个特定提交之间的差异。
git diff 61ce3e6..e221d9c
储藏
有时你会发现自己修改了某些代码,但在完成之前,你必须开始处理其他事情。你还没有准备好提交目前所做的更改,但又不想丢失你的工作。该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}
如果您保存了多个存储并且不再需要使用其中任何一个,则可以使用clear
来删除它们。
git stash clear
忽略文件
如果你想将文件保留在你的本地 Git 目录中,但不想将它们提交到项目中,你可以将这些文件添加到你的.gitignore
文件中,这样它们就不会引起冲突。
使用文本编辑器(例如 nano)将文件添加到.gitignore
文件。
nano .gitignore
要查看文件示例.gitignore
,您可以查看 GitHub 的.gitignore
模板仓库。
变基
变基允许我们通过更改分支所基于的提交来移动分支。通过变基,你可以压缩或修改提交。
您可以通过调用要重新定基的提交次数来启动重新定基(5
在下面的情况下)。
git rebase -i HEAD~5
或者,您可以根据特定的提交字符串或哈希值进行重新定基。
git rebase -i 074a4e5
一旦您压缩或重新修改了提交,您就可以在项目上游代码的最新版本之上完成分支的重新定基。
git rebase upstream/master
要了解有关变基和更新的更多信息,您可以阅读如何变基和更新拉取请求,这也适用于任何类型的提交。
重置
有时,包括在 rebase 之后,你需要重置工作树。你可以使用以下命令重置到特定的提交并删除所有更改。
git reset --hard 1fc6665
要强制将您最后已知的无冲突提交推送到原始存储库,您需要使用--force
。
警告:除非有非常重要的理由,否则强制推送到 master 通常会被反对。在维护自己的代码库时请谨慎使用,在与他人协作时也应尽量避免使用。
git push --force origin master
要从 Git 目录中删除本地未跟踪的文件和子目录以清理工作分支,您可以使用git clean
。
git clean -f -d
如果您需要修改本地存储库,以使其看起来像当前的上游主存储库(即存在太多冲突),则可以执行硬重置。
注意:执行此命令将使您的本地仓库看起来与上游完全相同。任何您所做的但未拉入上游的提交都将被销毁。
git reset --hard upstream/master
结论
本指南介绍了管理存储库和协作软件时可能使用的一些更常见的 Git 命令。
您可以在我们的开源简介教程系列中了解有关开源软件和协作的更多信息:
在使用 Git 的过程中,你可能会发现很多命令和变体很有用。要了解所有可用选项的更多信息,可以运行:
git --help
获取有用的信息。您还可以从Git 官方网站了解更多关于 Git 的信息,并查看 Git 的文档。
本作品采用Creative Commons Attribution-NonCommercial-ShareAlike 4.0 国际许可协议进行许可
文章来源:https://dev.to/digitalocean/how-to-use-git-a-reference-guide-6b6