分支
-
切换分支
git checkout <branch_name>
-
创建分支
git checkout -b <branch_name>
- 合并分支
-
完全合并
// 分支 A、B, B 合入 A git checkout A git merge B git push origin A
-
合并指定的 commit 及之前的 commit
// 分支 A、B, B 的 commit cb4023 及之前的 commit 合入 A git checkout A git rebase --onto cb4023 git push origin A
-
合并指定的 commit
// 分支 A、B, B 的 commit cb4023 合入 A git checkout A git cherry-pick cb4023 git push origin A
-
-
删除分支
-
删除已被终止的分支
git branch -d <branch_name>
-
删除本地分支
git branch -D <branch_name>
-
删除远程分支
git push origin -d <branch_name>
-
-
恢复被删除的分支
git branch <branch_name> <hash_val>
查找分支 hash_val 使用 git reflog eg: git branch <branch_name> HEAD@{4}
代码回滚
-
本地代码库回滚
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_id5、
git push origin :the_branch
// 删除远程 the_branch6、
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指针。。。不建议这样搞
-
版本tag
-
给指定的某个commit号加tag
git tag -a v1.2 9fceb02 -m "my tag"
-
将tag同步到远程服务器
git push origin v1.0
-
删除某个tag
- 本地删除
git tag -d v0.1.2
- 远端删除
git tag push origin :refs/tags/<tagName>
- 本地删除
更改本地和远程分支的名称
-
Rename branch locally
git branch -m old_branch new_branch
-
Delete the old branch
git push origin :old_branch
-
Push the new branch, set local branch to track the new remote
git push --set-upstream origin new_branch
查看分支创建时间
-
查看到指定分支的历次更改记录,最下面一条的时间即是分支创建时间
git reflog show --date=iso <branch name>