2012-07-27 77 views
3

我有一個腳本,如果我忘記在我的每個40+存儲庫上提交或推送一些代碼,則會通過電子郵件向我發送提醒信息。關於多個遠程存儲庫的Git狀態

隨着我的項目2個,我遵循了這些帖子,在那裏我有建立「混帳推」推到多個信息庫的答案:

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 = [email protected]:username/project.git 
[remote "example"] 
    url = https://www.example.com/git/project/ 
    fetch = +refs/heads/*:refs/remotes/example/* 
[remote "github"] 
    url = [email protected]:username/project.git 
    fetch = +refs/heads/*:refs/remotes/github/* 

這對於做git push/pull有效。

隨着我已經使用這個腳本:

git status --short 

但是這隻能說明未COMMITED變化......即使沒有「--short」標誌,它並沒有顯示什麼,通常只有1個遠程顯示:

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

試圖運行下列任何「差異」也似乎並沒有命令工作...好它的第一次,但似乎記得遠程文件的日期/時間當它被設置時,爲了做出更多的改變,它將它們與歷史上的該版本進行比較:

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

有什麼想法?我對Git相當陌生。

+0

你的意思是什麼?當你做出更多的改變時,將它與歷史版本進行比較?當然它會比較你當前的承諾版本。而且,由於您推送到遙控器,因此不會顯示任何差異(遙控器和HEAD指向相同的提交),除非您有未提交的更改。 – knittl 2012-07-27 09:10:24

+1

你確定你不會忘記不時地運行'git fetch --all'嗎? – fork0 2012-07-27 09:26:31

+0

@knittl,@ fork0我已經完成了'git fetch --all'(沒有文件被拉回來)......當我運行'git diff --name-status「origin時它仍然說我修改了文件,即使在這種情況下,我已經提交併推送了所有更改...似乎是說這些文件與文件不同,因爲它們是當我第一次配置這些多個遠程(基本上這些文件被修改相比,遠程服務器上個月有)。 – 2012-07-27 10:41:26

回答

0

我相信這種方法可能有點錯誤,因爲它似乎記住了每個遠程的提交參考,但是在執行推/拉時不會更新......所以當通過差異檢查時,它總是去看舊的提交參考進行比較。

雖然它不是解決這個設置,我已經回到了一個單一的遠程設置,但編輯它,使它有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 = [email protected]:username/project.git 

注意:這隻適用於現在,因爲我是唯一的提交者。