Git基础
Git 是一个版本控制系统 (version control system,VCS)。什么是版本控制?为什么需要做版本控制?
想象你正在开发你的解释器,你决定给你的解释器实现一个新的功能,但添加这个功能需要修改大量之前的代码。你一咬牙一狠心,熬了个大夜,终于把这个功能加完了,遇到的问题也都修好了。你信心满满地打开 OJ 交了一发:
“tmd,一个测试用例都没过。”
你坐在宿舍的椅子上,窗户灌进阵阵冷风,看着 WA 声一片的提交界面,你的心早就凉了。
“要是能回到加这个功能之前就好了。” 你想着。但你没有粉色大猫猫,也没有 SERN 的 LHC (和助手),更没有时之盾牌,那些过去的时间再也回不去了。
不过,不幸中的万幸,你用 Git 管理了你的代码。
你熟练地在命令行里敲下 git reset xxx
,瞬间,一切回到了那天之前。
一些你需要知道的基本内容:
- 初始化 Git 仓库: 在仓库目录中
git init
。 - 忽略部分文件的更改: 在对应目录中放置
.gitignore
文件,并在该文件中添加需要忽略的文件的规则。 - 查看仓库状态:
git status
。 - 暂存更改:
git add 文件名
,或git add -A
暂存全部更改。 - 提交更改:
git commit
,此时会弹出默认编辑器并要求你输入提交信息。也可以直接执行git commit -m "提交信息"
。 - 添加远程仓库:
git remote add 名称 仓库URL
。 - 推送本地提交到远程:
git push
。 - 查看所有提交记录:
git log
,你可以从中看到某个提交的哈希值。 - 把仓库复位到某个提交的状态:
git reset 提交的哈希值
。 - 从当前提交新建分支并切换:
git checkout -b 分支名
。 - 切换到分支:
git checkout 分支名
。 - 删除分支:
git branch -D 分支名
。
上面提到了 .gitignore
可以让 Git 忽略目录中某些文件,且不让它们出现在 Git 仓库中。这有什么用呢?
你在开发过程中难免会产生一些 “只对你自己有用” 且 “不值得永久保留” 的东西。比如你在开发的过程中希望写几个简单的输入来测试你的程序,或者验证你程序里的某处是否写对了,于是你新建了个名字叫 test.txt
的文件,里面写了一些测试的内容,然后你在本地调试的时候会让你的程序读取这个文件。
test.txt
显然只是个用来存放写一些只对你自己有用的临时内容的文件,你不希望让 Git 每次都记录这个文件的更改 (因为没意义),所以你可以把它写进 .gitignore
中,来让 Git 忽略它。
其他类似的情况还包括,你使用 VS Code 或 IDEA 开发你的解释器,这些代码编辑器/IDE 可能会在项目中生成一些配置文件 (.vscode
或 .idea
),这些文件通常也是不需要被 Git 记录的,因为其中包含了你的一些个人配置。
推荐: