1.设置账户与邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com" //此处global命令为当前机器下所有仓
2.创建版本库
$ mkdir learngit //创建文件夹
$ git init //将这个目录变为Git可以管理的仓库
ls -ah //查看隐藏目录
3.添加到暂存区与提交到仓库
$ git add readme.txt //将文件添加到暂存区,可反复使用,添加多个文件,再一次性提交
$ git commit -m "wrote a readme file" //将文件提交到仓库(-m为提交注释)
4.查看改动状态与改动具体差异
$ git status //让我们掌握当前仓库的状态
$ git diff readme.txt //查看对某文件进行了什么修改
$ cat readme.txt //查看文件内容
5.查看提交历史记录
$ git log //显示从最近到最远的提交日志
//最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file
$ git log --pretty=oneline //简化log
6.版本回退
$ git reset --hard HEAD^ //HEAD表示当前版本,HEAD^表示上一版本,HEAD~100表示往上100个版本
$ git reset --hard 3628164 //往指定版本跳转 版本号无需写全
$ git reflog //查看你的每一次命令,以便确认要回到未来的那个版本
7.撤销修改
$ git checkout -- readme.txt //让某文件修改撤销,让他回到最近一次git commit或git add的状态(未add时)
$ git reset HEAD readme.txt //git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区.
//当我们用HEAD时,表示最新的版本.
//已add,未commit再使用checkout撤销工作区的修改.
8.删除文件
$ rm test.txt //直接删除文件,在通过提交达到删除目的
$ git rm test.txt
$ git commit -m "remove test.txt" //从版本库中删除该文件,并git commit
$ git checkout -- test.txt //当发生误删时,可以从版本库中恢复最新版本
9.创建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com" //创建SSH Key
//用户目录下,有id_rsa和id_rsa.pub两个文件,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人.
10.添加远程库
$ git remote add origin git@github.com:michaelliao/learngit.git //关联远程库
//orgin 一般指代远程库
$ git push -u origin master
//将本地库的内容推送到远程
//因为是第一次推送,加上-u参数,将本地master分支与远程的master分支联系起来
$ git push origin master //将本地master分支的最新修改推送这Github
11.从远程库克隆
$ git clone git@github.com:Mzs1994/gitskills.git //从远程库克隆一个本地库
//Git支持多种协议 包括https,但通过ssh支持的原生git协议速度最快
12.创建与合并分支
$ git checkout -b dev
//创建dev分支,git checkout命令加上-b参数表示创建并切换
//相当于以下两条命令
$ git branch dev
$ git checkout dev
$ git branch //查看当前分支
$ git checkout master //完成dev工作后,切换回master分支
$ git merge dev //用于合并指定分支到当前分支
$ git branch -d dev //删除当前分支
13.解决冲突
$ git log --graph --pretty=oneline --abbrev-commit //可以看到分支合并图
//当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
14.分支管理策略
$ git merge --no-ff -m "merge with no-ff" dev
//--no-ff参数,表示禁用Fast forward
//这次合并,会创建一个新的commit
//出现如下log
$ git log --graph --pretty=oneline --abbrev-commit
* 7825a50 merge with no-ff
|\
| * 6224937 add merge
|/
* 59bc1cb conflict fixed
15.Bug分支
$ git stash //将未提交的修改暂时保存
$ git stash list //查看工作现场存储情况
$ git stash apply //恢复但不删除stash内容
$ git stash apply stash@{0} //恢复但不删除指定stash内容
$ git stash drop //删除stash内容
$ git stash pop //恢复同时删除stash内容
//修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
//当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
16.Feature分支
$ git branch -D feature-vulcan //强行删除
//如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。
17.多人协作
$ git remote //查看远程库的信息
$ git remote -v //查看远程库的详细信息
$ git push origin master //推送分支,前一个为远程,后一个为本地
$ git branch //查看分支
$ git checkout -b dev origin/dev //创建远程origin的dev分支到本地
$ git branch --set-upstream dev origin/dev
//建立本地dev分支与远程origin/dev分支
18.标签
$ git tag //查看所有标签
$ git tag v0.9 6224937 //给提交打标签
$ git show v0.9 //查看标签信息
$ git tag -a v0.1 -m "version 0.1 released" 3628164 //创建自带说明的标签
$ git tag -d v0.1 //删除标签
$ git push origin v1.0 //推送标签到远程
$ git push origin --tags //一次性推送全部尚未推送到远程的本地代码
$ git push origin :refs/tags/v0.9 //当标签已经推送到远程时,先删除本地标签
19.自定义Git
$ git config --global color.ui true //让Git显示颜色
20.忽略特殊文件
//配置.gitignore文件
$ git add -f App.class //强制添加文件到git
$ git check-ignore -v App.class //检查忽略文件命令
21.配置别名
$ git config --global alias.st status //配置status的别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
.git/config //每个仓库的配置文件
admin/.gitconfig //用户主目录
网友评论