这篇博文记录了Git的学习过程中基本的Git操作,留下笔记供日后参考。 博主是一个很有条理、注重开发效率的好男人(此处应有掌声),多年的软件工程学习可以明显感受到团队代码的管理对开发团队的重要性。之前一直在使用svn进行代码管理,svn是一款不可多得的好开源软件,其强大的功能可以说相当给力,不愧是团队协同工作利器。 几年之前,就一直听说github的强大,一时兴起注册了账号:csxiaoyaojianxian,只知道它很好用,却不知道那些开源代码是如何上传并操纵的,同时也缺少使用需求,因此仓库闲置在那里。说来丢人,github上的那些大牛的源代码每次我都是“Download ZIP”搞下来,竟然没用过旁边的clone……直到最近学校组织建立工程实践小组,我想借此感受一把git的魅力。 在网上找了一些学习资料进行一番学习,发现git和svn有太多的相似之处,并且其依托github这个云仓库,简直不能再赞,学习过后,我在自己宿舍内网穿透的计算机上安装了git,作为团队工作的代码仓库。使用过程中发现,有些简单常用的操作步骤容易遗忘,还是简单以纯文字记录下,以备后查。
查看是否安装了Git
$ git
安装
$ sudo apt-get install git
也可以下载源码包
$ ./config
$ make
$ sudo make install
设置
$ git config –global user.name “Your Name”
$ git config –global user.email email@example.com
设置Git显示颜色
$ git config –global color.ui true
创建版本库 切换到需要创建版本库的目录
$ git init
将文件放到Git仓库
$ git add <file>
$ git commit -m “wrote a readme file”
查csxiaoyao.com看当前仓库状态、差异及日志
$ git status
$ git diff <file>
$ git log
$ git log –pretty=oneline
版本回退 HEAD表示当前版本(提交ID),上个版本是HEAD^,上上个版本是HEAD^^,上100个版本是HEAD~100。
$ git reset –hard HEAD^
$ git reset csxiaoyao.com–hard 3628164
查看命令记录找回提交ID
$ git reflog
丢弃修改 丢弃工作区的修改,文件回到最近一次commit或add时状态
$ git checkout — readme.txt
撤销暂存区的修改,重新放回工作区,reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,HEAD表示最新版本
$ git reset HEAD readme.txt
文件删除及恢复 删除文件
$ git rm test.txt
$ git commit -m “remove test.txt”
删错恢复
$ git checkout — test.txt
创建SSH Key
$ ssh-keygen -t rsa -C “youremail@example.com”
在用户主目录找到.ssh目录,有id_rsa和id_rsa.pub两个文件 登陆GitHub,Add SSH Key,粘贴id_rsa.pub文件内容
本地仓库推送到GitHub仓库 远程库的名字默认是origin,可以修改
$ git remote add origin git@github.com:csxiaoyaojianxian/test.git
把当前分支master推送到远程
$ git push -u origin master
首次加上-u参数,会把本地master分支和远程master分支关联
$ git push origin master
从远程库克隆
$ git clone git@github.com:csxiaoyaojianxian/test.git
基本分支操作 查看分支
$ git branch
创建分支
$ git branch <name>
切换分支
$ git checkout <name>
创建+切换分支
$ git checkout -b <name>
合并某分支到当前分支
$ git merge <name>
删除分支
$ git branch -d <name>
强行删除没有被合并过的分支
$ git branch -D <name>
查看分支合并情况
$ git log –graph –pretty=oneline –abbrev-commit
禁用Fast forward
$ git merge –no-ff -m “merge with no-ff” dev
Bug分支 stash功能可以把当前工作现场入栈,以后恢复
$ git stash
查看stash
$ git stash list
恢复现场 方法一:
$ git stash apply
恢复后stash内容并不删除,再删除
$ git stash drop
方法二:
$ git stash pop
恢复的同时删除stash内容
$ git stash pop
恢复指定的stash
$ git stash apply stash@{0}
5. 多人协作
查看远程库信息
git remote git remote -v
抓取分支
$ git clone git@github.com:csxiaoyaojianxian/test.git
推送分支
$ git push origin master
合并分支解决冲突
$ git pull
建立本地分支和远程分支的关联
git branch –set-upstream branch-name origin/branch-name。
## 6. 标签管理
创建标签,默认为HEAD
$ git tag v1.0
给指定提交ID 创建标签
$ git tag v0.9 1247721
查看所有标签
$ git tag
指定标签信息
$ git tag -a <tagname> -m “inf”
用PGP签名标签
$ git tag -s <tagname> -m “PGP”
推送一个本地标签
$ git push origin <tagname>
推送全部未推送过的本地标签
$ git push origin –tags
删除本地标签
$ git tag -d <tagname>
删除远程标签
$ git push origin :refs/tags/<tagname>
