如何使用Git:参考指南

这个备忘单样式指南提供了一些快速参考,您可以在管理存储库和协作软件时使用一些更常见的Git命令。

一个GitCheat表

介绍

开发人员和开源软件维护人员团队通常通过支持协作的分布式版本控制系统Git来管理他们的项目。

这个备忘单样式指南提供了对在Git存储库中工作和协作有用的命令的快速参考。 要安装和配置Git,请务必阅读“ 如何为开源贡献:Git入门 ”。

如何使用本指南:

  • 本指南采用备忘单格式,包含自包含的命令行代码段。
  • 跳转到与您要完成的任务相关的任何部分。
  • 当您在本指南的命令中看到highlighted text时,请记住,此文本应引用您自己的存储库中的提交和文件。

设置和初始化

使用以下命令检查您的Git版本,该命令还将确认已安装Git。

git --version

您可以使用init将当前工作目录初始化为Git存储库。

git init

要复制远程托管的现有Git存储库,您将使用git clone和repo的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

随着. 您可以添加当前目录中的所有文件,包括以a开头的文件.

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

显示一个分支上的提交,而不显示另一个分支上的提交。 这将显示不在b-branch上的b-brancha-branch提交。

git log a-branch..b-branch

查看引用日志( reflog )以查看分支和其他引用的提示何时在存储库中最后更新。

git reflog

通过其提交字符串或哈希以更易于阅读的格式显示Git中的任何对象。

git show de754f5

显示更改

git diff命令显示提交,分支等之间的更改。 您可以通过Git文档更全面地了解它。

比较暂存区域中的已修改文件。

git diff --staged

显示a-branch的内容的diff,但不在b-branch

git diff a-branch..b-branch

显示两个特定提交之间的差异。

git diff 61ce3e6..e221d9c

积攒

有时您会发现您对某些代码进行了更改,但在完成之前,您必须开始处理其他内容。 您还没有准备好提交您目前所做的更改,但您不想丢失您的工作。 git stash命令将允许您保存本地修改并恢复到与最近的HEAD提交一致的工作目录。

存放你当前的工作。

git stash

看看你目前藏匿了什么。

git stash list

您的stash@{0}将被命名为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模板库

垫底

rebase允许我们通过更改它们所基于的提交来移动分支。 通过变基,您可以压缩或重新提交提交。

您可以通过调用要进行rebase的提交次数来启动rebase(在下面的情况下为5 )。

git rebase -i HEAD~5

或者,您可以根据特定的提交字符串或哈希进行rebase。

git rebase -i 074a4e5

一旦您压缩或重写了提交,您就可以在项目上游代码的最新版本之上完成您的分支的rebase。

git rebase upstream/master

要了解有关变基和更新的更多信息,您可以阅读如何重新定位和更新拉取请求 ,这也适用于任何类型的提交。

重置

有时,包括在rebase之后,您需要重置您的工作树。 您可以使用以下命令重置为特定提交,并删除所有更改

git reset --hard 1fc6665

要强制将最后一次已知的非冲突提交推送到源存储库,您需要使用--force

警告 :除非有一个非常重要的理由,否则强行推向掌握者往往不赞成。 在处理自己的存储库时谨慎使用,并在协作时避免这种情况。

git push --force origin master

要从Git目录中删除本地未跟踪文件和子目录以获得干净的工作分支,可以使用git clean

git clean -f -d

如果您需要修改本地存储库以使其看起来像当前的上游主服务器(即冲突太多),则可以执行硬重置。

注意 :执行此命令将使您的本地存储库看起来与上游完全相同。 您所做的任何提交但未被拉入上游的提交都将被销毁

git reset --hard upstream/master

结论

本指南介绍了在管理存储库和协作软件时可能使用的一些更常见的Git命令。

您可以在我们的开源简介教程系列中了解有关开源软件和协作的更多信息:

作为Git工作的一部分,您可能会发现许多其他命令和变体。 要了解有关所有可用选项的更多信息,您可以运行:

git --help

接收有用的信息。 您还可以阅读更多关于Git的信息,并从官方Git网站上查看Git的文档。


分享按钮