关于多个远程存储库的Git状态

时间:2012-07-27 08:59:37

标签: git github

我有一个脚本,如果我忘记在我的40多个存储库中提交或推送一些代码,我会通过电子邮件向我发送提醒。

在我的两个项目中,我已经按照这些帖子中的答案进行了操作,我已经设置了“git-push”以推送到多个存储库:

  

pull/push from multiple remote locations

     

git push to multiple repositories simultaneously

所以我有一个.git / config文件:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
    remote = origin
    merge = refs/heads/master
[remote "origin"]
    url = https://www.example.com/git/project/
    url = git@github.com:username/project.git
[remote "example"]
    url = https://www.example.com/git/project/
    fetch = +refs/heads/*:refs/remotes/example/*
[remote "github"]
    url = git@github.com:username/project.git
    fetch = +refs/heads/*:refs/remotes/github/*

在进行git推/拉时,这很有效。

使用我使用过的脚本:

git status --short

但这仅显示未提交的更改...即使没有“--short”标志,它也不显示通常仅显示1个遥控器的内容:

Your branch is ahead of 'origin/master' by 1 commit.

尝试运行以下任何“diff”命令似乎也不起作用......它是第一次执行,但它似乎记住了设置日期/时间的远程文件,因此,当您进行更多更改时,会将它们与历史记录中的该版本进行比较:

git diff --name-status "origin";
git diff --name-status "origin/master";
git diff --name-status "example/master";
git diff --name-status "github/master";

有什么想法?我是Git的新手。

1 个答案:

答案 0 :(得分:0)

我相信这个方法可能有点儿麻烦,因为它似乎记得每个遥控器的提交参考,但是当进行推/拉时这不会得到更新...所以当通过差异检查时,它总是会去查看旧的commit ref以进行比较。

虽然它不是这个设置的解决方案,但我已经回到单个远程设置,但编辑它以便它有2个网址...所以虽然拉动只发生在一个遥控器上,当我推动时,它会去到两点:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
    remote = origin
    merge = refs/heads/master
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = https://www.example.com/git/project/
    url = git@github.com:username/project.git

注意:这只适用于现在,因为我是唯一的提交者。