我有一个叫appsec/master的远程跟踪分支,我想把它设置为HEAD。我通常使用git branch -f <branch> <commit>设置一个本地分支,但是执行branch branch -f appsec/master HEAD会导致创建一个新的本地分支appsec/master。
如何在执行git push -f -u <upstream> <branch>之前显式地设置远程跟踪分支?
(master %<>)$ git log --graph --oneline --decorate --all -n 25
* 211e9d7 (HEAD -> master) Working version of scanner
| * c5a9ec4 (appsec/master) Added regex.json
|/
...NB:我知道这个问题有点复杂,因为我不应该手工执行git push -f或修改远程跟踪分支,但是在本例中,我使用自己的存储库而没有着色对等点。
发布于 2020-07-17 09:39:07
您不能“设置”远程跟踪分支,它们是您上次检查时从远程获取的设计图像。
但是,您可以在本地分支上设置任何ref,然后强制将其推到远程。然后,简单地从它获取将更新您的远程跟踪分支。
发布于 2020-07-17 11:34:35
本地机器上的远程分支也被表示,但默认情况下它们是隐藏的。您可以在git branch --all中看到它们的列表。因此,即使您没有internet连接,也可以合并远程分支(本地缓存的分支)。因此,您可以简单地运行git push --force appsec master。然后运行git fetch以接收从服务器到本地远程分支的所有更改。见git远程分支。
发布于 2022-08-26 13:20:33
通过使用git update-ref,您可以在不受任何推拉的情况下完成这一任务。
git update-ref refs/remotes/REMOTE_NAME/BRANCH_NAME NEW_COMMIT OLD_COMMITgit update-ref将为您验证ORIGIN_NAME/BRANCH_NAME在将其更新为NEW_COMMIT之前确实指向了OLD_COMMIT。如果不希望进行此验证,可以省略OLD_COMMIT。
在这个问题上,它将是git update-ref refs/remotes/appsec/master HEAD。
您可以使用git show-ref列出所有参考文献。
https://stackoverflow.com/questions/62951030
复制相似问题