【问题标题】:Post-merge hook did not run on fetch origin, checkout remote branch合并后挂钩未在获取源上运行,签出远程分支
【发布时间】:2013-07-26 17:15:39
【问题描述】:

在执行“git fetch origin”以拉入远程分支后添加了我的一位同事,我执行了“git checkout”。

此输出:分支设置为从源跟踪远程分支。切换到新分支“”

我有一个合并后脚本来运行合并到我的本地存储库中的 SQL 脚本。但是,当我运行 git checkout 时,我拉入了一些 SQL 文件并且我的脚本没有运行,这意味着没有完成合并。

如果不合并,它如何将远程分支转移到本地分支上?

提前致谢!

【问题讨论】:

    标签: git hook git-merge githooks git-checkout


    【解决方案1】:

    git fetch 不合并。它不会更新您的工作副本。当您执行 git pull 时,合并是自动的。

    因此,通过获取创建一个新的远程跟踪分支实际上并没有将任何东西合并到您的工作树中,您必须决定现在做什么。

    git merge origin/master 将在 master 的远程源服务器分支中合并到您的工作目录。

    如果您想直接合并到您的工作树,请使用手册页中的git-pull

    更准确地说, git pull 使用给定的参数运行 git fetch 并且 调用 git merge 将检索到的分支头合并到当前 分支。使用 --rebase,它运行 git rebase 而不是 git merge。

    【讨论】:

    • 谢谢迈克尔!我理解这种区别。我的问题是如何在不运行合并的情况下远程分支上的结帐将远程数据复制到我的本地计算机上?
    • 当您结帐时,您正在更改您的工作副本,您没有合并,我认为您混淆了概念,如果您在当前工作副本中没有更改并结帐一个新副本,则工作副本已切换,因为没有任何内容处于更改状态,这似乎很神奇,您的文件已更改,但您只是在一个新分支中。
    • 你有你的工作目录和你的 .git 目录——当你获取你的 .git 目录时,你会更新你的 .git 目录,其中包含有关分支、标签、文件和历史的引用和信息——这不会影响你的工作目录,直到你将一些历史记录合并到您的工作目录中。如果您的工作目录处于稳定状态(全部已提交),则无需执行任何操作即可结帐,看起来您正在更改当前分支,但实际上您只是将当前目录换成新的工作目录。
    猜你喜欢
    • 1970-01-01
    • 2018-12-12
    • 2020-04-04
    • 2011-07-02
    • 2015-08-02
    • 2012-01-02
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    相关资源
    最近更新 更多