git使用的那些事儿

主要参考:廖雪峰的git教程阮一峰的git相关教程git官方文档

1、git本地已经进行了merge操作并提交,但是还没有push到远端仓库,此时要撤销本次merge操作,可以执行:

git reset --merge ORIG_HEAD

具体参考:Undo a Git merge that hasn't been pushed yet

2、如果在a分支执行了git stash,然后切换到b分支,干完活提交后准备恢复现场,结果没有切换回a分支就执行了git stash pop,怎么样恢复?

(1)首先,在错误的分支执行了git stash pop后,不管怎么样,首先就是工作区的代码被污染了(如果git commit了,那就是暂存区也被污染了),此时首先要做的肯定是还原回去:git reset --hard;

(2)切换回a分支,然后如果在当前终端还能找到之前的stash的hash码,则直接执行git stash commit hash_code即可,如果已经关闭过终端了,则可使用git log --graph --oneline $(git fsck | awk '/dangling commit/ {print $3}')找回;

具体可参考:找回pop掉的stash

3、git查看所有分支,包括远端分支:

git branch -a

4、git删除分支:

a、如果需要删除的分支不是当前分支,使用:git branch -d <branch_name>;

如果为删除当前所在分支,则使用:git branch -D <branch_name>

b、删除远程分支内容:git push origin :<branch_name>,注意,冒号前面的空格不能少,相当于把一个空分支push到远端server上,等于删除该分支。

具体可参考:Git删除分支/恢复分支Git删除分支

5、git merge相关介绍:git-merge完全解析

6、如果代码没有啥改动,但是发现commit消息没写好,可以使用:git commit --amend指令

可参考:Git commit 常见用法

7、git submodoule相关:

概念理解:子模块可以认为是主仓库里面包含的一个仓库,常见的是在主项目里的某个文件夹作为子模块,因此,如果需要查看子仓库的信息,要切换到相应的目录下,执行相应的git指令,如git status/branch/log等;

(1)目前碰到的一个问题,就是在测试服主仓库目录下,执行git status,发现子模块有commit,现在想更新子模块到最新,由于该修改为他人修改遗留,首先执行git reset --hard后,发现子模块还是有commit,执行git submodule update --init --recursive报错abort;解决方法是,切换到子模块目录下,再次执行git reset --hard后,子模块的工作区终于清理干净,然后执行git submodule update --init --recursive成功。

猜你喜欢

转载自blog.csdn.net/scutjyj/article/details/85042325