如何使用Git:参考指南

介绍

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

这个备忘单样式指南提供了对在Git存储库中工作和协作有用的命令的快速参考。

如何使用本指南:

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

要完成本教程,您需要一台已经设置好可以使用sudo命令的非root账号的CentOS服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

设置和初始化

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

git --version

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

git init

要复制远程托管的现有Git存储库,您将在repo的URL或服务器位置使用git clone(在后一种情况下,您将使用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模板库

rebase

rebase允许我们通过更改它们所基于的提交来移动分支。通过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的文档。

想要了解更多使用Git的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Use Git: A Reference Guide》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源优测

AutoLine源码分析之调度管理器

AutoLine采用了Apscheduler库来实现AutoLine的测试用例的执行任务的调度管理

1071
来自专栏云计算教程系列

Ubuntu上如何使用GitLab CI搭建持续集成Pipeline

GitLab Community Edition是一个自托管的Git存储库提供程序,具有帮助项目管理和软件开发的附加功能。GitLab提供的最有价值的功能之一是...

3513
来自专栏决胜机器学习

SVN版本控制拾遗

SVN版本控制拾遗 (原创内容,转载请注明来源,谢谢) 一、概念 仓库(repository)是代码总的存放的地方,工作副本(working copy)的每个开...

39311
来自专栏zaking's

走近webpack(0)--正文之前的故事

  在前端工作的过程中,只要你接触过vue,angular,react,gulp就一定知道webpack或者听说过或者使用过webpack,但是或许你对webp...

2904
来自专栏贾老师の博客

git 简易使用备忘

1362
来自专栏前端杂谈

git远程库代码版本回滚方法

36010
来自专栏自然语言处理

GitHub简明操作指南

GitHub的是版本控制和协作代码托管平台。它可以让你和其他人的项目从任何地方合作。Git也是目前世界上最先进的分布式版本控制系统(没有之一)。最初编写用作Li...

1062
来自专栏梧雨北辰的开发录

Git命令语法汇总

本文是在学习廖雪峰Git教程后对常用Git命令的使用总结,仅供在使用Git时方便查找。 ? 一、Git简介 Git是当前最为流行的分布式版本控制系统,尤其是...

3307
来自专栏Brian

Learn Git One

Git 基本原理 Git 属于分布式版本控制系统( Distributed Version Control System,简称 DVCS )之一。客户端并不只提...

3506
来自专栏Samego开发资源

自动化运维之Fabric

2174

扫码关注云+社区

领取腾讯云代金券