首页 > 技术文章 > Git命令

zeppelin 2016-10-29 22:46 原文

Git是分布式版本控制系统

Git创造者Linus,也是linux内核的设计者。

 

生成git仓库

git init

把文件添加到git仓库

git add filename

把文件修改添加到暂存区(stage)。

若要添加当前目录下所有文件

git add .

提交文件到仓库

git commit -m "explain"

-m参数为本次提交的说明。把暂存区的所有内容提交到当前分支(默认git会创建master分支)。

查看仓库状态

git status

查看上次修改内容

git diff filename

查看修改历史记录

git log

显示从最近到最远的提交日志。--pretty=oneline可以将每次修改显示为一行。

回退到上一版本

git reset --hard HEAD^

HEAD代表当前版本,HEAD^代表上一版本,上上版本HEAD^^,上10版本HEAD~10。

回到未来版本

git reset --hard 2354611

2354611是commit id前几位,不必写全,也不能写太少,git能自动找到确定的一个版本就行。

查看命令历史,可找到commit id

git reflog

查看工作区和版本库里面最新版本的区别

git diff HEAD -- filename

撤销工作区的修改

git checkout -- filename

两种情况:1.从修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。2.已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

撤销暂存区修改

git reset HEAD filename

删除工作区文件

rm filename

删除版本库文件

git rm filename
git commit -m "remove filename"

创建并切换分支

git checkout -b test

-b参数表示创建并切换。也可用下面2个命令:

git branch test
git checkout test

查看当前分支

git branch

git branch命令会列出所有分支,当前分支前面会标一个*号。

合并分支工作

git merge test

git merge命令用于合并指定分支到当前分支。

删除分支

git branch -d test

查看分支合并图

git log --graph --pretty=oneline --abbrev-commit

禁用Fast forward模式,Git就会在merge时生成一个新的commit

git merge --no-ff -m "merge with no-ff" test

--no-ff参数,表示禁用Fast forward。

保存现场,去修复bug

git stash
git stash list
git stash apply    #恢复后stash内容不删除
git stash pop       #恢复后stash内容删除
git stash apply stash@{0}   #恢复指定stash

查看远程库信息

git remote

加-v参数显示更详细信息。

推送分支

git push origin master

推送master分支,也可修改为其他分支。

在本地创建和远程分支对应的分支

git checkout -b branch-name origin/branch-name

建立本地分支和远程分支的关联

git branch --set-upstream branch-name origin/branch-name

从远程抓取分支

git pull

打标签

git tag <name>

查看所有标签

git tag

找到历史提交的commit id

git log --pretty=oneline --abbrev-commit

给对应commit id打标签

git tag v0.9 commit id

查看标签信息

git show <tagname>

创建带有说明的标签

git tag -a v0.1 -m "version 0.1 released" commit id

-a指定标签名,-m指定说明文字

PGP签名标签

git tag -s <tagname> -m "fffddd."

删除标签

git tag -d v0.1

推送某个标签到远程

git push origin <tagname>

一次性推送全部尚未推送到远程的本地标签

git push origin --tags

删除远程标签

git tag -d v0.1  #先删除本地标签
git push origin :refs/tags/v0.1   #从远程删除

配置别名

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
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"

 

推荐阅读