git使用指南及分支管理策略
Git是什么?Git是一个开源的分布式的版本管理工具。
为什么要使用GIt?
Git是目前世界上最先进的版本管理工具,尤其在分支管理上表现突出,能够极为方便地解决开发中的版本问题。
Git如何使用?
工作区:git仓库所在目录
版本库:工作区中的.git目录
暂存区:版本库中等待提交的内容所在区域
git命令
基本命令git init在当前目录下创建一个版本库git add file将文件从工作区添加到暂存区git commit -m "message"将暂存区中的内容提交到版本库的当前分支git status查看git仓库当前状态git diff file查看文件修改内容git diff HEAD -- file查看工作区和仓库最新版的差别git log [--graph][--pretty=oneline][--abbrev-commit]查看历史commit日志,不能查看已删除的commit记录git reset --hard HEAD~x回到历史版本git reflog查看所有分支的所有操作(包括commit和reset)git rest --hard commit_id回到任意版本git checkout -- file丢弃工作区的修改git rm file删除文件远程仓库git remote add origin remote_address关联远程git仓库git push -u origin master首次向远程仓库推送master分支所有内容git push origin branch_name从本地推送分支git pull从远程抓取当前分支git clone remote_address将远程仓库克隆到本地git checkout -b branch-name origin/branch_name在本地创建和远程分支对应的分支(分支名称最好一致)git branch --set-upstream branch_name origin/branch_name建立本地分支和远程分支的关联git remote -v查看远程库信息分支管理git branch branch_name创建分支git checkout branch_name切换分支git checkout -b branch_name创建并切换分支git branch列出所有的分支git merge [--abbrev-commit] [-m "message"] branch_name合并指定分支到当前分支git branch -d branch_name删除分支git branch -D branch_name强行删除未合并的分支git stash存储当前工作区git stash list查看保存的工作区git stash apply stash@{0}恢复stash但不删除git stash drop删除stashgit stash pop恢复stash同时删除stash标签管理git tag tag_name在当前分支的最新commit上创建标签git tag查看所有标签git tag tag_name commit_id在当前分支的指定commit_id上创建标签git tag -a tag_name -m "message" commit_id在当前分支的指定commit_id上创建带说明的标签git show tag_name查看标签信息git tag -d tag_name删除标签git tag push origin :refs/tags/tag_name将本地删除的标签推送到远程(即删除远程标签)git push origin tag_name将标签推送到远程git push origin --tags推送所有未推送的本地标签到远程其它git check-ignore -v file检查文件是否被忽略git config --global alias.xx yy配置yy命令的别名为xx配置git lg为各种git log附加效果的别名:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset' --abbrev-commit"
分支管理策略
常设分支:master(版本发布)、dev(日常开发)
临时分支:feature(功能分支)、fixbug(bug分支)、release(预发布分支)
分支管理应该保持脉络和演进清晰,常设的分支建议只有master和dev,临时分支使用完后应该删除。
master
主分支:git仓库中有且仅有一个主分支,正式版本永远只从主分支发布,禁止在主分支直接修改代码
dev
开发分支:所有的开发都在dev分支进行,需要发布版本时,将dev分支合并到master分支
feature-*
功能分支:为了开发某种功能,从dev分支分出来,完成后合并入dev分支
fixbug-*
bug分支:出现bug时,从master分支分出来,修复以后合并到dev分支和master分支
release-*
预发布分支:发布正式版之前(dev合并到master之前),预发布一个版本测试,预发布结束后,必须合并进dev和master分支
参考教程:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
http://blog.jobbole.com/23398/
http://www.ruanyifeng.com/blog/2014/06/git_remote.html
页:
[1]