翻译&转载:https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners

初学者Git和GitHub简介(教程)

我们 在HubSpot 为初学者带来了一个使用git和GitHub的研讨会。我首先浏览了关于git的基础知识和背景的幻灯片演示,然后我们分成小组来完成我创建的教程,以模拟在一个大型协作项目上工作。事件发生后我们得到了反馈,这是一个有用的,实用的介绍。因此,如果您也是git的新手,请按照以下步骤轻松更改代码库,打开拉取请求(PR),并将代码合并到主分支中。一个重要的git和GitHub术语以粗体显示,并附有官方git参考资料的链接。

第0步:安装git并创建一个GitHub帐户

你要做的前两件事是安装git并创建一个免费的GitHub帐户。

按照此处的说明 安装git(如果尚未安装)。请注意,对于本教程,我们将仅在命令行上使用git。虽然有一些很棒的git GUI(图形用户界面),但我认为首先使用git特定命令学习git更容易,然后一旦你对命令更熟悉就尝试git GUI。

完成后,在此处创建一个GitHub帐户  。(帐户对于公共存储库是免费的,但私有存储库需要付费。)

现在,你将有机会亲自使用 Git,并在 Asteroids 版本库上练习使用这些命令。为此,必须安装 Git。如果已安装 Git,请使用命令 git --version 查看其版本。如果版本为 1.8 或更高,则可以继续下一步。否则,强烈建议你进行升级,因为 Git 在版本 1.8 中添加了许多新功能,而且我们假定你装有该版本。

如果你还未安装 Git,或者如果需要升级,现在请按照此 Wiki 页面上的说明来执行操作。如果遇到问题,请在论坛中发贴求助。

第1步:创建一个本地git存储库

使用git在本地计算机上创建新项目时,首先要创建一个新的  存储库 (或者通常是“ repo”)。

要使用git,我们将使用终端。如果您对终端和基本命令没有太多经验,请查看本教程  (尤其是“导航文件系统”和“移动”部分)。

首先,打开终端并使用cd(更改目录)命令移动到要将项目放置在本地计算机上的位置。例如,如果桌面上有“项目”文件夹,则可以执行以下操作:

要在文件夹的根目录中初始化git存储库,请运行git init 命令:

$ git init

第2步:向repo添加新文件

继续使用您喜欢的任何文本编辑器或运行touch命令将新文件添加到项目中。

一旦你在包含git repo的文件夹中添加或修改了文件,git就会发现在repo中已经进行了更改。但是,git不会正式跟踪文件(也就是说,将其置于提交中 - 我们将在下面详细讨论提交),除非您明确告诉它。

创建新文件后,您可以使用该git status命令查看git知道哪些文件存在。

MacdeMacBook-Pro:TangPoets mac$ git status
位于分支 master
您的分支领先 'origin/master' 共 1 个提交。(使用 "git push" 来发布您的本地提交)无文件要提交,干净的工作区

这基本上是说,“嘿,我们注意到你创建了一个名为mnelson.txt的新文件,但除非你使用' git add' 命令,否则我们不会对它做任何事情。”

插曲:登台环境,提交和您

您第一次学习git时最困惑的部分之一是登台环境的概念以及它与提交的关系。

一个  承诺 是因为你犯了一个提交最后一次是什么文件你已经修改的记录。基本上,您对repo进行了更改(例如,添加文件或修改文件),然后告诉git将这些文件放入提交中。

提交构成了项目的本质,允许您随时返回项目状态。

那么,你如何告诉git将哪些文件放入提交中?这是登台环境 或  索引的用武之地。如步骤2所示,当您对repo进行更改时,git会注意到文件已更改但不会对其执行任何操作(例如在提交中添加它)。

要将文件添加到提交,首先需要将其添加到登台环境。为此,您可以使用  git add<filename> 命令(请参阅下面的步骤3)。

一旦你使用git add命令将你想要的所有文件添加到登台环境,你就可以告诉git使用git commit 命令将它们打包到一个提交中。 

注意:暂存环境(也称为“暂存”)是新的首选术语,但您也可以将其称为“索引”。

