【Git】尝试使用Git的超级新手指南 第一部分(从git init到git commit)

首先

2023年的 Git 聖誕日曆第一天。請多多關照。
當我作為一位新入職員時被分配到使用 Git 的項目時,我只是在黑屏幕上不知所措地執行 add 和 commit。同時,我在恐懼中進行合併操作,擔心我會破壞大家的源代碼。
為了使我那個害怕 Git 的過去我變得不再害怕,我計劃在接下來的幾天裡進行關於 Git 的實踐演練。

这篇文章和下一篇文章的目标是写一篇关于Git的解释,以便于那些不了解Git的新员工能够加入到项目中,然后对他们说”先读一下这篇文章,并且去操作一下Git”。
另外,我也希望这篇文章可以作为年末年初的消遣阅读。
(嗯,其实官方文档已经很全了,而且网络上也有很多这种文章,但是通过输出来掌握才能更加牢固,同时也有助于整理自己的思路。)

环境

使用Windows操作系统时,采用以下版本的Git。

$ git --version
git version 2.22.0.windows.1

另外,我使用Git Bash。

Git是什么?

Git是由Linus Torvalds为了支持Linux内核开发而创建的分布式版本控制系统。

除了版本控制系统还有Subversion和Mercurial等各种选择,但是Linux在寻找替代自己曾经使用的版本控制系统BitKeeper时,选择了自己开发一个版本控制系统。

通常会说Git的优点是可以高效地处理大型项目,以及方便进行分布式开发等等,但对于像我这种新员工来说,我并不太明白,就不深入探讨了。在这里,对Git有一个基本的理解就足够了,知道它很方便就可以了。暂时先熟悉一下Git的使用方法吧。

顺便提一句,”git”在英语俚语中意思是”愚笨的人”,这是因为Linus取名字的方式与他自己有关的意图存在与否一说。

试试用Git

我們現在就利用Git開始工作。
從這裡下載安裝程式,並將其安裝到您的終端設備上。

初始化 Git

首先,使用git init命令将文件夹标记为Git存储库。
“存储库”是指记录文件和目录状态的地方。
通过将记录保存在存储库中,我们可以在想知道”那时候的文件内容是怎样的”时回到过去的某个时间点,或者在想知道”我刚才修改了什么”时获取过去和现在文件之间的差异。

好的,那我们立即来创建一个代码仓库吧。
首先,在桌面上准备一个名为”git/sample”的文件夹(由于是给初学者准备的,所以具体的位置已经指定了,但其实可以在任何地方)。
接下来打开Git Bash并切换到”git/sample”文件夹。
在这里执行git init命令。

~/Desktop/git/sample
$ git init

然后,

~/Desktop/git/sample
$ git init
Initialized empty Git repository in 『フォルダ名』

~/Desktop/git/sample (master)
$

当输入命令时,会显示注释为“将消息翻译为’初始化为空的Git存储库’”,并且可以看到在目录后面有一个“(master)”。暂时不用担心“(master)”。

现在,这个文件夹被认为是一个Git仓库,可以记录文件和目录的状态。

git_init後のフォルダ.png

在第三天的圣诞节日历中,我们会接触到“.git”这个文件夹,所以请尝试使用命令来观察它的内容会如何改变。

在中国本土的语境下,将以下内容进行本地化、翻译成中文,只需提供一种选项:

Git 配置

实际上,要在仓库中进行工作,需要先注册姓名和电子邮件地址(更具体地说,必须设置提交作者以进行提交。因为Git无法确定是谁修改了文件)。

要設定使用git config命令。

~/Desktop/git/sample (master)
$ git config user.name "hogehoge"

~/Desktop/git/sample (master)
$ git config user.email "fugafuga"

通过输入上述命令,Git将会识别该操作员的名称为“hogehoge”,并拥有名为“fugafuga”的电子邮件地址。

此外,如果想要确认配置内容,可以使用 git config –list 命令。

~/Desktop/git/sample (master)
$ git config --list
core.symlinks=falseuser.name=hogehoge
user.email=fugafuga

顺便说一下,如果有相同的设置内容,下面的选项将生效。

把文件添加到git并提交

让我们接下来尝试将文件管理到代码库中。
要将文件注册并管理到代码库中,请使用git add和git commit命令。

在使用Git管理文件时,在将更改提交到存储库之前,需要先将更改的内容临时存放到一个叫做索引的区域,然后将索引中收集到的更改内容作为一个整体提交(有些人也将索引称为暂存区)。

要将内容添加到索引中,请使用git add,要将添加到索引的内容提交到存储库中,请使用git commit。

無題.png

