好像是之前看到过一篇推送,大概意思是说,学习一门语言最快的方法,就是参加这个语言的开源项目
各大公司的招聘要求中,渐渐地也加入了一条要求:有github开源项目者优先
所以,我的爬坡之路从参加开源项目开始,这篇文章将会记录我对git命令的学习
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
强烈推荐廖雪峰的 git教程 ,在动手之前,我是详细地看了一遍 ,算是对git有了一个整体上的认识,对于用svn的小伙伴儿们来说,
这是很有必要的呦;git的安装及详细内容,我就不再赘述了,这里总结一下git常用命令,当做一个备忘
1、创建版本库:git init
创建版本库就是在本地找一个放代码的文件夹,然后让git帮你管理这些代码,这里的版本库是本地的哦
如果出来上面的画面,就说明你已经创建成功啦,这时候,你的文件夹下面,就会多出一个.git文件夹,是git用来做文件管理的,不可删不可改;
2、添加文件到暂存区:git add 文件名 (git add test.txt)
git跟svn有一个很大的区别,就是git有一个暂存区的概念,字面意思理解,就是“临时存储”区域;代码只有先被提交到暂存区,然后才能被提交到本地库;
如果你一次编辑or新增了很多文件,当然不能一个一个add到暂存区啦,大家可以试下,如果只输入git add,不输入文件名,会提示什么?
既然他都提示了,那就试下看 git add . 是什么效果喽;
执行后,当前文件夹下的所有文件就都被提交到暂存区啦;
看到这里,习惯使用svn的小伙伴会觉得,git add操作好像并不太顺畅,我都不知道我提交了什么,也不知道提交成功没,所以第三个命令登场:
3、查看工作区状态:git status
这个命令可以显示出你当前工作区的状态是什么,哪些是新增,哪些有修改,哪些在暂存区需要提交到本地库等
4、提交到版本库 git commit
如果直接输命令git commit 显示如下
因为git提交,是必须写message的,这里写了message后,先按Esc,在下面输入:wq,然后回车,你的message就会被提交了
如果出现了 E45: 'readonly' option is set (add ! to override) 是因为你没有权限,把输入命令改为:wq! ,然后回车,强行提交即可
执行带message的commit: git commit -m "你要提交的message"
这里有个概念要讲下,git commit 命令提交的文件,是通过git add命令添加到暂存区的文件,没有先被提交到暂存区的文件,不会被commit
如果想强行提交所有修改,则要给命令加一个参数
即:git commit -a
执行后,本地的所有修改,无论有没有提交到暂存区,都会被提交到本地库
这里就很清晰地看出,为什么说git是记录每一次修改了;同一个文件,先增加一行,然后add,再增加一行,diff命令查看,就有两次修改;
以上步骤,你就完成了代码托管(关联git)---> 工作区提交到暂存区 ---> 暂存区提交到本地库 的操作,下面我们再看看这个工作流程中的异常流
5、查看修改:git diff
这个不解释,就是查看本地开发版本与暂存区版本的区别
6、撤销add:git reset filename
如果你在commit之前,想把之前add到暂存区的文件撤回来不提交,就可以用这个命令
7、用最新的提交覆盖本地修改过的文件:git checkout (git checkout -- filename);
如果本地修改了文件,然后这时候产品需求变了,不要这个功能了,那我们可以用这个命令,把本地代码还原到最新一次提交的状态。
也就是丢弃本地的更改。当然,你也可以手动更改,但是用命令会感觉牛逼很多,有种一键还原的感觉,哈哈
8、删除文件 git rm filename
通常情况下,我们习惯用图形界面删除文件,但是对于代码托管来说,这时候你删除的,是你本地
的文件,在版本库里,这个文件,还是存在的。如果是svn,本地commit一下,代码库里的这个文件就被删掉了
那我们就试试看,用svn的套路,在本地用鼠标删除了文件,然后再commit一下,是什么状态
看来对于git来讲,删除是一个比较敏感的操作,所以需要特定的命令去单独操作,下面有请git rm登场
注意:git rm命令,是删除文件在代码库的存在关系,还需要执行git commit 命令,才能真正删掉代码库中的这个文件
总结:
git rm 会将条目从暂存区中移除。这与 git reset HEAD 将条目取消暂存是有区别的。
"取消暂存"的意思就是将暂存区恢复为我们做出修改之前的样子。
默认情况下,git rm filename 会将文件从暂存区和本地删除。如果你要在本地留着该文件,可以使用 git rm --cached
9、版本回退 git reset --hard commitId
版本回退是一个不常用但是却很重要的命令,往往伴随着大bug和大问题出现。。。。(随便发发牢骚,勿喷)
git的版本回退很快,因为她只是改变了当前工作区的指针而已,详情还是请参考廖雪峰老师的详细git教程,通俗易懂。
这里就直接截图记录:
ps:最近需求变多,没什么时间整理记录,等有空闲了,再研究多人协同工作相关命令