大二就要开学了 - -。
暑假在家学了点Qt,终于完成了梦寐以求的图形版计算天数 工具 ~ ~。(源码:https://github.com/NitefullWind/countDaysByQt)。发现慢慢看书大部分还是能看懂的,不过到后面实在吃力,才意识到自己c++基础没打牢真是不行,于是又退回继续学没看完的c++去了。。。等到快开学才意识到学习Qt期间没做笔记啊啊啊啊啊,等下次继续学不知道还能记起来多少。唉。
下午无聊突然想起我用Qt完成的小工具,突然想到应该把代码托管到我的github上(因为注册了账号至今还是0上传啊啊啊啊)。于是又拾起了git。。。发现有了github for windows ,看着教程很快稀里糊涂把代码传了上去,可是还有很多地方不懂,随便查了一下原来git上有很多知识需要学习,恰好发现廖雪峰的官方网站 上写了git 教程(还发现他吧Python的教程也更新完了,又有的学(wan)了 ~ ~)。花了两个小时看了一下,涨了不少见识,想想又有那么多知识进了脑袋,是时候写一篇博客来拯救我这捉急的记忆力了 =。=
感觉主要都是一些命令吧,于是一下为简单Git学习笔记:
Git 常用命令:
$ mkdir file //创建一个file目录
$ cd file //进入file目录
$ pwd //显示当前目录
$ cat file.txt //显示文件内容。
/*创建版本库(仓库)*/
$ git init //把当前目录变成git可以管理的仓库(当前目录下多了一个 .get的目录)
$ git add file.txt //把文件添加到仓库。反复使用可添加多个文件到仓库。
$ git commit –m “XXX” //把文件提交到仓库。-m后面输入的是本次提交的说明。
/*修改文件并保存为多个版本*/
$ git status //显示当前仓库的状态。经常使用此命令以随时掌握工作区状态。
$ git diff file.txt //显示被修改内容。如果用git status得知有文件被修改,可用此命令查看被修改的内容。确认无误后即可用add和commit提交修改。每次提交即为一个不同版本。
/*版本回退*/
$ git log //显示从最近到最远的提交日志。显示版本号,作者,提交时间及提交说明等信息。
$ git log--pretty=oneline //显示简化内容。仅显示版本号及提交说明。
$ git reset --hard HEAD^ //退回到上一版本。Git中用HEAD表示当前版本(即最新的提交),HEAD^表示上一个版本,HEAD^^表示上上一个版本…… HEAD~100表示往上100个版本。
$ git reflog //查看历史命令。显示版本号及命令描述。
$ git reset --hard **** //回到某一版本,****为版本号。其中版本号不必全写,只需前几位字符即可。
——2014年9月14日00:36:20
工作区和暂存区
工作区(WorkingDirectory):就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区。
版本库(Repository):工作区有一个隐藏目录“.git”,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
$ git checkout --file.txt //放弃工作区的修改。
$ git reset HEAD file.txt //放弃暂存区的修改。
$ git rm file.txt //删除文件。执行后工作区的文件将被删除。1).执行 git commit –m “XXX”后版本库中的文件也将被删除。2).执行git checkout --file.txt取消删除。(但我操作未成功,删除后我必须提交,然后恢复到上一版本才能恢复。。。)
/*远程仓库*/
在github中创建一个新仓库。
根据提示我们可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联。
我们可以复制上面的命令把本地仓库的内容推送到远程仓库:
$ git remote add origin https://github.com/NitefullWind/test.git //本地仓库与远程仓库关联
$ git push -u origin master //把本地仓库的内容推送到远程仓库。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
把本地master分支的最新修改推送至GitHub
注意:
1).我第一次使用这两条命令时出现了错误:fatal remote origin already exists。后来删除了github安装目录下的一段话后成功。请参考:http://blog.csdn.net/god_wot/article/details/10522405
2).push 失败,方法是 1、先输入$ git pull origin master //先把远程服务器github上面的文件拉下来 2、再输入$ git push origin maste。(也在上面链接的文章中有介绍)3).Git支持多种协议,命令中也可以使用 git@github.com:nitefullwind/test.git
$ git clone git@github.com:nitefullwind/test.git//将远程仓库克隆至本地仓库。
/*分支*/
$ git branch //查看分支。*后面为当前分支。
$ git branchname //创建分支。
$ git checkoutname //切换分支。
$ git checkout -b name //创建+切换分支。
$ git mergename //合并某分支到当前分支。此为快速合并。
$ git branch -dname //删除分支。
$ git log --graph //查看分支合并图。可添加 --pretty=oneline属性以简化显示。
当两个分支分别作了修改并提交后,Git无法执行快速合并,只能视图吧各自的修改合并起来,但这种合并就可能会有冲突。出现冲突后我们必修手动解决冲突后再提交。合并完成。
学了这些差不多基本功能够用了,后面还有分支管理,Bug分支,多人协作,标签管理等很多内容,感觉暂时用不到,看着也挺累,先跳过了 - -。等以后编程学习的更深的时候,用的到的时候再研究吧。
2014年9月14日23:28:04