'git代码冲突解决办法'

Your local changes to the following files would be overwritten by merge
error: Your local changes to the following files would be overwritten by merge:

protected/config/main.php

Please, commit your changes or stash them before you can merge.

参考http://blog.csdn.net/zwhfyy/article/details/8625228

如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:

git stash
git pull
git stash pop
然后可以使用git diff -w +文件名 来确认代码自动合并的情况.

git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
基础命令:
$git stash
$do some work
$git stash pop

进阶:
Git stash save “work in progress for foo feature”
当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,

’git stash list’ 命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清空。

git stash # save uncommitted changes

pull, edit, etc.

git stash list # list stashed changes in this git
git show stash@{0} # see the last stash
git stash pop # apply last stash and remove it from the list

git stash –help # for more info
反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:

git reset –hard
git pull
其中git reset是针对版本,如果想针对文件回退本地修改,使用

untracked working tree file
参考:http://blog.csdn.net/sheismylife/article/details/7204345
编写脚本自动编译并部署时的注意

如果想在C2上编写脚本自动从S1上获取最新代码时,要注意:

1.首先之前产生的公钥不能设密码,否则每次git pull的时候都会要求输入密码。

2.不要将项目中的编译中间文件提交到S1上,比如CMake工程里面的build目录的文件,Maven工程里面的target目录里面的文件。否则下次在C2等客户端用git pull会报类似于这样的错误:

error: Untracked working tree file ‘public/images/icon.gif’ would be overwritten by merge.
需要执行下面的命令才能修复:

git reset –hard HEAD
git clean -f -d
git pull

坚持原创技术分享,您的支持将鼓励我继续创作!