# 使用git add . 命令将此目录下新增加的所有文件提交到暂存区中
$ git add .# 使用git add filename 命令将特定文件提交到暂存区中
$ git add [filename]
# 使用 git commit -m ' your message ' 命令,将修改提交到本地git仓库
$ git commit -m ' your message ' 

第3步:将文件添加到登台环境

使用git add命令将文件添加到登台环境。

如果重新运行git status命令,您将看到git已将该文件添加到登台环境(请注意“要提交的更改”行)。

# 使用 git status 查看当前状态
$ git status

再次重申,该文件已  不 尚未添加到提交,但它即将被。

第4步:创建提交

是时候创建你的第一个提交了!

运行命令 git commit -m "Your message about the commit"

# 使用 git commit -m ' your message ' 命令,将修改提交到本地git仓库
$ git commit -m ' your message ' # 使用 git log 查看刚才的提交记录,你会看见如下信息 ,其中HEAD指示当前你的提交状态,master表示您当前的分支名称,(origin/master) 表示远程仓库当前的提交状态 ,每个commit后面有个长串的hash值
$ git log
commit 204f2469f11888cafdbd9db41650da9764c9c149 (HEAD -> master)
Author: miazzy <qq695926920@163.com>
Date:   Sat Dec 8 21:24:33 2018 +0800新增主分支说明
commit b8ee33f8333ab85697f0e29cea7b2ea390380647 (origin/master)
Author: miazzy <qq695926920@163.com>
Date:   Fri Nov 2 12:35:04 2018 +0000Add contribution guide# 使用 git reset hashcode , 回退到先前的提交,这个hashcode就是commit后面的一长串值,不过你不用填全部,只取前面几个就行了,下面命令,将回退到 (origin/master)的提交状态上来
$ git reset b8ee33 

提交结束时的消息应该与提交包含的内容相关 - 也许它是一个新功能,也许它是一个错误修复,也许它只是修复一个错字。不要像“asdfadsf”或“foobar”这样的消息。这让其他人看到你的承诺让人伤心。非常,非常,悲伤。

第5步:创建一个新分支

现在你已经做了一个新的提交,让我们尝试一些更高级的东西。

假设您要创建新功能但担心在开发功能时对主项目进行更改。这就是git分支的 用武之地。

分支允许您在项目的“状态”之间来回移动。例如,如果要向网站添加新页面,则可以为该页面创建新分支,而不会影响项目的主要部分。完成页面后,您可以  更改从分支合并到主分支中。当你创建一个新的分支时,  Git会  跟踪你的分支“分支”的提交,因此它知道所有文件背后的历史。

假设您在主分支机构并且想要创建一个新分支来开发您的网页。这是你要做的:跑。此命令将自动创建一个新分支,然后在其上“检查出来”,这意味着git会将您移动到主分支之外的那个分支。 git checkout -b <my branch name>

运行上述命令后,您可以使用该git branch命令确认您的分支已创建:

# 使用 git branch 分支名称 创建新的分支,下面命令将创建一个名为test的分支
$ git branch test# 使用 git branch 命令,查看当前所有分支信息,即git branch
$ git branch # 使用 git checkout 分支名称,将切换到制定分支
$ git checkout master  #切换到master分支
$ git checkout test    #切换到刚才创建的test分支上

旁边带有星号的分支名称表示您在该给定时间指向的分支。

现在,如果您切换回主分支并进行更多提交,则在将这些更改合并到新分支之前,新分支将不会看到任何这些更改。

第6步:在GitHub上创建一个新的存储库

如果您只想在本地跟踪代码,则无需使用GitHub。但是如果你想与团队合作,你可以使用GitHub来协同修改项目的代码。

要在GitHub上创建新的repo,请登录并转到GitHub主页。您应该看到一个绿色的“+新存储库”按钮:

点击按钮后,GitHub会要求您为您的仓库命名,并提供简要说明:

填写完信息后,按“创建存储库”按钮创建新的存储库。

GitHub将询问您是否要从头开始创建新的仓库,或者是否要添加您在本地创建的仓库。在这种情况下,由于我们已经在本地创建了一个新的repo,我们希望将它推送到GitHub,所以请按照'....或从命令行推送现有的存储库'  部分:

