GIT冲突解决
# 一般的代码冲突,我们直接vim改文件来修改
# 当出现文件冲突的时候, 我们希望仅保留某一来源的文件时可以使用如下操作
# 使用origin/master分支强制覆盖到本地
git reset --hard origin/master
# 使用本地数据强制覆盖pull下来的冲突
git reset --hard HEAD
# 将指定文件强制还原到指定版本
git checkout commit_id /path/path
# 将test.log强制还原到stash0
git checkout stash@{0} test.log
# 将test.log强制还原到和master一直
git checkout origin/master test.log
20180409 14:05
今天在使用测试服务器中,遇到了一个代码冲突问题.
起因:
我在一个新的分支lh_updateApp中对交易接口的代码和.po翻译文件进行了修改.
而后在测试服务器上先更新了origin/master,然后pull下来了这个分支.
由此.po文件产生了冲突
其实在正式服务器上,我们是不会出现这种问题的, 因为正式服务器我们都是合到主分支
然后在把主分支pull下来, 这次在测试服务器上,我们通过将不同的分支pull下来,所以才会产生错误冲突
处理过程:
我在发现冲突后, 尝试使用git reset --hard origin/lh_updateApp来强制将本地代码替换.
但是生了错误,而且我想如果在正式服务器上这个干的话也是比较危险的,应该寻求更合理的操作.
git reset --hard 取消了本次pull更新
然后使用fetch origin lh_updateApp代码,然后merge,让代码正常冲突.
通过git status --short 查看冲突的代码
再通过git checkout FETCH_HEAD FilePath 将单个冲突文件,强制覆盖为FETCH_HEAD例的版本.
解决方法:
获取分支代码
git fetch origin lh_updateApp
合并代码
git merge FETCH_HEAD
查看代码状态
git status --short
将单个的冲突文件,覆盖为获取到的新版本里的文件
git checkout FETCH_HEAD conf/lang/zh_TW/LC_MESSAGES/default.po