在 Git 中,我们可以使用命令 git ls-remote [remote] 来现实服务器上有哪些引用。虽然这个命令在日常生活中基本用不到,但是在拉取 合并请求(pull request) 时很有用。

命令详解

git ls-remote [remote]remote 是远程仓库。
你可以借助 引用规范 来简写:

  1. git ls-remote origin

写可以完整的整个 URI :

  1. git ls-remote https://github.com/schacon/blink

该命令会显示远程版本库里所有的分支,标签和其他引用

  1. $ git ls-remote https://github.com/schacon/blink
  2. 10d539600d86723087810ec636870a504f4fee4d HEAD
  3. 10d539600d86723087810ec636870a504f4fee4d refs/heads/master
  4. 6a83107c62950be9453aac297bb0193fd743cd6e refs/pull/1/head
  5. afe83c2d1a70674c9505cc1d8b7d380d5e076ed3 refs/pull/1/merge
  6. 3c8d735ee16296c242be7a9742ebfbc2665adec1 refs/pull/2/head
  7. 15c9f4f80973a2758462ab2066b6ad9fe8dcf03d refs/pull/2/merge
  8. a5a7751a33b7e86c5e9bb07b26001bb17d775d1a refs/pull/4/head
  9. 31a45fc257e8433c8d8804e3e848cf61c9d3166c refs/pull/4/merge
  • refs/pull/<pr#>/head : 该提交记录与合并请求中的最后一个提交记录相同
  • refs/pull/<pr#>/merge : 在网站上点了 “merge” 按钮对应的提交

    拉取方法

    你可以直接抓取该引用: ``` $ git fetch origin refs/pull/1/head From https://github.com/libgit2/libgit2
    • branch refs/pull/958/head -> FETCH_HEAD
  1. 也可以修改 `.git/config` 文件中来一键拉取:<br />_.git/config_

[remote “origin”] url = https://github.com/libgit2/libgit2.git fetch = +refs/heads/:refs/remotes/origin/ fetch = +refs/pull//head:refs/remotes/origin/pr/ <== 添加这一行

  1. 然后直接拉取:

$ git fetch

  • [new ref] refs/pull/1/head -> origin/pr/1
  • [new ref] refs/pull/2/head -> origin/pr/2
  • [new ref] refs/pull/4/head -> origin/pr/4

```