Git Giving"取得第一个"尝试推送时出错

时间:2014-09-16 06:51:17

标签: git push fetch

我正在通过我正在上课的git首次介绍git。我的计算机上的目录中有许多文件,并且能够毫无问题地暂存和提交它们。但是,当我尝试将文件推送到我的github存储库时,我继续收到此消息:

Pushing to https://github.com/BigMeanCat/CMDA
To https://github.com/BigMeanCat/CMDA
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/BigMeanCat/CMDA'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

有人可以帮我解决这个问题以及如何解决这个问题吗?我在网上看到过一些有类似问题的人,但我对git并不熟悉,还不熟悉git的命令行语言。我对采取某些建议有点犹豫,因为我不知道它是否会解决问题或使情况变得更糟。

谢谢!

11 个答案:

答案 0 :(得分:14)

其他人(或其他某台机器上的人)已将变更集推送到远程存储库。你,在你的本地机器上还没有那些变化。所以要解决这个问题,你首先必须

git pull

然后

git push

但是,当您在工作树中进行更改时,您将无法git pull,因此在拉/推之前,首先必须commitstash进行本地更改。如果远程更改与您的本地更改重叠,这可能会导致合并情况。

答案 1 :(得分:13)

我犯了同样的错误,然后我用二手" - force"解决了这个话题。命令。简而言之,写下这个命令;

git push origin master --force

注意:可能您之前尝试过一次又一次地推送您的代码,这就是您犯这个错误的原因。我的解决方案强制覆盖您的变更集。通过这种方法,您的存储库可能会导致其他人不匹配。但如果你独自工作(而不是像工作小组一样),那么你可以轻松地使用" - 强迫"正如我上面提到的那样。

答案 2 :(得分:5)

  

您可以通过命令解决问题。

git push origin master --force

答案 3 :(得分:2)

这意味着有人将工作推送到远程存储库,将其与您可以运行的工作合并git pull --rebase,然后将您的组合工作推回到远程存储库。

答案 4 :(得分:2)

git pull 是个不错的选择

但是:  如果问题仍然存在, git push origin master --force 命令最终会有所帮助

答案 5 :(得分:1)

@tunacy说得很好。

某人已经提交了存储库,所以你只需要做

func dump(success: (() -> Void)? = nil, failure: (()->Void)? = nil) {
    HIDDevice.sharedInstance.sendCommad(command: "dump")

    let timeoutResult = BusyLoop(timeout: .seconds(1)) { BreakLoop in
        for data in HIDDevice.sharedInstance.readBuf {
            switch data {
                case "dumpcomplete":
                    success?()
                    BreakLoop()
                default: BreakLoop() //handle other cases
            }
        }
    }

    switch timeoutResult {
    case .success:
        print("Finished on time")
        success?()
    case .timedOut:
        print("Timed out")
        failure?()
    }
}

git pull

就是这样 你也可以用

git push 

用于合并

答案 6 :(得分:1)

我有同样的问题。 我向朋友求助,他只是将粘贴复制到主存储库并在下面写下了命令: git远程显示来源 git add。 git commit -m"包括主存储库中的project2" git push -u origin master

最后,我在两个不同项目的主存储库中获得了两个贴纸。

答案 7 :(得分:0)

当你开始使用git时,你可能会看一下文档:http://git-scm.com/doc。 根据您的描述,我了解到,您现有的存储库中包含与其他同学共享的文件。因此,您需要先拉出整个项目(包含所有文件)。在本地存储库上拥有项目的最新版本,您可以将提交更改推送到存储库。

答案 8 :(得分:0)

在错误的目录中打开terminal / GitBash时遇到此错误。实际上在存储库文件夹之外。检查您的位置是否正确。

答案 9 :(得分:0)

! [rejected] master -> master (fetch first)'
采用: $ git pull
然后: $ git push
替代解决方案: $ git push --force origin master,但这将导致删除github存储库中的文件,因此最好选择第一个文件,它将文件首先拉至本地存储库,然后再进行工作。

答案 10 :(得分:0)

请按照下面给出的步骤进行操作,因为我也遇到了同样的问题:

$ git pull origin master --allow-unrelated-histories

(查看本地分支是否可以轻松地与远程分支合并)

$ git push -u origin master

(现在将本地git存储库的所有内容推送到您的在线存储库中)