git 是一个分布式的版本管理系统管理
svn 集中式版本管理系统
git add -p 逐条添加暂存区
git commit 将暂存区的修改一次性提交到分支
git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别
git checkout -- file 撤销工作区的修改
git checkout branchName
git reset HEAD <file> 撤销暂存修区改
git rm fileName then commit 删除版本库中的某文件
git pull -rebase origin master
当存在冲突时需要rebase (rebase 变基)
git rebase --continue
git rebase
git reset --hard HEAD^/版本号(不必写全) 几个^就回退几个版本
git reflog 查看历史命令 (根据commit ID也可以进行回退) 更改到本次提交后的版本
工作区,暂存区,版本库
工作区代码修改 -->add 暂存区 -->commit 版本库
分支管理
git checkout branchName
git remote add origin git@github.com:michaelliao/learngit.git 添加远程仓库
查看分支:git branch 查看本地分支
git branch -a 查看所有分支,包括远程
git branch -r 查看远程分支
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
分支策略
当程序出现错误时 创建分支,进行修改,改完然后合并,并删除bug分支
git stash 暂存工作区
git checkout -b bugbranch
git add/commit deng 修改
git checkout master
git merge --no-ff -m 'fix bug' bugbranch
添加 --no-ff 会保存 bug分支信息于该条分支记录上
不添加,则不会体现在主分支上
git stash apply 恢复stash 内容
git stash drop 删除 stash
git stash pop 恢复并删除
git stash list
git branch -D bugbranch 强行删除 未合并分支
git checkout -b dev origin/dev
创建 origin的远程分支到本地
git push origin dev
.gitignore 不参与文件管理 这里设置的是global配置,包括远程库
.git\info\exclude 本地库设置,不参与版本控制的文件
但从远程库获取的文件中参与版本控制的文件,不能加入exlude文件中,无效
$ git config --global alias.st status 配置别名
//标签
git tag tag.01 为当前分支,设立标签
git tag v0.9 f52c633 为某次提交设立标签
git show tagname 显示版本信息
git tag -d tagname 删除标签
git push origin tagename
git push origin --tages 将全部尚未推送 标签全部推送
git tag -d tagName 删除本地
若 标签已推送
则需
git push origin :refs/tags/tagename
删除远程标签
git push origin:refs/for/branch 删除远程分支
将本地master 分支推送到 远程的 某分支上
git push origin:remotebranchname master
git cherry-pick 分支id 将其它分支的版本 拉取到本分支上