git新手:git推送错误

git新手:git推送错误,git,merge,git-merge,Git,Merge,Git Merge,我是GIT新手,在尝试了很多东西后发布了这篇文章 问题很简单:我在master中有一个文件名为“a”,在其他分支名为“test”中也有。在这两个文件中都有更改,我必须合并这些更改 我知道之前有太多的帖子,社区可以指导我,但我有一个具体的问题,我无法解决: 以下是我尝试过的东西 我当前的分支是分支“test”,本地系统上的文件(在git目录中)显示了来自该分支的更改。现在我必须合并来自master的更改,所以我使用git checkout命令切换到master 然后,使用git pull orig

我是GIT新手,在尝试了很多东西后发布了这篇文章

问题很简单:我在master中有一个文件名为“a”,在其他分支名为“test”中也有。在这两个文件中都有更改,我必须合并这些更改

我知道之前有太多的帖子,社区可以指导我,但我有一个具体的问题,我无法解决:

以下是我尝试过的东西

  • 我当前的分支是分支“test”,本地系统上的文件(在git目录中)显示了来自该分支的更改。现在我必须合并来自master的更改,所以我使用git checkout命令切换到master
  • 然后,使用git pull origin master和git merge test,因为我必须将更改从master合并到“test”分支。尝试时,这两个命令都显示文件“A”中存在冲突(例如错误:由于未合并的文件而无法合并。自动合并失败等)
  • 然后,搜索这些错误,许多帖子建议我必须使用kdiff等工具手动合并文件
  • 现在我的问题来了:

    我可以轻松地复制主分支中Github(存储库)中的更改,并在git本地存储库中更新文件(其版本为分支“test”)。我的问题是:git如何知道合并已经完成?我甚至这样做了,并再次运行命令“gitpushoriginmaster”,但很容易理解,它并没有说,当前分支的尖端已经落后了。。。。等等

    我甚至认为,由于我的本地git存储库现在已经更新了,最终的更改(在手动复制更改之后)让我使用git push-f origin master进行强制更新(我知道,这不应该是合并这些更改的首选方式)。虽然该命令运行良好,但执行“git checkout master”会引发另一个错误,即文件“A”需要合并-您需要首先解析当前索引

    这让我想到Git不知道合并已经发生,这让我想到了Git知道我已经手动合并了更改的相同点

    另一件事是关于同一个问题,我不知何故知道,我必须将本地Git存储库(属于分支测试)中的文件A与其主存储库中的版本进行比较。 问题:如何在本地同时获取这两个文件以进行比较

    我知道应该以某种方式进行合并,以便GIT也知道合并已经完成,并且本地机器中存在的文件已经更新了合并的更改,并准备好推送到master

    我知道这可能是我错过的一件愚蠢的事情,但经过大量的搜索,我真的找不到任何东西

    ==============================================

    编辑:根据少数成员的要求添加实际命令。。谢谢

    2000@LTDLUK3400MINGW64/d/GitAll/LearnGit(新GitBranch)
    $git签出主机
    切换到“主”分支
    您的分支比“原始/主分支”早1个提交。
    (使用“git push”发布本地提交)
     
    2000@LTDLUK3400MINGW64/d/GitAll/LearnGit(硕士)
    $git拉原点主控
    远程:计数对象:3,完成。
    远程:压缩对象:100%(2/2),完成。
    远程:共3个(增量0),重复使用0个(增量0),包重复使用0个
    拆包对象:100%(3/3),完成。
    从…起https://github.com/apexkeen/LearnGit
    *分支主控->取头
    8682a7a..bed8390主控->原点/主控
    自动合并自述文件.txt
    冲突(内容):在Readme.txt中合并冲突
    自动合并失败;修复冲突,然后提交结果。
     
    2000@LTDLUK3400MINGW64/d/GitAll/LearnGit(主合并)
    $git合并新GitBranch
    错误:无法合并,因为您有未合并的文件。
    提示:在工作树中修复它们,然后使用“git add/rm”
    提示:根据需要标记解析并进行提交。
    致命:由于未解决的冲突而退出。
     
    2000@LTDLUK3400MINGW64/d/GitAll/LearnGit(主合并)
    $git config--全局--编辑
     
     
    2000@LTDLUK3400MINGW64/d/GitAll/LearnGit(主合并)
    $git推送原始主机
    到https://github.com/apexkeen/LearnGit.git
    ! [已拒绝]主机->主机(非快进)
    错误:无法将某些引用推送到'https://github.com/apexkeen/LearnGit.git'
    提示:更新被拒绝,因为当前分支的提示已过期
    提示:它的远程对应项。集成远程更改(例如。
    提示:“git pull…”),然后再推。
    提示:有关详细信息,请参阅“git push--help”中的“关于快进的说明”。
     
    2000@LTDLUK3400MINGW64/d/GitAll/LearnGit(主合并)
    $git push-f原始主机
    总计0(增量0),重复使用0(增量0)
    到https://github.com/apexkeen/LearnGit.git
    +bed8390…674678e主机->主机(强制更新)
     
    2000@LTDLUK3400MINGW64/d/GitAll/LearnGit(主合并)
    $git签出主机
    Readme.txt:需要合并
    错误:您需要先解析当前索引
  • 在测试分支中提交代码
  • 签出到master并执行git pull origin master,确保您的master在存储库中是最新的
  • 签出以测试分支并重新设置基址
  • git rebase master,如果它完成时没有任何冲突,那么您最好去手动解决特定文件中的冲突
  • 解决冲突后,git是否重新设置基址--是否继续
  • 然后再做git add.&git提交
  • 您现在已全部设置完毕,您将拥有来自主分支和测试分支的所有更改
  • 在测试分支中提交代码
  • 签出到master并执行git pull origin master,确保您的master在存储库中是最新的
  • 签出以测试分支并重新设置基址
  • git rebase master,如果它完成时没有任何冲突,那么您最好去手动解决特定文件中的冲突
  • 解决冲突后,git是否重新设置基址--是否继续
  • 然后再做git add.&git提交
  • 您现在已全部设置完毕,您将拥有来自主分支和测试分支的所有更改

  • 您需要在以下情况下解决冲突:
    2000@LTDLUK3400 MINGW64 /d/GitAll/LearnGit (master)
    $ git pull origin master
    remote: Counting objects: 3, done.
    remote: Compressing objects: 100% (2/2), done.
    remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (3/3), done.
    From https://github.com/apexkeen/LearnGit
    * branch master -> FETCH_HEAD
    8682a7a..bed8390 master -> origin/master
    Auto-merging Readme.txt
    CONFLICT (content): Merge conflict in Readme.txt
    Automatic merge failed; fix conflicts and then commit the result.