如何获得被解雇同事的 git 分支

How to get git branch of colleague who was fired

小问题

鉴于我对同一服务器上的另一个 git 存储库具有只读访问权限,我如何才能将该存储库中的特定分支复制到我自己的存储库中?

长篇大论

我和我的同事在同一个开发服务器上编写代码。

我是 user1,我的 git 存储库位于此处:

/home/user1/website

我的同事是 user2,他的 git 存储库位于此处:

/home/user2/website

他在一个名为 hotfix 的分支上工作。

坏消息

他还没来得及将 hotfix 分支推送到我们的远程仓库(托管在别处)就被解雇了。因此,从我的回购协议中,我无法 git checkoutgit fetch 他的 hotfix.

此外,我在他的目录中只有只读权限。如果我 cd 到他在 /home/user2/website 的仓库,当前签出的分支是 master。如果我尝试从他的回购协议中 git checkout hotfix,我会收到此错误消息:

fatal: Unable to create '/home/user2/.git/index.lock': Permission denied

好消息

我有只读权限。虽然我不能git checkout,但我确实可以git showgit loggit diff

所以我的问题是...

鉴于我对我同事的存储库具有只读访问权限,我如何才能将特定分支从他的存储库复制到我的存储库?

有很多方法;这里有两个:

  • 克隆它:

    cd $HOME
    mkdir his
    cd his
    git clone /home/user2/website
    

    现在您有一个完全独立的存储库,它是该存储库的克隆。

  • 将其添加为远程,然后获取:

    git remote add his file:///home/user2/website
    git fetch his
    

    现在您的存储库有 remotes/his/ 个分支,您可以检查、从中挑选、创建本地分支等等。

git remote add 方法适用于网络协议,因此如果您可以访问机器(例如,通过 ssh),即使您在自己的计算机(笔记本电脑)上也可以使用它等)。

请参阅 git clone documentation 中有关使用共享本地文件时注意事项的说明(使用 --local--no-hardlinks--shared)。