3

40 以上のリポジトリのそれぞれにコードをコミットまたはプッシュするのを忘れた場合にリマインダーをメールで送信するスクリプトがあります。

2 つのプロジェクトで、複数のリポジトリにプッシュするように「git-push」をセットアップしたこれらの投稿の回答に従いました。

複数の遠隔地からのプル/プッシュ

複数のリポジトリに同時に git push する

だから私は .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にかなり慣れていません。

4

1 に答える 1

0

このメソッドは、各リモートのコミット参照を記憶しているように見えるため、おそらく少しバグがあると思いますが、プッシュ/プルを実行すると更新されません...したがって、差分を介してチェックするときは、常に比較のための古いコミット参照。

このセットアップの解決策ではありませんが、1 つのリモート セットアップに戻りましたが、2 つの URL を持つように編集しました...そのため、プルは 1 つのリモートからのみ発生しますが、プッシュすると 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

注: これは、私が唯一のコミッターであるため、現時点では機能します。

于 2012-08-13T09:30:37.017 に答える