git 创建本地存储库

读:

  • 第1部分:什么是Git?
  • 第2部分:Git入门
  • 第3部分:创建第一个Git存储库
  • 第4部分:如何在Git中还原旧文件版本
  • 第5部分:3个用于Git的图形工具
  • 第6部分:如何构建自己的Git服务器
  • 第7部分:如何使用Git管理二进制Blob

现在是时候学习如何创建自己的Git存储库,以及如何添加文件和进行提交了。

在本系列的前几期中 ,您学习了如何与Git作为最终用户进行交互。 您是个漫无目的的流浪者,偶然发现了一个开源项目的网站,克隆了一个存储库,然后继续生活。 您了解到,与Git进行交互并没有您想象中的那样令人困惑,并且也许您已经确信是时候开始利用Git进行自己的工作了。

虽然Git绝对是大型软件项目的首选工具,但它不仅适用于大型软件项目。 它可以管理您的杂货清单(如果它们对您来说如此重要,也许对您而言很重要!),您的配置文件,日记或日记,正在编写的小说甚至是源代码!

这是值得做的; 毕竟,什么时候您曾经生气过拥有刚刚被破坏而无法识别的某些东西的备份副本?

除非您使用它,否则Git无法为您工作,而且没有比现在更合适的时间了。 或者,翻译成Git,“没有像origin HEAD这样的push ”。 我保证,稍后您会明白的。

录音类比

我们倾向于从快照的角度来谈论计算机成像,因为我们大多数人都可以认同使相册充满特定时刻的想法。 但是,将Git更像是模拟音频录音可能会更有用。

如果您不熟悉传统的录音棚磁带,它有几个组成部分:它包含可向前或向后旋转的卷轴,用于保存声波的磁带,以及用于在磁带上记录或检测声波并呈现它们的播放头。给听众。

除了向前播放磁带外,还可以倒带以返回到磁带中的上一个点,或者快进以向前跳到下一个点。

想象一下1970年代的乐队录制到磁带上的情况。 您可以想象一遍又一遍地练习一首歌,直到所有部分都完美无缺,然后放下曲目。 首先,您先录制鼓,再录制贝斯,再录制吉他,再录制人声。 每次录制时,录音室工程师都会倒带,并将其置于循环模式,以便在您演奏时播放前一部分。 也就是说,如果您使用低音,则在演奏时会听到背景中的鼓声,然后吉他手会听到鼓声和低音(以及牛铃)等等。 在每个循环中,您都在弹奏该部分,然后在下一个循环中,工程师按下“ 录音”按钮,并将性能放到磁带上。

如果您决定对正在处理的内容进行重新混合,则还可以完全复制并换出一盘磁带。

既然我已经希望在70年代画出生动的罗杰·迪恩(Roger Dean)品质的工作室生活形象,让我们将其转化为Git。

创建一个Git仓库

第一步是出去为我们的虚拟磁带卡座购买一些磁带。 用Git来讲,这就是存储库 ; 它是所有工作将要进行的媒介或领域。

任何目录都可以成为Git存储库,但首先让我们开始一个新的目录。 它需要三个命令:

  • 创建目录(如果愿意,可以在GUI文件管理器中执行此操作)。
  • 在终端上访问该目录。
  • 将其初始化为由Git管理的目录。

具体来说,运行以下命令:

$ mkdir ~ / jupiter  # make directory
$ cd ~ / jupiter     # change into the new directory
$ git init .       # initialise  your new Git repo

在此示例中, jupiter文件夹现在是一个空但有效的Git存储库。

这就是全部。 您可以克隆存储库,可以在历史记录中前进和后退(一旦它具有历史记录),创建备用时间表,Git通常可以执行的所有其他操作。

在Git存储库中的工作与在任何目录中的工作相同。 创建文件,将文件复制到目录中,然后将文件保存到目录中。 您可以照常做所有事情; 在参与之前,Git不会参与。

在本地Git存储库中,文件可以具有以下三种状态之一:

  • 未跟踪:您在存储库中创建但尚未添加到Git的文件。
  • 已跟踪:已添加到Git的文件。
  • 已暂存:已更改并添加到Git提交队列的跟踪文件。

您添加到Git存储库中的任何文件都会以未跟踪文件的形式开始存在。 该文件存在于您的计算机上,但是您尚未告诉Git。 以我们的磁带录音机为例,磁带录音机甚至还没有打开。 乐队只是在工作室里闲逛,还没准备好录制。

这完全可以接受,Git会在发生时通知您:

$ echo "hello world" > foo
$ git status
On branch master
Untracked files:
( use "git add <file>..." to include in what will be committed )    
foo    
nothing added but untracked files present ( use "git add" to track )

如您所见,Git还告诉您如何开始跟踪文件。

没有Git的Git

在GitHub或GitLab上创建存储库更加棘手和尖锐。 这并不困难; 您单击“ 新建存储库”按钮,然后按照提示进行操作。

最好包含一个README文件,以使闲逛的人们对您的存储库的用途有所了解,并且克隆一个非空的存储库会更加令人满意。

