【问题标题】:Git making files in one branch same as anotherGit在一个分支中制作文件与另一个相同
【发布时间】:2017-01-06 23:22:00
【问题描述】:

当我想将更改推送到我的远程接受环境中时,我想让我的测试分支与 git 中的 master 相同,然后再从新的 dev 分支中合并文件。

让“测试”分支成为 master 的快照并合并来自新分支的更改的最简单方法是什么?

【问题讨论】:

    标签: git merge git-branch git-merge git-reset


    【解决方案1】:

    如果您的更改在 test 中并且您想更新您的本地 master,只需签出 master,然后执行 git merge test

    【讨论】:

    • 其实改动的是newbranch。我想要做的是将 test 更新为与 master 完全相同,并将 newbranch 的更改合并到 test 中。我尝试使用多种技术来做到这一点,但我无法让它发挥作用。
    • 你能解释一下你到底尝试了什么吗?分支之间的关系是什么?
    • 对于第一部分,让 test 成为 master 的副本,我这样做了:git fetch --allgit reset --hard origin/mastergit reset --soft origin/testgit addgit commit -m "blah"git push。对于合并更改的第二部分,我做了git checkout testgit merge newbranch,它说“已经是最新的”,但是如果我这样做git diff --name-status test..newbranch --,它会显示我想要合并的所有更改!跨度>
    • 我必须考虑一下您的流程。无论如何,请阅读that。我还不确定,但我认为reset 部分解释了你所看到的(?)。
    【解决方案2】:

    如果当前(或旧)提交 test 对您(或其他任何人)来说并不重要。

    你可以这样做

    $ git checkout test
    $ git reset --hard master
    $ # In case your local master is not up-to-date use origin/master
    

    这会将test 的指针移动到master 指向的当前提交。

    【讨论】:

    • 我确实做了类似的事情,还有更多......对于第一部分,让测试成为主人的副本,我这样做了:git fetch --allgit reset --hard origin/mastergit reset --soft origin/testgit add@ 987654329@git push。对于合并更改的第二部分,我做了git checkout testgit merge newbranch,它说“已经是最新的”,但如果我这样做git diff --name-status test..newbranch --,它会显示我想要合并的所有更改!跨度>
    • 我认为git reset 是一个非常危险的命令,因为它确实会删除内容。在大多数情况下,我会尽量避免使用此命令:我仅在我确定要删除更改的文件基础上使用它。
    • 您说“我想让我的测试分支与 master 相同”。我认为这意味着放弃在 test 中所做的更改。
    • @Tim Thomas:@AnimiVulpis 的上述解释是否正确?您想删除工作以获得另一个状态吗?如上所述,reset 删除了工作,我认为这会导致您的结果。为什么你必须reset? (你的想法是什么?)
    • 是的,实际上我想在合并到 newbranch 之前销毁测试并从 master 的副本开始。我实际上尝试过-我删除了测试分支并从master创建了一个新分支,但这也不起作用-当我执行git merge newbranch时,它说“已经是最新的”,但是如果我执行差异@987654339 @它表明存在差异,但在执行git merge newbranch时不会识别它们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2020-07-12
    • 2011-05-27
    • 2017-02-21
    • 2020-10-23
    相关资源
    最近更新 更多