Bash脚本:Git获取无法获取远程分支的最新更新



我正在编写一个用于自动git交互的bash脚本。问题是,一旦我运行了修改后的脚本,我就可以正确地推送,但在下一次运行时,git fetch不会向我显示我使用该脚本进行的最新提交(在远程分支上(。

我可以在我们的repo(gitlab(上看到我对脚本的更改提交,但如果我再次使用其他提交运行脚本,在获取部分,我不会看到任何引用更新

branch            HEAD       -> FETCH_HEAD

如果我检查手动执行git fetch origin command,它会正确更新refs,但git fetch ${_gitUrl}不会更新远程的refs。我使用构建的gitUrl是因为我不想要uName和密码提示,也不想在这里使用ssh。

如何将git fetch与https url一起使用来可靠地更新远程引用?请帮忙。

我的数字推送是:git push ${_gitUrl} "${_branchToPush}:${branchName}"

我的数字提取是:git fetch --prune "${_gitUrl}"

我也试过git fetch "${_gitUrl}"

我的gitUrl是:https://uName:pwd@repo/project.git

我的git config --get remote.origin.fetch+refs/heads/*:refs/remotes/origin/*

提取后检查HEAD:git log origin/${branchName}

如何使用git fetch和https url来可靠地更新远程引用?

哪些远程引用?你似乎认为git fetch/pull/push "${_gitUrl}"使git将URL匹配回远程名称?不,git不这么做。

一个原因是效率。为什么要花时间将URL映射到远程设备?

另一个原因是不明确。如果有多个遥控器具有相同的URL,该怎么办?Git允许这样做。在这种情况下,应该将URL映射到哪个远程Git?

所以不,Git不这么做。自己命名遥控器。

我找到了一个解决方案。正如@phd指出的那样,git不会将url映射到remotes,这意味着在git fetch ${_gitUrl}上不会更新我的remotes(我假设origin/*(将被更新。为了实现这一点,我将远程名称(原点(映射为url:

git remote set-url origin ${_gitUrl}
git fetch ${_gitUrl}

这是正确地从url获取远程。我不知道这是否是最好的解决方案,因为现在密码存储在url中,并且在git config --list上可见。

最新更新