【发布时间】:2020-06-02 21:35:03
【问题描述】:
我正在尝试设置一个服务,该服务将在检测到远程分支上的更改时自动更新我的存储库。在任何人提到它之前,我知道在 URL 中嵌入密码是不好的做法。我目前正在使用:
git fetch https://<user>:<pass>@github.com/<org>/<repo>
输出如下:
From https://github.com/<org>/<repo>
* branch development -> FETCH_HEAD
当我在提取后运行git status 时,它没有检测到最近的更改。
如果我运行没有 URL 的普通 git fetch 并手动提供用户名和密码,我会得到不同的输出:
From https://github.com/<org>/<repo>
96353f7..e88782c development -> origin/development
然后运行git status 会按预期工作并检测到远程分支上有更改。
我对 Git 不是很有经验,我觉得我遗漏了一些非常明显的东西。我的错误在哪里?
编辑
所以看起来缺少的部分是我在 URL 之后指定本地和远程分支:
git fetch https://<user>:<pass>@github.com/<org>/<repo> development:origin/development
正如接受的答案指出的那样:如果您不指定远程名称,git 会将远程更改放在默认的 FETCH_HEAD 中。这可以通过明确指定本地和远程分支来解决。
我仍然有点困惑为什么git fetch 知道默认从源远程获取,但是指定 URL 会改变这个默认值。但无论如何它现在都在工作
【问题讨论】:
-
是的,显而易见的是,第一个命令会更新索引,但不会触及您的分支。看看我如何使用它:
# Sync up with the remotes, prune them, and update the local master branch\n echo "Update Remotes"\n git fetch --all --prune\n git fetch $(git config branch.master.remote) master:master\n。在您的情况下,master将替换为development。 -
你说“运行普通的 git fetch”是什么意思?你的意思是
git fetch origin? -
是的,对不起,这就是我的意思。我只是运行
git fetch,但我认为默认情况下会获取源远程
标签: git git-fetch git-status remote-repository