Git常用命令

September 13, 2016 9:36 AM
#创建git仓库
git init

#添加文件到git仓库
git add filename

#提交文件至git仓库
git commit -m '描述'

#查看git状态
git status

#查看文件修改了什么内容
git diff filename 

#查看提交历史记录
git log [--pretty=oneline]

#版本回滚. HEAD:代表当前版本; HEAD^ :上一个版本
git reset --hard 版本号(可以只写前几位)

#每一次命令记录
git reflog

#查看工作区和版本库里面最新版的差异
git diff HEAD -- filename

#丢弃工作区的修改(文件回到最近一次git commit或git add时的状态)
git checkout -- filename

#git add 后撤销修改,重新放回工作区
git reset HEAD filename

#删除文件
git rm filename
git commit filename

#如果删除错了,因为版本库里还有,所以可以很轻松地把误删的文件恢复到最新版本
git checkout -- filename

#创建分支,并切换分支
git checkout -b dev

#创建分支,切换分支,并于远程分支关联
git checkout -b dev origin/dev

#当创建分支未关联后用以下命令关联
git branch --set-upstream dev origin/dev

#创建分支
git branch dev

#切换分支
git checkout 分支名称

#查看当前分支
git branch

#合并分支
git merge 被合并的分支名字

#删除分支
git branch -d 分支名称
git branch -D 强行删除分支名称

#合并分支:强制禁用Fast forward模式,Git就会在merge时生成一个新的commit
git merge --no-ff -m  '描述' dev

#合并后,查看历史分支情况
git log --graph --pretty=oneline --abbrev-commit

#把当前工作现场存储起来,等以后恢复现场后继续工作
git stash

#工作现场存到哪去了?
git stash list

#恢复工作现场
git stash apply  #恢复
git stash drop   #删除

or 

git stash pop  #恢复并删除

#如果多次stash ,需要指定stash
git stash apply stash@{0}

#修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
#当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

#查看远程库信息
git remote
git remote -v #显示更详细的信息

#添加远程仓库
git remote add 仓库名字 git@主机地址:仓库地址

#推送分支
git push 远程仓库名 分支名称

git push origin master  #示例1
git push origin dev  #示例2

#clone 分支
git clone git@主机地址:仓库地址 
git clone git@192.168.1.250:/home/code/code.git #示例

#从远程获取最新版本到本地,不会自动merge
Git fetch origin master
git log -p master..origin/master
git merge origin/master

#从远程获取最新版本并merge到本地
git pull origin master

#多人合作

#1,首先,可以试图用git push origin branch-name推送自己的修改;
#2,如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
#3,如果合并有冲突,则解决冲突,并在本地提交;
#4,没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
#5,如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

#打标签
git tag 标签名 [commit id]
git tag v2.0 #示例
git tag v1.9 655545 #示例;未指定的commit id 打标签
git tag -a v1.8 -m "version 1.8" 6245512 #示例,带有说明的标签
git tag -s v1.7 -m 'singed version 1.7' 548545 #示例,通过-s用私钥签名一个标签

#查看所有的标签
git tag

#删除标签
git tag --delete 标签名
或
git tag -d 标签名

#删除远程分支
git push origin --delete tag 标签名

#推送标签至远程仓库
git push origin 标签名

#查看标签信息
git show 标签名称