赞
踩
git checkout:
创建分支
git checkout xxx :转换到xxx分支
git checkout -b xxx :将当前分支创建出xxx分支并切换到xxx分支
git checkout -b xxx 远程仓库名/远程分支名 :将远程仓库/远程分支的基础上创建出xxx分支(与远程仓库的特定分支建立联系)并切换到xxx分支
将某个文件恢复到某个版本
git checkout xxx yyy:把yyy文件恢复到commit版本号为xxx的版本
把工作区的文件恢复到上一次提交 (被删除、被修改的操作还没暂存的情况)
git checkout -- xxx:恢复没有暂存的文件xxx,恢复到上一次提交的时候
把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子.
git checkout .:这条命令把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子.
git fetch
更新远程仓库的分支(不会修改工作区中的内容,需要自己合并)
git fetch <remote>:将远程仓库上抓取本地没有的数据,并且更新本地数据库,移动远程仓库的所有分支移动到最新位置,但是origin/HEAD对应的本地分支没有移动
git fetch 远程仓库名 远程分支名:将远程仓库的远程分支中本地分支没有的数据拉取回来,并移动本地中远程仓库/远程分支的指针
git branch
显示分支
git branch :显示出所有本地分支
git branch -r :显示出远程分支
git branch -a :显示出所有分支
git branch -vv:显示本地分支与远程分支的联系
创建分支
git branch xxx:在当前分支创建xxx分支
删除分支
git branch -d xxx:删除本地分支xxx
git add
将本地工作区加入到暂存区
git add . :将当前目录下的所有文件加入到暂存区
git rm
在工作区和暂存区都删除文件
git rm -f xxx:将工作区和暂存区中的文件xxx删除
删除暂存区文件,不删除工作区的文件即只是撤销暂存区的内容:
git rm --cached xxx:将xxx文件从暂存区中删除换句话说就是摆脱追踪
git commit
将暂存区提交
git commit -m "xxx":将暂存区内的内容提交并提交信息为xxx(重新建立一个提交)
将暂存区追加到提交中
git commit --amend:将暂存区的内容追加到本次提交中
git reset
工作区回滚到特定版本:
git reset --hard xxx:把工作区回滚到特定提交xxx的版本号上此时xxx后面的提交都会被覆盖
比如:git reset --hard HEAD:把工作区回滚到上一次提交的版本并情况暂存区
把某个文件取消暂存
git reset hard xxx:把将XXX文件取消暂存
git push
将本地仓库推送到远程仓库
git push 远程仓库名 本地分支名 :将该本地分支推送到远程仓库的追踪的远程分支,如果不存在则在远程仓库创建一个本地分支名同名的远程分支
git push --set-upstream 远程仓库名 远程分支名:将本地分支与远程仓库远程分支建立联系,如果该远程分支名不存在则创建,之后只要用git push就行
git push 远程仓库名 本地分支名xxx:远程分支名yyy:把本地分支xxx推送到远程仓库的yyy分支上
删除远程仓库的远程分支
git push 远程仓库名 --delete xxx:删除远程仓库上xxx分支
git diff
查看当前分支工作区和暂存区之间的差别
git diff:查看当前分支工作区和暂存区之间的差别
查看当前分支工作区和版本库之间的差别
git diff HEAD:查看当前分支工作区和版本库之间的差别
查看当前分支暂存区与版本库之间的差别
git diff --cached
查看特定分支1与特定分支2之间的差别
git diff xxx yyy:可以查看xxx分支与yyy分支之间的差别(xxx,yyy可以是本地分支也可以是远程分支)
git status
查看当前状态:
git status:查看当前状态比如分支名、暂存区、本地仓库的修改情况
git remote
git remote --verbose:显示本地仓库的远程仓库连接
git remote -v :显示本地仓库的远程连接
与远程仓库建立连接:
git remote add 远程仓库名 git@github.com:XXX/XXX.github.io.git :与远程仓库建立连接
与远程仓库删除连接:
git remote remove 远程仓库名
git config
设置git配置
git config --global :对该用户的所有仓库的配置
git config --system :对本地所有用户的所有仓库的配置
常见的理解分析:
变基rebase和合并merge:
对于两个分支存在提交分叉时,如何实现两个分支之间的合并?
git merge
git merge xxx:把xxx分支合并到当前的分支,此时会新创建一个merge commit
git checkout master
git merge experiment结果为:(可以理解为master和experiment的共同祖先提交 到experiment的最新提交 重新再master分支上运行并提交建立一个新的提交快照)
会生成一个新的快照并提交
由于会出现额外的无用的commit提交所以出现了git rebase
git rebase:
git rebase xxx:追溯到当前分支和xxx分支的共同祖先提交,然后从该祖先提交开始到当前分支的最新提交所做的修改都在xxx分支上的最新提交基础上进行一遍,此时使得当前分支与xxx分支的共同祖先变为xxx分支上的最新提交
以上操作等价于:git rebase XXX 当前分支名即git rebase basebranch t
git checkout experiment
git rebase master 结果为:(可以理解为当前分支与master分支的共同祖先变为master分支的当前最新提交)
之后再git checkout master
git merge experiment 其结果与直接git checkout master ;git merge experiment一样
恢复操作:
恢复工作区且没有被暂存的文件(被删除、被修改的结果还没有被add)
git checkout -- xxx:恢复没有暂存的文件xxx,恢复到上一次提交的时候
恢复已经被暂存的文件(被删除、被修改的结果已经被add)
//首先必须把该文件取消暂存
git reset HEAD XXX:将XXX文件取消暂存
//然后就可以使用git checkout -- xxx恢复到上一次提交的样子
git checkout -- xxx
把工作区恢复到上一次提交并把暂存区清空
git reset --hard HEAD
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。