即使遥控已被拉扯,Git也会抱怨非快进

Dre*_*kes 4 git dvcs git-push

我正在尝试将我的更改推送到我的NAS上的回购.它以我不理解的方式失败了.

文档指出默认情况下push仅适用于快进更新.很公平.所以我做了一个git pull(我的遥控器叫rubix):

D:\RoboCup\Dev\TinMan>git pull rubix master
From ssh://rubix/volume1/git/TinMan
 * branch            master     -> FETCH_HEAD
Already up-to-date.

一切顺利.我们试着推......

D:\RoboCup\Dev\TinMan>git push rubix master
To ssh://dnoakes@rubix/volume1/git/TinMan
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://dnoakes@rubix/volume1/git/TinMan'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

我已经阅读了文档,git push但此时我无法理解为什么我会看到这个问题.

这是一些其他的上下文信息:

D:\RoboCup\Dev\TinMan>git --version
git version 1.7.0.2.msysgit.0

D:\RoboCup\Dev\TinMan>git branch
* (no branch)
  master

最后一行看起来很可疑.我怎么能不在任何一个分支?另请注意,我有一些未跟踪的文件和修改(未分级)更改.

任何帮助将不胜感激.谢谢.

Bla*_*lor 5

这是一种同步的方法.

首先,提交任何更改,然后使用它git log来记录您想要推送的任何提交.

接下来重置主设备以匹配遥控器,如下所示:

git checkout master
git reset --hard remotes/rubix/master 
Run Code Online (Sandbox Code Playgroud)

最后,樱桃挑选你想要保留的提交

例:

git cherry-pick 111aaa111
git cherry-pick 123abc123
Run Code Online (Sandbox Code Playgroud)

现在推动应该工作.

git push rubix master
Run Code Online (Sandbox Code Playgroud)