文章背景
再使用git的路上你可能会遇到,git合并部分文件到另一个分支的需求。之前我就遇到了,我的master分支是只提交部分文件的,但是我有一个新分支存放了全部文件。这就产生了问题,但是当我切换分支后,忘记换回master分支。切会master分支的话,工作区的新文件又会消失。因此我google了近一个小时。。。结果全是使用checkout强制覆盖文件的。要不就是直接合并的。。。现在想起来,可能别人觉得合并就完事了吧。之后都很简单
解决方法
经过一个小时的奋斗,我选择死亡,死马当活马医,尝试网上没有的答案。
不想提交的文件较少时
首先:合并新分支到当前分支
git merge 新分支
然后我使用git log查看了一下,一个新的提交。接着我清除commit的内容,把所有commit的东西推到暂存区。
git reset --soft
之后我使用git status,发现合并的文件确实已经在暂存区了。瞬间觉得成就感爆棚
最后我使用
git reset 文件名
清除掉不需要的文件。
然后直接提交
git commit -m "xxx"
舒服,完成。
之后顿时感觉自己傻吊,干嘛google那么久,git不是自带版本回退么,我怕个吊直接试啊,浪费了太多时间orz。
不想提交的文件太多时
如果你不想提交的文件很多,还有另一种方法就是,直接
git reset HEAD^
把commit跟暂存区的东西撤掉。但是工作区的东西还在
然后跟平常一样直接加入后提交
git add 你的文件
git commit -m "xxxx"
如果需要修改工作区内容
其实这样并不完整,因为你的工作区的文件还是改变了。如果你有需要,这个就请直接git reset --hard吧,这个命令会修改工作区的文件,所有很危险慎用哦,不过如果你确定没问题,那就使用吧。