Git总结
首先
这篇文章是关于新Linux教科书的备忘录。
我将以备忘录的形式记录一些笔记。
这本书非常易懂,我强烈推荐大家去阅读一下。
在这里,我将总结有关版本控制系统Git的内容。
Git是什么
Git是一种用于保存和管理文件更改记录的版本控制系统。
由于Git被广泛用作版本控制系统,在大多数发行版中都提供了它。
请通过git –version等命令确认是否已安装它。如果已安装,应该会显示版本号。
$ git --version
git version 2.32.1 (Apple Git-133)
如果要安装,请安装一个叫做git-core的软件包。
$ sudo apt-get install git-core
如果您使用的是Windows操作系统,请参考以下链接进行安装。
Git 的主要功能有两个。
-
- ファイルに対していつ 誰が どのような目的で どのような変更を加えたのかを記録し閲覧できる。
- 必要に応じてファイルを過去の状態に戻す。
Git的初始设置
为了使用Git,我们需要进行初始设置,其中包括设置用户名和电子邮件地址。
我们可以使用git config命令进行初始设置。
$ git config --global user.name '<ユーザー名>'
$ git config --global user.email '<メールアドレス>'
在这里,我们设置了使用Git的人的信息,当对文件进行更改时可以参考谁做出了更改。
设定的信息将保存在 ~/.gitconfig 文件中。
[user]
name = <ユーザー名>
email = <メールアドレス>
创建存储库。
首先,代码库是什么?
Git是保存文件更改的地方。所有文件更改的历史记录都会注册到这个存储库中。当需要回滚到过去的文件状态时,也会从这个存储库中提取内容。
初始化 Git
在您希望进行版本管理的目录中执行git init命令来创建存储库。顺便提一下,将要进行版本管理的目录被称为工作区。Git用于管理工作区内的目录和文件的变更。
$ git init
当你执行后,在执行的目录下会生成一个名为.git的文件夹。这个.git文件夹是Git存储库的实体。由于存储库(.git)中的文件已被Git转换为特殊格式,所以无法直接在编辑器等中进行更改。
添加到存储库中
如果对文件进行了任何更改,就会将更改添加到存储库中。要添加更改,可以使用git add和git commit这两个命令。
添加到版本控制
git add是一条命令,用于指定要将哪些文件添加到存储库作为历史记录。
$ git add <ファイル名>
如果您想要添加所有文件,请指定圆点。
$ git add .
如果您想批量添加所有已更改的文件,可以使用-u选项,非常方便。
但是请注意,新创建且从未提交的文件将不会包括在内。
$ git add -u
如果您想添加包括新创建的文件在内的所有编辑过的文件,请使用 -A 选项。
$ git add -A
这个时候仓库还没有进行任何更改的登记。
是在等待将更改提交到仓库的状态吗?
提交git
当你使用 git add 命令指定要添加到变更历史的文件后,通过使用 git commit 命令将变更实际添加(反映)到仓库。在执行 git commit 命令时,你可以使用 -m 选项输入与修正相关的消息。
$ git commit -m <修正のメッセージ>
在这里,文件的修改内容将被记录到Git仓库中。
更深入地挖掘
git add命令不仅仅是用来指定要添加的文件,还用来将编辑过的文件放置并注册到称为索引的工作区的另一个区域。
git commit是用于将通过git add注册到索引的内容提交到代码仓库的命令。
索引可以说是连接工作区和仓库的桥梁性领域吧。
显示差异
git 状态
这个命令是用于显示当前工作树状态的。
$ git status
文件中显示为“modified:”意味着对已进行更改。
git diff 可以简单理解为“git差异”。
这是一个用于确认更改差异的命令。
差异以diff命令的统一格式显示。
$ git diff
查看更改历史
可以使用git log命令来查看变更履历。
$ git log
The following four changes will be displayed in the change history.
-
- commit:コミットを特定する一意のコミットのオブジェクト名(40文字の文字列)
-
- Author:変更を加えたユーザ名
-
- Date:変更を加えた日時
- コミットメッセージ
通过添加-p选项,您可以同时确认差异。
$ git log -p
要使用git diff指令,并在其后指定提交的对象名称,就能够确认该提交时的差异。
$ git diff <コミットのオブジェクト名>
恢复原状
以下是Git的主要功能之一,它可以根据需要将文件恢复到过去的状态。下面将介绍有关执行恢复操作的命令。
工作区的恢复
在工作区恢复特定的文件或文件夹时,使用checkout命令。checkout命令也用于分支切换,因此可以在命令之后使用– 文件名(或文件夹名)来将更改还原为之前的状态。
$ git checkout --ファイル名
$ git checkout --フォルダ名
请移动到工作树的顶级目录并执行以下命令进行工作树的恢复。
$ git checkout HEAD .
通过这样做,文件的编辑和删除状态将全部恢复为原始状态。还将删除添加到索引中的内容,因此未提交的差异也将被删除,工作区将与存储库处于相同状态。
恢复提交
如果提交了错误的内容,可以执行以下命令。
$ git revert <取り消したいコミットのオブジェクト名>
这将导致提交内容被取消,并且需要手动修复差异后重新提交,相当于手动修正并提交了修正内容。
分支
在中文中,大元的分支被称为“主分支”或“主要分支”。基本上,提交将反映在这个主分支上。
派生的分支可以使用任意名称。
另外,Git的分支是指向分岐历史开头的提交的标签。
确认分支
如果想查看分支列表,可以使用git branch命令。
$ git branch
* master
现在所在的分支是带有 * 的分支名称。
创建分支
如果要创建一个新的分支,可以通过指定分支名称来创建。
可以在创建的分支中进行测试和修复。
$ git branch <ブランチ名>
切换分支
如果想要切换分支,可以使用git checkout命令。
$ git checkout <ブランチ名>
将分支合并
你可以将分岐创建的分支内容合并到另一个分支中。将分支内容合并称为合并操作。
以下是合并分支的步骤。
-
- 用git checkout命令切换到想要合并的分支。
使用git merge命令进行合并。
$ git checkout <マージ先ブランチ名>
$ git merge <マージするブランチ名>
删除分支
可以通过在git branch命令后加上-d选项来删除分支。
$ git branch -d <削除したいブランチ名>
备份
在Git中,所有更改的历史都被保存在仓库中,但如果不小心删除了这个仓库,是无法恢复的。为了应对这种意外情况,Git允许备份仓库。
进行备份的步骤如下。
-
- 创建备份仓库
- 将更改记录发送到备份仓库
创建用于备份的仓库
首先,使用mkdir命令或类似的方式创建一个用于备份的文件夹。地点可以是任意的。
请在文件夹名称末尾添加“.git”。
$ mkdir -p .../example.git
Please make sure to navigate to the created folder using the cd command and then execute the git init command. Do not forget to include the –bare option.
$ cd .../example.git
$ git --bare init
–bare选项是用于创建裸仓库的选项,裸仓库简单来说就是用于复制的仓库。具体而言,它是指没有工作目录的仓库。
将变更历史发送到备份仓库中
创建用于备份的存储库后,将原存储库的内容发送到该存储库。
首先返回原存储库。
原存储库是.git文件夹。移动目标是包含.git文件夹的目录(工作树)。
$ cd <元のリポジトリのパス>
如果可以移动,将更改记录发送到git push命令。
$ git push <送信先リポジトリ> <送信元ブランチ>:<送信先ブランチ>
可以在中文合成以下的句子:
要指定信件的目的地存储库,请提供之前创建的备份存储库的路径。
要指定信件的来源分支,请提供要备份的分支。
要指定信件的目标分支,请指定将被发送的来源分支保存到哪个分支上。
如果发件分支和收件分支相同,则可以省略冒号。
$ git push <送信先リポジトリ> <ブランチ名>:
从备份仓库中恢复
如果想要从备份的存储库中恢复文件,可以使用git clone命令。
$ git clone <複製元リポジトリ>
为仓库路径分配一个名称
在某些情况下,仓库路径可能会变得非常长。 在这种情况下,您可以通过为仓库路径添加另一个名称来简化输入路径的过程。 为了给仓库路径添加别名,您可以使用git remote add命令。
$ git remote add <別名> <リポジトリパス>
在别名一栏中,使用”origin”这个词是习惯的做法。
您可以使用git remote -v命令来确认分配的名称。
$ git remote -v
将别名替换后,将变更历史发送到备份存储库的命令会更加清晰简洁。
$ git push <送信先リポジトリ> <送信元ブランチ>:<送信先ブランチ>
$ git push origin master
如果要备份主分支,请执行以下操作。
如果你能理解到此处的Git命令,那么你就能轻松理解上传到GitHub时所用的命令的意思。
$ git init
$ git add README.md
$ git commit -m "first commit"
$ git branch -M main
$ git remote add origin <GitHubのリポジトリURL>
$ git push -u origin main
以下是对解释的说明。
$ git init
$ git add README.md
$ git commit -m "first commit"
在这里,我将变更反映到我的本地环境的git仓库中。
$ git branch -M main
在这里,我们使用-M选项强制将当前分支的名称更改为main的名字。
有关选项的详细信息,请参考此处。
$ git remote add origin <GitHubのリポジトリURL>
在这里,将备份仓库GitHub的仓库URL的仓库名称更改为”origin”。
$ git push -u origin main
最后,将变更推送到GitHub仓库以便进行更新。
共享存儲庫
过去,我一直在使用Git进行个人文件管理。但在实际工作中,有时我们需要进行团队开发,多人一起开发。在这种情况下,我们需要共享仓库,共享每个人的文件更改,以便推进开发。
共有存储库指的是之前提到的备份存储库,备份存储库的存储库名称是被共享的情况。
基本上,每个用户都有自己专用的存储库,可以进行文件更改和测试,当工作有一定程度稳定后,可以使用git push命令将更改反映到共享存储库中。
要将其他人修改的内容合并到自己的存储库中并进行更新,请按照以下步骤进行操作。
-
- 使用git fetch命令将其他存储库的更改内容合并到本地
使用git merge命令将更改内容应用到自己的存储库中
获取远程库
git fetch命令是用来获取指定仓库的更改的命令。
$ git fetch <リポジトリ名>
保存在远程跟踪分支上的历史记录会创建一个名为”远程名称/分支名称”的分支,而这个分支与用户自己创建的分支是不同的。若要查看远程分支,请执行以下命令。
$ git branch -r
在此时,工作树和本地分支尚未反映此更改。
为了将已获得的更改应用到自己的工作树或分支中,请执行git merge命令。
$ git checkout <マージ先のブランチ名>
$ git merge <リモート名>/<ブランチ名>
拉取
-
- 使用git fetch命令将其他存储库的更改内容导入
使用git merge命令将更改内容合并到自己的存储库中
由于先前所描述的步骤经常一起使用,因此将其整合为一个命令 git pull。
$ git pull <リモートリポジトリ名> <リモートリポジトリのブランチ名>
如果我们要进行正式的共同开发,共享代码库不应该放在同一个文件系统中,而是应该在网络上进行管理。
GitHub是一个在线管理代码库的服务。
请以中国本土的方式重新表述以下内容,只需要一种做法:
思考
《Linux新手教程》三宅英明和大角祐介共同著作。