(您需要将第一个命令行中的URL更改为GitHub在此部分中列出的内容,因为您的GitHub用户名和repo名称不同。)

PS:当前您也可以通过搭建GitLab仓库,来创建一个类似GitHub一样的运行在企业内部的私有Git仓库平台

第7步:将分支推送到GitHub

现在我们将把你的分支中的提交送到你的新GitHub仓库。这允许其他人看到您所做的更改。如果它们已获得存储库所有者的批准,则可以将更改合并到主分支中。

要将更改推送到GitHub上的新分支,您需要运行  GitHub将自动在远程存储库上为您创建分支:

git push origin yourbranchname

您可能想知道上面命令中“origin”字的含义。当您将远程存储库克隆到本地计算机时,git会为您创建别名。在几乎所有情况下,这个别名都被称为“ 起源”。它本质上是远程存储库URL的简写。因此,要将更改推送到远程存储库,您可以使用以下命令:或

 git push git@github.com:git/git.git yourbranchname

git push origin yourbranchname

(如果这是您第一次在本地使用GitHub,它可能会提示您使用您的GitHub用户名和密码登录。)

如果刷新GitHub页面,您会看到说明您的名字的分支刚刚被推入存储库。您还可以单击“分支”链接以查看其中列出的分支。

现在单击上面屏幕截图中的绿色按钮。我们打算提出拉动请求

第8步:创建拉取请求(PR)

拉取请求(或PR)是一种提醒回购所有者您希望对其代码进行某些更改的方法。它允许他们在将更改放在主分支上之前检查代码并确保它看起来很好。

这是PR页面在您提交之前的样子:

这就是您提交PR请求后的样子:

您可能会在底部看到一个显示“合并拉取请求”的绿色大按钮。单击此按钮表示您将更改合并到主分支中。

请注意,此按钮不会始终为绿色。在某些情况下,它会是灰色的,这意味着你面临着合并冲突。这是当一个文件中的更改与另一个文件中的更改冲突时,git无法确定要使用的版本。你必须手动进入并告诉git使用哪个版本。

有时您将成为共同所有者或回购的唯一所有者,在这种情况下,您可能不需要创建PR来合并您的更改。但是,创建一个仍然是一个好主意,这样您就可以保留更新的更新历史记录,并确保在进行更改时始终创建新分支。

第9步:合并PR

继续,然后单击绿色的“合并拉取请求”按钮。这会将您的更改合并到主分支中。

当你完成后,我建议你删除你的分支(太多的分支可能会变得混乱),所以也要点击那个灰色的“删除分支”按钮。

您可以通过单击新仓库第一页上的“提交”链接,仔细检查您的提交是否已合并。

