【问题标题】:Get Commit-Hash of specific file/folder from remote git-repo从远程 git-repo 获取特定文件/文件夹的 Commit-Hash
【发布时间】:2021-05-05 08:55:46
【问题描述】:

目前我们使用git log --pretty=tformat:"%H" -n 1 folder/file 来检索当前签出分支中文件的最新提交哈希。但这需要在本地克隆 git repo。

有没有办法确定远程 git repo 上特定分支中特定文件的提交哈希?

我需要一个普通的 git 命令,而不是像 git 或 gitlab 这样的 git 接口的命令。

【问题讨论】:

  • 只是为了确保清楚:“文件的提交哈希”是指在特定分支上更改该文件的最新提交吗?当您说“远程 git repo”时,您是在寻找无需克隆即可运行的普通 git 命令,还是在 git 接口(如 Github 或 Gitlab)上的东西?
  • 是的,该文件的最新提交,它必须是一个 git 命令。
  • @Uzlopak:“该文件的最新提交”不一定与“更改文件的最新提交”相同。事实上,除非文件被删除,否则即使分支的最新提交也会包含该文件。
  • @JoachimSauer 最近的提交更改了文件/文件夹。

标签: git


【解决方案1】:

有没有办法确定远程 git repo 上特定分支中特定文件的提交哈希?

不完全是,不。您只能使用本地存在的提交来执行此操作,并且没有保证 他们 拥有的任何提交,您也拥有。所以这里其实有两个问题:

  • 首先,您需要确定他们用于他们的分支名称的哈希ID。

  • 然后,完成上述操作后,您需要确保拥有该提交及其前身。

然后,您可以使用本地操作在本地查找您关心的文件最近更改的本地提交,就像您已经在执行此操作一样。但是您需要先同时达到这两个要点。 that 的方法是在本地拥有存储库,将另一个 Git 添加为 remote,然后将 git fetch 运行到该远程,以便您获得 与其分支名称相对应的远程跟踪名称

例如,假设他们的 Git 存储库的 URL 是 $url。然后你可以使用:

git remote add them $url
git fetch them

随后对以下内容进行了微小的修改:

git log --pretty=tformat:"%H" -n 1 folder/file

只需在路径名前添加them/branchname(并且,为了一般安全,在路径名前添加--):

git log --pretty=tformat:"%H" -n 1 them/branchname -- folder/file

请注意,您只需要使用git remote add 一次,但您需要在任何扫描之前运行git fetch them,以获取他们拥有的任何新提交并获取他们的更新值branchname 到你的them/branchname

(您可以选择使用git fetch them branchname,这有时会节省一点时间。)

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2016-03-05
    • 2017-01-05
    • 2015-09-12
    • 2011-06-04
    • 2013-08-08
    相关资源
    最近更新 更多