反转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脚本应该相对比较简单。
上一篇: reverse a git fetch