type
status
date
slug
summary
tags
category
password
icon
AI 摘要
本文重点参考由 Scott Chacon 和 Ben Straub 撰写并由 Apress 出版的 📖Pro Git 另有参考 YouTube @freeCodeCamp.org 的 Git and GitHub for Beginners - Crash Course
几个月前,简单学习了如何在 GitHub 更新自己 Fork 的开源项目,但这只是面向 Git 小白关于更新项目的临时操作手册。在本次学习中,将系统性地学习如何利用 Git 进行版本控制。
0. Installing Git and Git Setup
这部分内容为学习 Git 的前提,请自行查阅《Pro Git》一书:
1. Git Basics
1.1 Getting a Git Repository
如果想获取现有 Git 仓库的副本:例如从 Github 克隆,则需要的命令是
git clone
。但如果当前有一个不受版本控制的项目目录,并且想使用 Git 来控制它,则首先需要转到该项目的目录,然后初始化现有目录中的存储库。
1.2 Recording Changes to the Repository
基本的 Git 工作流程如下:
- 在工作区中修改文件;
- 将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区;
- 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
应该注意 Git 中的三个重要状态,即已修改 Modifed、已暂存 Staged 和已提交 Committed:
- Modified:已修改表示修改了文件,但还没保存到数据库中。
- Staged:已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
- Committed:已提交表示数据已经安全地保存在本地数据库中。
因而我们的 Git 项目拥有三个内容区:
- 工作区:是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
- 暂存区:是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。
- Git 仓库目录:是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。
其他基础操作:状态简览、对比修改、忽略文件、移除文件、移动(重命名)文件
1.3 Viewing the Commit History
git log
指令详见《Pro Git》一书,此处不做赘述:1.4 Undoing Things
有时候提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。
此时,可以运行带有
--amend
选项的提交命令来重新提交。这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令), 那么快照会保持不变,而你所修改的只是提交信息。撤销某个暂存的修改,即在
git add
后: git reset <file>
撤消之前所做的修改:
git checkout -- <file>
,将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)1.5 Working with Remotes
为了能在任意 Git 项目上协作,需要知道如何管理自己的远程仓库。
2024 年 12 月 17 日:暂未完全理解,故先搁置。
推送到远程仓库:当想分享的项目时,必须将其推送到上游
git push <remote> <branch>
。查看某个远程仓库:使用
git remote show <remote>
命令,将会列出当你在特定的分支上执行 git push
会自动地推送到哪一个远程分支。 它也同样地列出了哪些远程分支不在你的本地,哪些远程分支已经从服务器上移除了, 还有当你执行 git pull
时哪些本地分支可以与它跟踪的远程分支自动合并。远程仓库的重命名与移除:可以运行
git remote rename <odlName> <newName>
来修改一个远程仓库的简写名,可以使用 git remote remove
或 git remote rm
来移除一个远程仓库。1.6 Tagging
2024 年 12 月 17 日:暂未理解,故先搁置。
1.7 Git Aliases
Git 并不会在你输入部分命令时自动推断出你想要的命令。 如果不想每次都输入完整的 Git 命令,可以通过
git config
文件来轻松地为每一个命令设置一个别名。git config --global alias.co checkout
:当要输入 git checkout
时,只需输入 git co
即可。