Git学习笔记
对于git,很早很早就在用了,但是还没有系统整理过,并且有些命令使用时需要注意的事项,在此也一并标出。
About Git
git
是一个分布式版本控制工具,如果你是一个程序猿,那你必须要学会如何使用git
来管理你的代码或者项目。
可能更多人所熟知的是GitHub,顾名思义,按照英语的命名特点,GitHub就是所有git上传的枢纽,汇聚到一起,你可以开源你的代码,指定一款开源协议共享给所有需要的人,也可以将仓库设为私有,只有自己或者受到邀请的人可见或者进行编辑。
除了GitHub,世界上还有很多这种代码托管平台,比如国内的gitee,coding等,国外还有gitlab等平台提供代码托管服务。
Setup
在一个目录中,你可以使用git init
来初始化这个目录,git会把这个文件夹变为一个git目录,
|
|
使用git remote add origin {your repo url}
即可添加远程的仓库地址。
Commit && Push
对于一个采用迭代式开发或者其他开发模式的项目来说,都避免不了后续对代码进行修改或者添加一些新的文件,对于每一次这样的操作,都要对添加或者修改的文件指定一个commit。
例如:修改了项目功能中的bug,文件名字为a.cpp
可以使用
|
|
这样就可以将此次更改添加到提交的队列中
如果使用git add .
,git将添加所有监控的文件到缓冲区
再使用git push
就可以将修改添加到远程仓库中
对与一个团队而言,有标准规范的commit格式是很重要的,例如以下格式
|
|
Dangerous Pull ing
如果是多人协作开发,那么必然会导致本地文件之间存在着不一致,为了解决这个问题,可以使用git pull
,执行该命令后将同步仓库中存在并且与本地不同的文件。
这个操作看似简单,但是有时候如果使用了–force强制执行的话,会覆盖掉本地的文件,属于非常危险的操作,所以无论在什么时候使用–force之前都要思考清楚自己在干什么。
Branch
我觉得git很强大的一个功能就是对分支的管理,在不同分支中切换可以让项目的代码得到更有效的管理,例如在main主分支中保存可以稳定运行的版本,在另一个dev分支中保存正在开发的非稳定版,后续改进之后可以将dev分支合并到main分支中去。 如果更新过后的主分支依然出现问题,也是可以通过回滚的方式回到之前某个稳定的版本。 分支的创建也非常简单
|
|
切换后git所有的操作将在新的分支进行
.gitignore
顾名思义,肯定是让git去忽略某些项目,比如文件夹,或者是单个文件,添加到gitignore之后git将不在追踪这些文件的变化,因此我们可以将例如npm庞大的node_modules这种文件夹添加到其中,或者是编译器调试产生的临时文件,优化仓库的存储结构。
|
|
使用该命令看查目前项目的改动
|
|
git监控到了文件b.cpp的产生,我们将b.cpp添加到.gitignore中
|
|
再次使用git status看查,发现b.cpp已经不再被监控了,在.gitignore中还可以使用文件夹名忽略整个文件夹的项目,或者使用通配忽略包含特定后缀名的文件等。
End
随着开发工具的现代化,很多时候我们已经用不到这些git命令了,很多繁琐的命令早已被图形化的界面取代,但不乏还有git爱好者们做出的努力,如lazygit等工具。 当你接收一台崭新的服务器时,这些命令又显得格为重要了。因此,在简便的工具的包裹下,他们背后的原理才是最值得我们去了解的,就如同学习汇编语言一样,给力我们另一种看待程序的方式。 很早就像总结一下git了,拖了这么久终于写完了,后续还想再添加一些更具体的内容,希望能给初入git的同学一些启发。