注:本文不适合新手,只是方便查阅。新手能够参考廖雪峰的教程:[www.liaoxuefeng.com/wiki/896043…]html
git log
参数太多了,又很好用,这里放上参数大全:[www.cnblogs.com/bellkosmos/…]git
方便起见,本文举例文件名为text.txt。若实际中文件名中有空格,请用引号包围。github
首先了解下git维护的三块内容:工做区-->缓存区stage-->当前版本HEAD。缓存
git config --global user.name "cm"
git config --global user.email "@example.com"
git init
git add text.txt
,强制添加(ignore的也行):git add -f text.txt
git add .
git commit -m "一些些说明"
,每次提交都有commit.idgit rm text.txt
-->提交到HEADgit commit -m "一些些说明"
git status
git log
(版本回退以后,这里的提交日志也会减小哦),精简版内容:git log --pretty=online
,带分支合并图内容--graph
git log -1
git rebase
git reflog
(要是遇到什么奇奇怪怪的东西,按Q就退出了)git checkout -- text.txt
(本质是从HEAD拷贝了一份新的text.txt替换。不影响缓存区内容),撤销所有git checkout -- *
git add text.txt
命令前):git reset HEAD text.txt
git reset --hard HEAD^
(HEAD^
表示上个版本,HEAD^^
表示上上个版本,以此类推。也可能够简写:HEAD~100
表示100个^
)git reset --hard <commit.id>
根据commit.id
选择想到达的版本git log
查看版本。回退完后悔了想前进,能够用git reflog
查看commit.id再前进;操做完,由于工做区和HEAD同步了嘛,因此缓存区很“干净git diff HEAD -- text.txt
git branch dev
git switch dev
或者git checkout dev
git switch -c dev
或者git checkout -b dev
git checkout -b dev origin/dev
git branch
(列出了全部分支,标记*为当前分支),添加-vv
参数能看到关联的远程分支git merge dev
。git merge --no-off dev
,由于要进行一次commit,因此通常加上-m
参数。git status
中看到冲突了。手动修改后提交至HEAD。提交后能够用git log --graph
看到分支合并图。结合上条例子,dev不变。git branch -d dev
,强行删除没被合并的分支,把小d换成大Dgit stash
git stash list
git stash apply
:恢复工做现场,但不删除stash内容不删除,须要经过git stash drop
删除stash。能够查看git stash list
后逐条恢复,如git stash apply stash@{0}
git stash pop
:恢复并删除stashgit cherry-pick <commit.id>
git remote add <远程仓库名> <远程仓库地址>
(通常远程仓库名取为origin)git push origin master
, master是本地分支名,push时git会把远程同名分支关联起来,因此远程分支名也是master。 第一次带上-u
参数,之后操做就方便了,只须要在当前分支下git push
就好了,可用git branch -vv
查看默认推送状况。(可能会出现SSH警告,输入yes就行了)git clone <远程仓库地址>
(不须要本地额外建仓库,直接推就好了)git remote
,带上-v
参数显示更详细的信息git pull origin master
,至关于git fetch origin/master
+git merge origin/master
;git pull
是拉取全部分支。 (若是出现no track information提示,能够先用git branch --set-upstream-to <branch-name> origin/<branch-name>
建议本地与远程分支的连接)。git remote rm origin
git tag <标签名>
,默认标签是打在最新一次的提交上的git tag <标签名> <commit.id>
git tag
,标签是按字母排序的git show <标签名>
git tag -a <标签名> -m "一些些说明" <commit.id>
git tag -d <标签名>
git push origin <标签名>
git push origin --tags
git tag -d <标签名>
-->再删远程git push origin :refs/tags/<标签名>
git check-ignore -v <文件名>
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"
HEAD改变后会直接致使其它两块内容的改变。 工做区改变后须要一步步保存到HEAD。app
master是主分支;HEAD指向的是当前分支。注意这二者的关系。全部的操做默认在当前分支下进行。fetch
push时本地和远程分支默认须要同名,git也会自动追踪远程同名分支。特意改为不一样名会很麻烦,不建议。日志