3

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

在我的两个项目中,我遵循了这些帖子中的答案,在那里我设置了“git-push”来推送到多个存储库:

从多个远程位置拉/推

git 同时推送到多个仓库

所以我有一个 .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 push/pull 时效果很好。

使用我使用的脚本:

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 相当陌生。

4

1 回答 1

0

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

虽然它不是此设置的解决方案,但我已经回到了单个远程设置,但对其进行了编辑,使其具有 2 个 url……因此,虽然仅从一个远程进行拉取,但当我推送时,它变为两个:

[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

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

于 2012-08-13T09:30:37.017 回答