2012-09-30 30 views
1

如果我在分支「x」並試圖從分支「y」拉出,如何讓git向我發出警告?如果從不同分支拉出git會收到警告

舉個例子;

考慮到我目前的本地工作分支是x,我發出:

git pull origin y 

在這一點上我想混帳發出警告類似「你是獲取和合並不同的分支到當前分支。你是否想繼續?(y/n)「

這可能嗎?可能有一些配置選項?

我知道如何恢復這個錯誤,但是我寧願在做這樣的錯誤之前提醒我。

回答

1

如果你當前的分支已經成立track an upstream branch(如git branch --set-upstream test origin/test),你只需要:

git pull origin 

(避免錯誤的可能性)

注:根據您的git版本,這也會對您的推送操作產生影響:請參閱「Difference between git checkout --track origin/branch and git checkout -b branch origin/branch」。

所以要準確回答你的問題:沒有內置的方式來獲得與GIT的警告。
您可以對rizwaniqbalanswer(upvoted)推薦的掛鉤腳本進行版本化,但每個用戶都必須在自己的回購庫中聲明掛鉤。

+0

關於該主題也很有趣的解決方案:http://superuser.com/a/274426/141。我沒有看到任何可能性,但通過git pull的別名除外。 – VonC

+0

感謝您的回答,我認爲--set-upstream會減少出錯的機率。問題是我需要在我的團隊中強制實施這種行爲,但並不總能確定人們會遵從建議。然而,由於這實際上並沒有以真正的質量保證精神回答我不接受答案的問題。 –

+0

@PritamBarhate好的,我編輯了我的答案,準確地回答你的問題。 – VonC

2

不可能在拉取請求前停止git處理並接受用戶輸入。我的意思是,這是可能的,但爲此你必須對git進行一些更改並從源代碼構建它。我不會走這條道路。

git鉤子中有一個漂亮的小技巧來使用條件語句。你可以在git鉤子中使用Ruby(或任何其他語言)來使其成爲有條件的。這在pre-commit鉤子或在任何實際處理髮生之前被調用的鉤子中效果最佳。在git pull的情況下,您可以鎖定的唯一掛鉤是post-merge掛鉤,並且只有在完成整個處理後纔會調用掛鉤。因此,在合併分支後合併另一個分支是沒有意義的:)然而,您可以向他們顯示一條消息。

爲此,使用類似:

#!/usr/bin/env ruby 

branch=$(git rev-parse --symbolic --abbrev-ref $1) 
if branch != $GIT_DIR/ORIG_HEAD 
    puts "You merged a different branch dim wit" 
end 

現在,我要做的是和比較,如果合併後的分支是一樣的原分公司名稱,如果沒有,顯示該用戶的消息。這將在您的git合併摘要中顯示爲remote

同樣,我不知道這是否會工作,因爲我不確定git rev-parse --symbolic --abbrev-ref $1會給你分支名稱。

這又是,只是一個建議,不是你的問題:(

+0

感謝您的建議。所以我想沒有建立我需要的方式,可能我會解決--set-upstream。 –

+0

另外,看看git-fmt-merge-msg – rizwaniqbal