克隆存储库与通常没什么不同,但是获得在GitHub上写回该存储库的权限稍微复杂一些,因为要向GitHub进行身份验证,您必须具有SSH密钥。 如果您使用的是Linux,请使用以下命令创建一个:

 $  ssh-keygen 

然后复制您的新密钥,即纯文本。 您可以在纯文本编辑器中将其打开,或使用cat命令:

 $  cat ~ / .ssh / id_rsa.pub 

现在,将您的密钥粘贴到GitHub的SSH配置或GitLab配置中 。

只要您通过SSH克隆GitHub项目,就可以写回存储库。

或者,您可以使用GitHub的文件上传器界面添加文件,而无需在系统上安装Git。

追踪档案

正如git status的输出告诉您的那样,如果您希望Git开始跟踪文件,则必须git add它。 git add操作将文件放置在特殊的暂存区域中 ,在该暂存区域中 ,文件等待提交 ,或者保留给快照中的后代。 git add是区分您要包含在快照中的文件与您至少要暂时忽略Git的新文件或临时文件。

以我们的磁带录音机为例,此操作将打开磁带录音机并将其武装起来进行记录。 您可以按下录音暂停按钮,或在播放循环中等待下一个曲目放下时,对磁带盒进行拍照。

添加文件后,Git会将其标识为跟踪文件:

$ git add foo
$ git status
On branch master
Changes to be committed:
( use "git reset HEAD <file>..." to unstage )
new file:   foo

将文件添加到Git的跟踪系统不会进行录音。 它只是将文件放在舞台上以准备录制。 添加文件后,您仍然可以更改文件; 它一直处于跟踪状态,因此可以继续进行改进或更改(然后再次添加以获取这些更改),然后再将其提交给“磁带”。 但请注意:您尚未录制,因此,如果您在完美的文件中破坏了某些内容,则还没有回到过去,因为您从未在磁带上拥有完美的时刻。

如果您确定该文件尚未真正准备好记录在Git历史记录中,则可以取消登台,就像Git消息所述:

 $  git reset HEAD foo 

实际上,这使磁带库无法进行准备录音,而您又回到了在录音室里闲逛的状态。

重大承诺

在某个时候,您将要承诺一些事情; 在我们的磁带录音机比喻中,这意味着最终要按唱片并在磁带上放一曲。

在项目生命的不同阶段,按下记录按钮的频率会有所不同。 例如,如果您正在通过一个新的Python工具包破解自己的方式并最终设法使一个窗口出现,那么您肯定会想提交,以便在以后尝试时不可避免地破坏它时可以依靠一些东西淘汰新的显示选项。 但是,如果您正在Inkscape中绘制一些新图形的草稿,则可能要等到有了想要开发的东西后再提交。 但最终,由您决定执行的频率取决于您; Git不会“花费”太多,而如今的硬盘驱动器很大,所以我认为越好越好。

提交将所有暂存的文件记录在存储库中。 Git只记录被跟踪的文件,也就是说,您在过去某个时间执行git add任何文件。 自上次提交以来已被修改。 如果不存在先前的提交,则所有跟踪的文件都将包含在提交中,因为它们从不存在变为现有,从Git的角度来看,这是一个相当大的修改。

要提交,请运行以下命令:

 $  git commit -m 'My great project, first commit.' 

这将保留所有供后代使用的文件(或者,如果您使用Gallifreyan,它们将成为“固定时间点”)。 您不仅可以在Git日志中看到commit事件,还可以看到指向该提交的引用指针:

$ git log --oneline
55df4c2 My great project, first commit.

有关更详细的报告,只需使用不带--oneline选项的git log

在此示例中,提交的参考号为55df4c2 。 这称为提交哈希 ,它代表您刚录制的所有新资料,并覆盖在先前的录音上。 如果您需要“倒回”历史记录中的该点,则可以使用该哈希作为参考。

您可以将提交哈希视为录音带上的SMPTE时间码 ,或者,如果我们稍稍推翻类比,则可以是黑胶唱片上的歌曲之间的较大差距之一,或CD上的曲目编号。

在进一步更改文件并将其添加到阶段中并最终提交它们时,您会产生新的提交哈希,每个哈希都用作指向生产的不同版本的指针。

这就是为什么他们称Git为版本控制系统,Charlie Brown。

在下一篇文章中,我们将探索您需要了解的有关Git HEAD的所有信息,并且将无私地揭示时光旅行的秘密。 没什么大不了的,但是您需要阅读它(或者您已经读过?)。

翻译自: https://opensource.com/life/16/7/creating-your-first-git-repository

git 创建本地存储库