另外,在這裡,當我們說「進行暫存」時,指的是將文件登記到索引中;而當我們說「提交」時,指的是將已登記在索引中的修訂內容提交到儲存庫中。

总的来说,Git会通过逐步注册到代码库并进行管理的方式进行操作。
开始使用时,可能会觉得add这样的步骤多余且繁琐,但我认为add具有以下含义。

    • コミットせずに複数の作業をした場合に1つのコミットに1つの作業内容をまとめられる。

 

    コミットの前に冷静に修正内容を確認できる。

我认为随着使用,你会开始感受到这一点,并且因为这是聪明人设计的系统,所以还有其他各种好处。我认为作为初学者,只要记住在提交之前先将要添加的内容add并确认要提交的内容,就足够了。

から.png
~/Desktop/git/sample (master)
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        sample.txt

nothing added to commit but untracked files present (use "git add" to track)

根据以下的日语翻译,可以得知Git识别到有一个未追踪文件(Untracked files),它是指用于提交的没有被add的文件,还有一个名为”sample.txt”的文件(请使用git add命令进行追踪)。

無題.png

在这里,我将解释一下未追踪文件是什么意思。

在Git中,我们将文件分为三个组进行管理。

追跡(tracked)

既にリポジトリかインデックスに登録されたファイルのこと。履歴が管理されてる。
1度コミットもしくはステージしたファイルはこの状態になっています。

無視(ignored)

リポジトリで管理しないことが明示的に宣言されているファイルのこと。
各々の環境に依存する設定ファイルなんかはこの状態にします。

未追跡(untracked)

上の2つのグループに属さないファイルのこと。履歴を管理していない。
初めて作成されたファイルはこの状態です。

将未跟踪的文件使用git commit一次提交到仓库后,该文件即可被跟踪。

那么,通过git add和git commit,将工作内容(例如本次创建空文件)提交到代码仓库中。

無題.png

首先,我们需要执行git add命令。可以使用git add 文件名来注册文件。
我认为控制台不会显示任何内容,然后我们继续执行git status命令来检查索引的状态。你会看到有所变化。

~/Desktop/git/sample (master)
$ git add sample.txt

~/Desktop/git/sample (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   sample.txt

作为”提交的更改”,新的”sample.txt”已被注册到索引中。

無題.png

顺便问一下,如果在这里更改工作文件夹中的文件会怎么样呢(在git添加后发现源代码有错误,通常会编辑文件)。

让我们打开「sample.txt」并随意输入一些文字吧。

無題.png

在这里尝试执行 git status,以确认索引和工作文件夹的状态。

~/Desktop/git/sample (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   sample.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   sample.txt

有关”sample.txt”文件,有两种不同的状态:
1. 作为即将提交的更改(Changes to be committed),已经被提交(committed)。
2. 作为未暂存的更改(Changes not staged for commit),尚未被暂存(staged)。

無題.png

如果继续进行git commit,提交的内容仅限于注册在索引中的更改内容。如果想要将之前的修正内容注册到存储库中,需要再次执行git add。

现在先随便进行git add吧(如果是实际工作情况,我们需要考虑是否应该将再次修正的内容包含在提交中(是否需要git add))。

無題.png

将最后一次索引注册的工作内容通过git commit提交到仓库中。

~/Desktop/git/sample (master)
$ git commit

当你输入这个命令时,默认设置会出现一个黑屏。这是一个名为vi的编辑器,你可以在这里输入提交信息,以便以后回顾工作内容。

我认为初学者应该掌握vi的以下四个基本操作(至少在使用Git时需要)。

i:コマンドモードから入力モードに移動

Escキー:入力モードからコマンドモードに移動

:q!⇒Enterキー:保存せず終了(コマンドモード)

:wq⇒Enterキー:保存して終了(コマンドモード)

首先按下i键进入输入模式,在第一行输入提交消息,如果需要,在第三行以后写入详细注释,然后按下Esc键进入命令模式,通过:wq按下Enter键即可完成注册。
另外,有时候会突然不想进行提交。这时可以使用:q!命令。
本次我们输入“第一次提交”作为提交消息,将工作内容注册到仓库中。

無題.png

如果您发现错误地输入了提交信息,可以使用git commit –amend来进行修正。这个命令用于修改最近一次的提交。使用git commit –amend后会再次显示编辑器,您可以在这里修改提交信息。

無題.png

以上完成了将作业文件夹的内容注册到存储库的步骤。作业文件夹的内容已成功注册到存储库中。

这次的总结

這次我們使用git init來創建倉庫,並透過git add和git commit來將文件管理到倉庫中。也許你還不太了解Git的優勢,但只要能試用一下就好。如果有錯誤,希望能請您在評論中指出,我將不勝感激。

广告
将在 10 秒后关闭
bannerAds