这将显示该分支中所有提交的列表。你可以看到我刚刚合并的那个(Merge pull request#2)。

您还可以 在右侧看到提交的哈希码。哈希码是该特定提交的唯一标识符。它对于引用特定提交和撤消更改(使用git revert <hash code number> 命令回溯)非常有用。

$ git revert HashCodeNumber

第10步:在GitHub上更改回到您的计算机

现在,GitHub上的回购看起来与您在本地机器上的回购略有不同。例如,您在分支中进行的并且合并到主分支的提交在本地计算机的主分支中不存在。

为了获得您或其他人在GitHub上合并的最新更改,请使用该git pull origin master 命令(在处理master分支时)。

git pull origin master

这将显示已更改的所有文件及其更改方式。

现在我们可以git log再次使用该命令查看所有新提交。

(您可能需要将分支切换回主分支。您可以使用该git checkout master 命令执行此操作。)

# 切换回主分支
$ git checkout master

第11步:享受你的荣耀

您已成功制作PR并将代码合并到主分支。恭喜!如果您想更深入地潜水,请查看此Git101文件夹中的文件, 以获取有关使用git和GitHub的更多提示和技巧。 我还建议您花一些时间与您的团队一起模拟像我们这样做的小型团队项目。让您的团队使用您的团队名称创建一个新文件夹,并添加一些带有文本的文件。然后,尝试将这些更改推送到此远程仓库。这样,您的团队就可以开始更改他们最初未创建的文件并使用PR功能进行练习。并且,使用GitHub上的git blame和git history工具来熟悉跟踪文件中的更改以及进行这些更改的人员。

初学者Git和GitHub简介(教程)相关推荐

  1. git和github简介

    git和github简介 写在前面,本文是总结实验楼免费课程写的笔记 实验楼-git教程原地址 一.git 与 github的来历 Linux 之父 Linus 在 1991 年创建开源的 Linux ...

  2. Git和Github简单教程

    网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在一些当前用不到的命令上. 这篇文章主要的目标是用较少的时间学习Git和Gi ...

  3. Git和GitHub使用教程

    Git和GitHub使用教程 转载于 –https://www.jianshu.com/p/296d22275cdd MachinePlay 3 2018.12.20 00:18:30 字数 4,36 ...

  4. Git和Github简单教程【转】

    转自:https://www.cnblogs.com/schaepher/p/5561193.html#clone 原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但 ...

  5. GIT 与 GitHub简介

    GIT 简介 1.什么是git git是一个开源的分布式版本控制系统,用于高效的管理各种大小项目和文件. 2.代码管理工具的用途 防止代码丢失,做备份 项目的版本管理和控制,可以通过设置节点进行跳转 ...

  6. linux下github使用教程,Linux下git操作GitHub步骤教程

    1.安装git sudo apt-get install git-core git-gui git-doc 2.在客户端安全登陆 cd ~/.ssh 如果提示"没有文件目录",说明 ...

  7. Android开发工具:Git,Github,GitBook

    从0开始学习GitHub系列 原文链接:http://blog.csdn.net/column/details/13170.html,原创发布于微信公众号 AndroidDeveloper「googd ...

  8. git、GitHub、Gitee(码云)、GitBook、Copilot、GitLab概述

    一.git 从一般开发者的角度来看,git有以下功能: 1.从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上. 2.在自己的机器上根据不同的开发目的,创建分支,修改代码. 3.在单机上自己 ...

  9. 轻松Git与Github入门

    文章目录 前言 一.版本控制系统介绍 1.版本控制系统的概念 2.版本控制系统功能 3.版本控制系统分类 二.Git 与GitHub 简介 1.Git 2.GitHub 三.Git账户注册与管理 1. ...

最新文章

  1. Laravel的请求声明周期
  2. jquery怎么判断不同的字显示不同的颜色_这个双十一,摄影师的显示器该换了,优派VP2785-2K显示器评测_显示器...
  3. 在 js 中怎样获得 checkbox 里选中的多个值?(jQuery)
  4. 安徽破获以虚拟数字货币增值为幌子网络传销案,涉案逾2亿元
  5. oracle Dataguard数据库不同步处理备忘
  6. python生成一组随机数_python怎么产生不重复的随机数
  7. 【博客迁移】hyrepo.com
  8. java计算机毕业设计中小学生错题管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  9. 里氏替换原则-正方形是长方形
  10. 单片机函数:_crol_和_cror_
  11. 【用python写一个简易的消息轰炸代码】
  12. 实现人脸手动祛痘效果---OpenCV-Python开发指南(60)
  13. 计算机分区硬盘有写保护,磁盘被写保护怎么解除的教程详解【图解】
  14. 黑电行业越来越难,海信、TCL、创维、康佳、长虹急需破局
  15. vue和java图片上传
  16. java开发工具(3)你真的会用IDEA么?(下)keyMap、Project Structure功能介绍
  17. 高并发部署策略 多副本服务+nginx均衡负载
  18. 绝了!美图技术专家获取肉鸡服务器密码如探囊取物
  19. MTK(mt6797)-DTS修改---I2C设备(Kernrl3.18)
  20. 将matlab文件写成csv格式

热门文章

  1. html5游戏制作入门系列教程(八)
  2. 图解SQL inner join、left join、right join、full outer join、union、union all的区别
  3. UIControl IOS控件编程
  4. 5个常用的htaccess技巧
  5. LeetCode 160. Intersection of Two Linked Lists
  6. 加载本地json文件,并利用批处理调用Chrome显示html
  7. 动态数组的各种操作 0104 c#
  8. dj鲜生-用户中心-个人信息
  9. dj鲜生-11-优化url-合并视图函数
  10. django-一对多关系