反转git fetch

我对git有一个透彻的理解,以及pull,fetch和merge之间的区别。 我有一个遥控器,我偶尔跟踪,抓取和合并,让它说是原点/主控。 我想要做的是扭转'git fetch'的行为。 这听起来很愚蠢,但我想取消更新我的远程跟踪分支指向的位置,更新为旧状态,即最后一次获取之前的状态。 这可能吗?

例如,可以说这是我的工作流程...

git show origin/master # shows commit abc123

git fetch              # yay i got something!

git show origin/master # shows commit def456

神秘命令到此为止......

git show origin/master # shows commit abc123

这是一种奇怪的想要的,但我有一个crontab监视一个git repo来检测什么时候可以获取,并且我在调试脚本时遇到问题,该脚本根据此行为执行一些操作。 我不想等待origin / master改变,我想自己改变它,这样我可以调试我的脚本!


你要

git update-ref refs/remotes/origin/master refs/remotes/origin/master@{1}

update-ref想要更新它的ref,因为它比尊重ref-naming约定的命令低很多。


我不确定是否有一个真正的git命令来做到这一点,这是一个很大的黑客,但...

echo $OLD_COMMIT > .git/refs/remotes/origin/master

应该管用


这不是一个“反转git fetch”的答案,但看起来您的实际问题是如何以编程方式“观察变更回购”,而不必以任何方式更改您的存储库。

为此,你可以使用git fetch --dry-run 。 干运行不会导致您的存储库发生任何更改,但如果远程存在更改,则它将具有一些基本的终端输出; 如果没有变化,则不会有任何输出。 如果您希望将其作为自动化脚本运行而不是手动检查,那么创建一个测试git fetch --dry-run进行输出的简单bash脚本应该相对比较简单。

链接地址: http://www.djcxy.com/p/23169.html

上一篇: reverse a git fetch

下一篇: Merge code between two dfferent git repositories