git 创建本地存储库_创建您的第一个Git存储库相关推荐

  1. git reset后本地拉取_一份值得收藏的 Git 异常处理清单

    ? 这是第 54篇不掺水的原创,想要了解更多,请戳上方蓝色字体:政采云前端团队关注我们吧- 本文首发于政采云前端团队博客:一份值得收藏的 Git 异常处理清单 https://www.zoo.team ...

  2. php 怎么生成本地连接地址,电脑如何创建本地连接?电脑创建本地连接的操作方法...

    近期好多用户想要在电脑系统中创建本地连接,但是要如何创建呢?网上搜索系统创建本地连接的方法内容比较少,有不少的用户想要创建本地连接但是又不知道方法,为此感到很郁闷,下面,小编就给大家介绍电脑创建本地连 ...

  3. tcl脚本创建多个进程_创建10个高级脚本

    tcl脚本创建多个进程 在本文中,我们将为您的角色扮演游戏构建一个库存管理系统和笔记脚本,同时研究您PHP脚本的交互性. 我们还构建了一个基于图像的ID卡生成器,并使用PHP来执行图像处理. 我们将创 ...

  4. git使用的基本流程_这 7 个免费的 Git 教程,适合所有程序员

    作者:杰哥的IT之旅 转发链接:https://mp.weixin.qq.com/s/ikNS93rjpDTWSXBnzVWwhw 前言 你一定用过一些源码控制软件,例如CVS,SVN,VSS,DFS ...

  5. git克隆 不带目录_【第1823期】Git子仓库深入浅出

    前言 前端早读课的朋友,2020年元旦快乐.今日早读文章由涂鸦大前端 @孟浩然投稿分享. 正文从这开始~ 在前端日常开发中,我们经常git来当做代码版本管理工具,使用中基本都是一个项目一个Git仓库的 ...

  6. git: 四种git协议 (本地协议、HTTP 协议、SSH协议、 Git 协议)

    转载自 服务器上的 Git - 协议 : 到目前为止,你应该已经有办法使用 Git 来完成日常工作. 然而,为了使用 Git 协作功能,你还需要有远程的 Git 仓库. 尽管在技术上你可以从个人仓库进 ...

  7. git 拉取远程其他分支代码_【记录】git 拉取远程分支代码,同步到另一个git上...

    最近有需求从某git 上拉取所有分支代码同步到另一git上,现记录操作步骤,以便日后使用: 1:先克隆其中一个分支代码到本地环境 git clone -b test http://账号:密码@XXX. ...

  8. tensorflow 显存 训练_【他山之石】训练时显存优化技术——OP合并与gradient checkpoint...

    作者:bindog 地址:http://bindog.github.io/ 01 背景 前几天看到知乎上的文章FLOPs与模型推理速度[1],文中提到一个比较耗时又占显存的pointwise操作x * ...

  9. 手动创建线程池 效果会更好_创建更好的,可访问的焦点效果

    手动创建线程池 效果会更好 Most browsers has their own default, outline style for the :focus psuedo-class. 大多数浏览器 ...

最新文章

  1. python多进程_python多进程
  2. exportfs命令和FTP服务
  3. C++ Double Ended Queues(双向队列)
  4. 基于插件化的企业级开发平台JXADF(开源)
  5. 四五六年级计算机教学计划,五六年级信息技术教学计划
  6. 并发事务正确性的准则 可串行化_从0到1理解数据库事务(上):并发问题与隔离级别...
  7. vc6开发一个抓包软件_开发一个软件多少钱?传统app开发与0代码app制作方法对比...
  8. 序列复杂度怎么看_每日算法系列【LeetCode 376】摆动序列
  9. linux 升级g++ [错误:unrecognized command line option “-std=c++11”]
  10. 在idea或eclipse软件下配置Tomcat
  11. task文件服务器无法反弹,手把手带你玩转NAS 篇二十一:小米Redmi AC2100路由器刷机padavan保姆级教程...
  12. SPSS新手教程——通过探索性分析,检验数据的正态性分布
  13. 【手把手教你】使用QuantLib进行债券估值和期权定价分析
  14. 【读书笔记】马化腾:先人一步-冷湖,腾讯成长之路:模仿+学习+实践+创新+合作+超越
  15. Chfs 文件共享工具
  16. 从Watson看AI平台的架构设计
  17. 堆是先进先出,栈是先进后出
  18. LeetCode 825 Friends Of Appropriate Ages
  19. ANSYS APDL学习(8):选取全部的封闭曲面生成实体(体积)的命令流讲解
  20. 【DIY小记】解决CSGO打开游戏即闪退的问题

热门文章

  1. linux查看内存是单通道还是双通道,android /linux如何识别S5pv210 双通道不连续的内存?...
  2. 早期 MCU 芯片是怎么加密的?
  3. 稻盛和夫(日本世界著名实业家、哲学家)
  4. Win11如何添加图片3D效果?Win11添加图片3D效果的方法
  5. python制表符怎么用_Python制表符是什么
  6. 一路风一路雨一路摔跤一身泥一场超美的云海--惠阳白云嶂游记
  7. tongyuekeji123 实战 SQL Server 2008 数据库误删除数据的恢复
  8. 自我介绍PPT模板如何设计?
  9. 贝店。贝店是什么?怎么注册?邀请码什么是分享经济?
  10. 秒级加速质变,Apache Doris与360数科的“化学反应”