git强制pull,git更新报错怎么办,git指令

git强制拉取远端代码的指令

今天维护一个比较久没有更新的系统时候,在发布到测试环境的时候出现一个问题,测试环境发布都是用git指令:

git pull origin 分支名  

由于这台机器太久没有更新了,出现了报错:

error: Untracked working tree file 'vendor/autoload.php' would be overwritten by merge.  Aborting

瞬间慌了~~~这可如何是好!查看一下log:

git log -3

差了N个版本,我不可能真的去merge吧~~~门都没有
查了一下git资料,终于解决问题了:
以下是强制更新分支的指令:

git fetch --all 
git reset --hard origin/master
git pull origin 分支名 

顺利发布了~~~趁着产品体验的功夫记录一下,

git发布代码指令

还有时间~~

如果需要查阅其他详细的指令,参考阮一峰老师的文章:常用 Git 命令清单
如果需要深入了解git原理,参考另一位大神的文章:Git深度解析

一直都是用工具发布代码,用工具管理项目分支,真正全git指令用得很少,到这里测试环境要自己发
那复习一下常用git指令吧:

首先有一个意识,基本你操作的都是你本地的分支,和远程的分支没啥关系,一般的指令随便搞没关系,删了也没事,再拉一下就好了,别删远程的分支就行了,不过我估计你也不知道删除远程分支的指令,所以不用担心,哈哈,随便搞,等你熟练了,指令里面带有origin的再小心一点吧

进入项目目录
首先要知道自己在什么分支

git branch

前面有个星号的就是你所在的分支
如果不是你的分支怎么办

git checkout -b 分支名

啥?你不知道分支名或者太长你打不出来

git remote show origin

找到自己分支名再执行上面的checkout吧
你以为分支对了就行了??看看分支提交的记录先吧

git log -3 

后面的数字是显示最新的几条更新日志
如果是最新的当然没问题,如果不是最新的怎么办
一种是

git fetch

这种不太稳妥,有合并相关的不能更新
稳妥的方式

git pull origin 分支名

这个时候就是最新的了
如果不确定再git log确认一下
如果失败了,那就执行最上面的强制pull,到这里啥问题都解决了
如果你想只输出当前的分支名(如果你想写一些关于git自动操作的脚本,也许会用到),执行如下:

git name-rev --name-only HEAD  //查看git当前分支
git remote -v                  //查看git拉取地址

以上是git发布代码的时候需要用到的指令

至于git commit git add git push这些现在还都是用工具在操作,
有需要的时候再更新吧

再更新两个很有用的指令:

在代码review的时候,想找出自己修改的那部分代码,一般用phpstorm的compare with branch操作,但是如果是别人修改的合并到你的分支,也会算到里面,不方便区分,这里有个执行很高效:

git whatchanged --since="2019-07-07" --author="author" --no-commit-id --name-only | sort | uniq

立马会列出从某个日期起,你在这个分支上的修改内容,当然还有另外一种写法,用 git diff --stat

git diff master --stat --name-only | sort  默认当前分支 
git diff ‘your branch’ master --stat --name-only | sort 或者指定分支对比
注意先将master分支合并到该分支

另外一个是从你本地合并master的时候,需要merge,但是你此时不想merge,想要取消这次merge,不然你只能待在这个分支,切不到其他分支了,这里有个指令可以直接取消这次的merge

git merge --abort

如果你此时不想合并merge,又想切到其他的分支上,试试这个指令吧

你可能感兴趣的:(git)