簡體   English   中英

如果從不同的分支拉出來,git會收到警告

[英]git receive warning if pulling from different branch

如果我在分支“x”並嘗試從分支“y”拉出來,如何讓git向我發出警告?

舉個例子;

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

git pull origin y

此時我希望git發出類似於“你正在獲取並將不同的分支合並到當前工作分支中的警告。你想繼續嗎?(是/否)”

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

我知道如何恢復這個錯誤,但我寧願在做出這樣的錯誤之前得到警告。

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

git hooks中使用條件語句有一個漂亮的小技巧。 您可以在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會給你分支名稱。

這又是一個建議,而不是你的問題的解決方案:(

如果您的當前分支已設置為跟蹤上游分支 (如git branch --set-upstream test origin/test ),您只需:

 git pull origin

(避免任何錯誤的可能性)

注意:根據您的git版本,這也將對您的推送操作產生影響:請參閱“ git checkout --track origin/branchgit checkout -b branch origin/branch之間的區別

所以要准確回答你的問題: 沒有內置的方法來通過git獲得警告
您可以對rizwaniqbal回答 (upvoted)中推薦的鈎子腳本進行版本控制,但每個用戶都必須在他/她自己的回購中聲明該鈎子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM