标题:you need to resolve your current index first 的解决办法,以及出现Changed but not updated:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory) 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Fri, 23 Jun 2017 00:15:22 +0000 作者:jackxiang 地址:http://jackxiang.com/post/9222/ 内容: 问题:在 $git status # On branch master $git checkout master README.txt: needs merge error: you need to resolve your current index first git reset --merge git pull #好了,但是出现: # Changed but not updated: ( Changes bu not updated → 文件被修改,但并没有添加到暂存区。如果 commit 时没有带 -a 选项,这个状态下的文件不会被提交) # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) 现在有两个操作可供选择,要么把暂存区的所有内容添加到当前分支上;要么清除暂存区回退成与分支内容一致,但工作区没有清除,若想把工作区也清除,就得在使用git checkout -- file(这里的--后面有一个空格键)命令了。详细解说如下: 方法一, 按提示的来:"git checkout -- ...,发现还是不行,其它兄弟试了下是可以的,法一居然不行,其它兄弟试可以,最后用了法二: git checkout -- ./WxPayApi.php #某个文件 git checkout -- * #这命令是还原当前分支下的所有修改到stage上并未commit的文件,-- 后面是文件名的意思。 以上方法没有办法搞定,奇怪了,最后还是用最后,这样解决了: git commit -am"解决一下Master的:Changed but not updated" , 用:-am,Git的小乌龟难道看不到吗?奇怪了,默认就是-am呀,所有人都用乌龟就好了 ,绝对不会出现问题,哈哈,命令行捣蛋了??? 解决办法继续参看:http://blog.csdn.net/qq_38801354/article/details/72793909 方法二、 用git commit -am"个人自媒体代码的Dev分支也解决一下Dev分支的问题,给全提交到仓库。",再提交Git服务器仓库,得以解决。 先检出Master: $git checkout master M api.jackxiang.com/components/WxPay/WxPayApi.php M api.jackxiang.com/components/WxPay/WxPayConfig.php M api.jackxiang.com/components/WxPay/WxPayDataBase.php M api.jackxiang.com/components/WxPay/WxPayException.ph 核对还是有问题: $git status # On branch dev # Changed but not updated: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modified: api.jackxiang.com/components/WxPay/WxPayApi.php git commit -am"只有这样解决了上面这个Changed but not updated问题" $git commit -am"解决一下Master的:Changed but not updated" 把所有的都给提交了(Dev没有改动,无所谓): git push --all 同理那个Dev分支也是一样的道理: $git checkout master $git status $git commit -am"个人自媒体代码的Dev分支也解决一下Dev分支的问题,给全提交到仓库。" ================================================================================ 从一个分支A切换到另一个分支B后,对切换后的B分支进行pull操作,因为pull操作实际上包含了fetch+merge操作,在执行 merge操作时,由于很长时间没有对B分支执行过pull/merge操作,本地的B分支库与remote中的B分支库中的差异很大(且这些差异是其他 同事开发的文件),merge时产生冲突,使得B分支的状态为merging,其实是指merge失败,还停留在merge状态,也不能执行pull操 作。这时没有解决冲突,而是从B分支上执行checkout/switchto操作,试图再切换其他分支时,报: [plain] view plaincopy在CODE上查看代码片派生到我的代码片 …….java : needs merge …….java : needs merge …….java : needs merge error : you need to resolve your current index first 的错,google了半天,终于在stackoverflow上找到了答案,大题意思是:merge失败,有conflicts没解决,可以: 1、解决conflicts后再次执行merge; 2、回退到merge前 恩,既然merge冲突是其他同事的文件,我不需要去resolve conflicts,那就退回merge前吧,单纯的改我的文件再push吧,执行以下代码: [plain] view plaincopy在CODE上查看代码片派生到我的代码片 git reset --merge 搞定! 顺便贴下stackoverflow上的链接: http://stackoverflow.com/questions/6006737/git-merge-errors 本文参考来自链接:https://www.lbbniu.com/3059.html Generated by Jackxiang's Bo-blog 2.1.1 Release