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。
![GitHub文件上传器。 GitHub file uploader.](https://i-blog.csdnimg.cn/blog_migrate/2d4adf15ff0975caf0b528ca4418e139.png)
追踪档案
正如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 创建本地存储库