天行健, 君子以自强不息
Sunny's Blog
Title

常用到的git操作

1.新建分支并将服务器分支和新分支合并并且跳到新的分支下

git checkout origin/dev -b dev

2.rebase后冲突,回到rebase之前的状态

git rebase --abort

3.如何用git reflog和git cherry-pick找回已删除的commit记录

                commit2: add test2.c
                commit1: add test1.c
                模拟丢失commit记录的情况,执行git reset --hard HEAD~1,删除了commit3,同时test3.c文件已经在working tree里看不到了,如果要恢复commit3,就要使用git reflog和git cherry-pick.
                $ git reflog
                502dd0f HEAD@{0}: HEAD~1: updating HEAD
                147b3b5 HEAD@{1}: commit: test3
                502dd0f HEAD@{2}: commit: test2
                0692c03 HEAD@{3}: commit (initial): test1
                HEAD@{0}: HEAD~1: updating HEAD
                红色加粗的即是被删除了的 commit3,运行git log则没有这一行记录,可以使用git reset --hard 502dd0f
                将红色记录删除,恢复cmmit3,需要用git cherry-pick.
                $ git cherry-pick 147b3b5
                [master 02c1e69] test3
                0 files changed, 0 insertions(+), 0 deletions(-)
                create mode 100644 test3.c
                

4.git stash 可用来暂存当前正在进行的工作

                比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
                基础命令:
                $git stash
                $do some work
                $git stash pop
                

5.修改提交了的文件的用户名和邮箱

git commit --amend --author='Your Name (尖括号)you@example.com(尖括号)'

6.删除所有stash,git stash clear

7.批量删除不需要的branch, git branch |grep '分支名' |xargs git branch -d

地势坤,君子以厚德载物