前言
最近开始学习使用git来提交pr(pull request),然后使用到了git的分支功能,踩了不少雷,开个帖子记录一下。
Preliminary
准备工作包括fork提交pr的库到自己的github账号中并且拉取到本地,以及设置提交pr的库为origin。这个具体不细讲,主要是写一下分支之间的问题。
一开始git库中只有一个分支main,如果不放心的话可以使用git branch
查看自己当前有多少分支以及处于哪个分支中。
然后我们需要基于main新建一个分支,进行更改来开发自己的功能,比如说新建一个new分支:
git checkout -b new
ok, 此时我们使用git branch
即可发现多了一个new分支,并且我们已经处于new 分支当中。
此时我们可以进行开发,添加各种文件等等。
分支踩坑
接下来是重点!开始踩坑了!
假设我们在new中已经更改、新建了很多文件的话,你想要切换到新的分支,请注意以下几点:
- 如果将new中所有更改、新建的文件都commit上去了之后,基于new再新建新的分支,新的分支会包含new中所有commit过的文件!
- 如果new中有部分文件没有commit就切换分支,那么极有可能报错或者丢失文件!
- 只有将所有改动的文件commit之后,或者将未commit的文件进行
git stash
以后,工作空间才是干净的,才可以切换分支!
如果new中同时包含需要commit和不想commit的文件,此时如果结束工作并且想要切换分支,最好的方法是:
- 先单独add并commit需要的文件
- 使用
git stash
功能将剩下所有不需要commit的文件都暂存起来,此时你未commit的文件会从当前的分支中消失,但是不要怕,可以使用git stash pop
将其返回到原来的样子。这个功能相当于是将未commit的文件暂时存储起来,方便清空工作空间 - 切换分支,如果想要切换一个独立的工作分支,不要使用
git checkout -b
来继承分支,建议切换到main分支后基于main重新新建分支!
目前就想到这些,如果有新的踩雷会继续补充。