我有一个名为master
的分支,我想重置在此分支上进行的所有更改。需要将所有提交从名为origin/d
的分支移动到master
。
所以这就是我所做的(在分支master
上):
git fetch -all
git reset --hard origin/d
git clean -f -d
git push origin master --force
我收到了以下信息:
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
但是我不想拉,我只想将所有提交从分支d
移动到分支master
(忽略分支master
上的所有本地/非本地提交)。
当我提出git pull
时,我有许多冲突,我不想解决。任何人都可以帮助我并告诉我最简单的方法是什么?
答案 0 :(得分:3)
错误消息表明(1)您的服务器不允许强制更新(--force
参数),以及(2)由于某种原因Git想要将m
推送到master
。
要暂时解决第二个问题,您可以这样做:
git push origin m:refs/heads/m --force-with-lease
(最好使用--force-with-lease
而不是--force
,因为前者只会在您的远程跟踪分支是最新的时候覆盖。如果其他人碰巧提交了自上次提交后的提交fetch
ed,然后--force
将覆盖这些,导致工作丢失。)
但是,如果您的服务器禁止强制更新,那么它也可能会拒绝该命令。如果您拥有对服务器的管理员访问权限,那么一个选项就是更改它。否则,要解决此问题,您应该能够删除分支,然后按:
git push origin --delete m
git push origin m:refs/heads/m
如果这不起作用,那么您必须联系您的服务器管理员并要求他们允许您删除分支和/或强制更新它们。
答案 1 :(得分:2)
你提出这个错误是因为你没有来自存储库的最新更改,所以你应该提取它们。
git reset --hard HEAD
git pull --rebase // fetch and pull together
在解决冲突后(如果它们存在),您可以进行推送
git push origin master