mark
https://github.com/xirong/my-git/blob/master/git-workflow-tutorial.md
https://segmentfault.com/a/1190000004963641
https://segmentfault.com/a/1190000002918123
https://segmentfault.com/a/1190000003836345 利用git hook自动布署代码
用 git pull --rebase 避免無謂的 merge
----开发者----
git pull 拉取最新代码
git checkout -b mybr1 建立并切换到分支
做开发,如果开发完成后,提交代码
git add .
git commit -m '注释' 可以多次的add和commit
已确认完成并自已测试过,把分支推向*仓库
git push origin mybr1
在web端发起请求合并merge request
----管理者----
git pull 拉取分支
git merge origin mybr1 合并分支
git push origin master 推向*仓库
上完版本后,打tag,可用于回退
git tag -a v1.1 -m 'v1.1' 打标签
git push origin --tags 推标签到*仓库
git tag# 在控制台打印出当前仓库的所有tag
git checkout v1.1 切换到tag 为1.1版本
Git diff
查看本地修改和缓存区:git diff
本地修改和存储区:git diff HEAD
缓存区和存储区:git diff –cached
git提取出两个版本之间的差异文件并打(tag也可以例如git diff v1.1 v1.2)
git diff 608e120 4abe32e --name-only | xargs zip update.zip
即git pull --rebase,这里表示把你的本地当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把本地当前分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到本地当前分支上。(主要是减少冲突的合并)
http://blog.csdn.net/hudashi/article/details/7664631/
http://blog.csdn.net/huangyabin001/article/details/30100287
----开发者----
等分支推向*仓库后,可切回master,拉取最新代码,与*仓库保持一致,如果原来的分支不用,可删除
---------------------------------------------------------
git checkout -b some-feature develop //创建并切换分支
开发功能
git add <some-file>
git commit
开发功能
git add <some-file>
git commit
开发功能
git add <some-file>
git commit
-----完成开发后----
git push origin some-feature
git branch -d some-feature
----------------管理员在合并---------------------------
先拉取develop仓库的,再合并到develop,最后做删除
git pull origin develop
git checkout develop
git merge some-feature
git push origin develop
---------------------------------------------
建develop分支
git branch develop
git push -u origin develop
------------------
git pull
git checkout develop //切换分支
git checkout -b some-feature //在develop的分支,再建一个分支
开发
---------------------------
git reset --hard commit_id 完成撤销,同时将代码恢复到前一commit_id 对应的版本。
git reset commit_id 完成Commit命令的撤销,但是不对代码修改进行撤销,可以直接通过git commit 重新提交对本地代码的修改。
git删除远程分支
git push origin --delete <branchName>
git删除远程tag
git push origin --delete tag <tagname>
【git 删除本地分支】
git branch -D br
删除本地的索引(*仓库还有)
git branch -r -d origin/mybr3
【git 删除远程分支】(真删除)
git push origin :br (origin 后面有空格)
git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id
【本地代码库回滚】:
git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除
git reset --hard HEAD~3:将最近3次的提交回滚
【远程代码库回滚】:
这个是重点要说的内容,过程比本地回滚要复杂
应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布
原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支
操作步骤:
1、git checkout the_branch
2、git pull
3、git branch the_branch_backup //备份一下这个分支当前的情况
4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id
5、git push origin :the_branch //删除远程 the_branch
6、git push origin the_branch //用回滚后的本地分支重新建立远程分支
7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支
如果使用了gerrit做远程代码中心库和code review平台,需要确保操作git的用户具备分支的push权限,并且选择了 Force Push选项(在push权限设置里有这个选项)
另外,gerrit中心库是个bare库,将HEAD默认指向了master,因此master分支是不能进行删除操作的,最好不要选择删除master分支的策略,换用其他分支。如果一定要这样做,可以考虑到gerrit服务器上修改HEAD指针。。。不建议这样搞
http://blog.csdn.net/hongchangfirst/article/category/1113635/4