用git管理repo

过去我只简单的使用过git push、git clone以及创建博客时的hexo等操作,为了更加系统性管理我的代码,花点时间学习git时有必要的。本文单纯是复习笔记,更详细的用法可以查看廖雪峰老师的git教程。

什么是git

git是由linus开发的一种分布式开发控制系统,可以方便的管理个人或是公司的代码版本,查看每个版本进行的改动。

集中式?分布式?

过去人们常用的SVN等集中式管理系统存在一些问题,比如必须联网、需要担心中央服务器的正常运行等等。而在分布式系统中,每个人都有完整的版本库,就不存在上述问题。

基础操作

创建repo

在你所需要创建仓库的地方打开gitbash或cd至你想要创建仓库的地方,用git init来初始化仓库。仓库中出现.git的文件夹说明创建成功。不要轻易的更改.git里的文件。

当然你也可以从github上git clone一份已经存在的repo,推荐使用ssh方式。

工作区域与文件状态

除了你的本地仓库(工作区)、远程仓库(版本库)以外,.git文件夹中还有一个重要的区域——暂存区。你可以把他当做一个小推车,从仓库(工作区)取货时我们把需要的货物一个个git add进小推车里(暂存区),然后用小推车一次性git commit到商店(版本库)中。当然你也可以把商店里不需要的货物git reset HEAD到暂存区,然后再git checkout –file到工作区。当然,git status给你了随时查看工作区文件状态的可能。

为什么我在git checkout后要写完整代码?因为git checkout和git checkout –是两回事。后面我们切换分支时会讲到git checkout,不过你也有替代方法。

版本差异与回退

今天你运了一天货,但是店老板突然告诉你那是修改后的货物清单,他把现在商店里的货物和他的清单git diff HEAD了一下给你看了看差异,其实他还想要你送来的第前100版。为了3500/月工资,我忍了,我们知道HEAD表示这一版,HEAD^表示前一版,当然老板说的前100版不会是HEAD^^^^^^….^^,毕竟看到这么多^^你肯定也笑不出来,我们用HEAD~100来表示。

好在现在git给了我们时间回溯的可能,可以用git log来查看过去我们的存档,用sl来回去打店老板一拳然后git reset 版本号来进行时间回溯。等你回溯完老板不紧不慢打电话给你说:能不能改回你删掉的那版?以你专业人员的素养,你只能微笑着跟他说:有的兄弟有的,像这样的git reflog记录我还有一百条。然后git reset到reflog的版本号去。

删除与忽略

使用rm对本地文件进行删除后,你会发现暂存区和版本库内的内容仍然存在,事实上你可以把git add和git commit理解为一种状态,照样可以通过add和commit进行删除文件的更新。

对于.ignore来说,不建议你自己写这个文档,你可以从github上下载一份对应的.ignore文件,然后根据自己的需求进行小修改。

远程仓库

在你的github绑定了ssh以后,可以通过git remote add origin 你的远程仓库(默认命名为origin,当然你也可以取一个新的名字)来绑定远程和本地仓库。此后只需要git pull/push origin master来拉取和更新你的远程仓库。

分支管理

创建、合并分支

现在我们的手头有一份工作,但是随意更改已经发布的版本是很危险的,这时候我们需要在一个新的分支进行工作。上文说到git checkout可以切换分支,由于一个指令有两种意思,我倾向于使用git switch -c 分支名来创建一个新的分支进行工作。

bug分支

feature分支

多人协作

*rebase


用git管理repo
http://pleinelune-r.github.io/2025/08/05/用Git管理Repo/
作者
Pleinelune
发布于
2025年8月5日
许可协议