用git也1年了,解决各种各样问题,但老忘记一些命令和用法,此为总结和记录。
一、初始化和配置
git config --global user.name "thoreau"
git config --global user.email "zz.thoreau@Gmail.com"
gitconfig
[user]
name = thoreau
email = zz.thoreau@Gmail.com
[color]
ui = true
[alias]
st = status
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
co = checkout
br = branch
ci = commit
unstage = reset HEAD --
[core]
autocrlf = true
[gui]
encoding = utf-8
[i18n]
commitencoding = utf-8
logoutputencoding=utf-8
二、回退
回退用得很多,特别是多人开发,各种提交何必整个被玩坏了的时候。git reset、git checkout 和 git revert 是Git中很有用的命令,用来撤销代码仓库中的某些更改。但它们非常相似,所以我们经常会搞混,
reset
git reset --mixed HEAD #将你当前的改动从缓存区中移除
git reset --hard HEAD^ #放弃修改,直接把head 指向对应版本
git reset --hard 3628164
git reflog #记录你的每一次命令
git log --pretty=oneline #one line
工作副本–add–>缓存区–commit—>版本库
撤销
git diff HEAD -- readme.txt #查看工作区和版本库里面最新版本的区别
git checkout -- file #回到最近一次修改,最近一次git commit或git add时的状态
删除
git rm file
git checkout -- #撤销删除
Revert Revert 撤销一个提交的同时会创建一个新的提交。这是一个安全的方法,因为它不会重写提交历史。比如你想把已经提交到master的代码回退到某一个版本,就比较是否revert,如果直接reset或者commit -amend,会导致提交历史不同,导致分支合并是的问题。
git checkout hotfix
git revert HEAD~2
三、远程主机
git remote
git remote -v
git clone -o jQuery https://github.com/jquery/jquery.git #alise
git remote show origin #detail
其他命令
$ git remote show origin #查看该主机的详细信息
$ git remote add <主机名> <网址> #添加远程主机
$ git remote rm <主机名> #于删除远程主机
$ git remote rename <原主机名> <新主机名> #重命名主机名
四、分支
- git checkout -b dev # 创建并切换到dev分支
- 提交等操作
- git checkout master
- git merge dev #合并到master:把master的指针指向master
- git branch -d dev # 删除分支
#查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
分支管理策略
--no-ff
参数,表示禁用Fast forward
git merge --no-ff -m "merge with no-ff" dev
储藏室 如果当前工作不能提交,就要进行切换分支,合并代码等操作时,可以把当前分支的工作存储起来,干完其他活后,再回来继续;
git stash
git stash list #列出储藏室
git stash apply #运用存储室
git stash drop #删除储藏室
git stash pop #恢复并删除
五、标签
git tag v1.0 #创建
git tag #查看
git tag v0.9 6224937 #对应版本tag
git show v0.9 #查看标签信息
git tag -d v0.1 #删除
git push origin v1.0 #推送标签
git push origin :refs/tags/v0.9 #远程删除