检查git是否安装:$ git
添加git个人信息:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
创建一个版本库
$ mkdir learngit //创建一个空目录
$ cd learngit //切换到learngit目录
$ cd - //退回上一个目录
$ pwd //显示当前目录
把这个目录变成Git可以管理的仓库:$ git init
查看版本库状态:$ git status
查看具体修改了什么内容
$ git diff
$ git diff readme.txt
提交修改和提交新文件是一样的两步
$ git add readme.txt
$ git commit -m "注释说明"
$ git add * -f //添加所有文件
查看版本库中的文件:$ ls
查看版本库修改记录
$ git log
$ git log --pretty=oneline //简洁版
把当前版本回退到上一个版本
$ git reset --hard HEAD^
$ git reset --hard HEAD~100 //回退到上100个版本
$ git reset --hard 3628164 //回退到某个修改的版本号
查看某个文件的内容:$ cat readme.txt
查看工作区和版本库里面最新版本的区别
$ git diff HEAD -- readme.txt
把暂存区的修改撤销掉(unstage),重新放回工作区
$ git reset HEAD readme.txt
丢弃工作区的修改,使其恢复之前状态(还未add进暂存区)
$ git checkout -- readme.txt
普通删除工作区中没用的文件
$ rm test.txt
确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
$ git rm test.txt
$ git commit -m "注释说明"
删除某目录下文件
$ git rm SSH/* -r
$ git commit -a -m ‘remove .idea’ //提交.注意是单引号
把误删的文件恢复到最新版本(没有commit之前)
$ git checkout -- test.txt
远程连接模式github
连接github,提供Git仓库托管服务;id_rsa是私钥,id_rsa.pub是公钥,可以放心地告诉任何人
$ ssh-keygen -t rsa -C "youremail@example.com"
本地仓库的内容推送到GitHub仓库,先将本地仓库与之关联
$ git remote add origin git@github.com:Andsion/learngit.git
下一步,就可以把本地库的所有内容推送到远程库上
$ git push -u origin master
从现在起,只要本地作了提交,就可以通过命令提交到Github,前提本地已经commit
$ git push origin master //master分支是主分支,因此要时刻与远程同步;
克隆一个本地库,将Github项目克隆到本地
$ git clone git@github.com:Andsion/gitskills.git
<-- 分支总结 -->
查看分支:$ git branch
创建分支:$ git branch name
切换分支:$ git checkout name
创建+切换分支:$ git checkout -b name
合并某分支到当前分支:$ git merge name
删除分支:$ git branch -d name
查看分支合并图:$ git log --graph
禁用Fast forward合并分支:$ git merge --no-ff -m "说明" dev
隐藏当前工作区的改动:$ git stash
查看隐藏的信息:$ git stash list
恢复隐藏的工作内容
用git stash apply恢复,恢复后,stash内容并不删除,需要用git stash drop来删除
用git stash pop,恢复的同时把stash内容也删了
恢复指定的stash(先用git stash list查看)
$ git stash apply stash@{0}
团队协作
你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地
$ git checkout -b dev origin/dev
首先,可以试图用git push origin branch-name推送自己的修改;
$ git push origin master
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
$ git pull
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令
$ git branch --set-upstream branch-name origin/branch-name
冲突解决的一般过程
1.查看冲突
git rebase master
2.解决完一个补丁应用的冲突后,执行下面命令标记冲突已解决
git add -u
3.重新add commit 修改后的文件
4.如果想回到rebase执行之前的状态,可以执行
git rebase --abort
创建标签
1.首先,切换到需要打标签的分支上
$ git checkout master
2.敲命令git tag <name>就可以打一个新标签
$ git tag v1.0
3.用命令git tag查看所有标签
$ git tag
4.默认标签是打在最新提交的commit上,若要打之前的标签,需要找到历史提交的commit id
$ git tag v0.9 6224937
$ git tag -a v0.1 -m "version 0.1 released" 3628164 //带说明的标签
5.用命令git show <tagname>可以看到说明文字
$ git show v0.1
6.标签打错了,也可以删除,只是本地删除,需要推送某个标签到远程
$ git tag -d v0.1 //删除标签
$ git push origin v1.0 //推送
$ git push origin --tags //推送全部尚未推送到远程的本地标签
7.删除远程标签
$ git tag -d v0.9 //先从本地删除
$ git push origin :refs/tags/v0.9 //然后,从远程删除
过滤文件
输入 touch .gitignore 在文件夹就生成了一个“.gitignore”文件
# 过滤文件夹
build/
# 过滤所有.class文件
*.class
# 过滤.gitignpre文件
.gitignpre