name - git pull



一種限制Git分支訪問的方法? (6)

GitHub添加了限制哪些用戶可以在 今年早些時候推送到組織分支機構的功能。

https://ffff65535.com

我的git存儲庫中有四個分支,使用GitHub進行管理:

  • 生產
  • 分期
  • [人名] - 發展

有沒有辦法限制只有一個分支([人名] - 開發)的寫訪問權限? 我該怎麼辦?

供參考,一個類似的問題: 如何編寫一個git鉤子來限制寫入分支?


share建議適用於開源項目的出色解決方案。 但是,它要求協作者團隊的每個成員在GitHub上都有一個付費帳戶,但這並非總是如此。

VonC指出,還有另一個解決方案只涉及一個付費的GitHub帳戶。 我將提供一些如何實現VonC解決方案的教程。

假設我們有兩個私有存儲庫: test-testtest-production 。 第一個回購用於開發,團隊的每個成員都可以訪問它。 第二個回購用於自動部署代碼,因此對其應用了強大的訪問限制。

開發人員的設置非常簡單明了: git clone https://github.com/<username>/test-test ,做他們的工作並推回去。

協作者的設置有點複雜:

  1. 從開發repo git clone https://github.com/<username>/test-test拉出分支

  2. 添加遠程存儲庫git remote add production-repo https://github.com/<username>/test-production.git

  3. 從新的repo git fetch production-repo獲取數據

  4. 為生產代碼創建新的本地分支並切換到它git checkout -b local-production

  5. 告訴git鏈接本地和遠程分支git branch -u production-repo/production

  6. 將遠程生產分支的內容下載到本地一個git pull

  7. 排除可能的衝突,就是這樣!

現在,從local-production分支推送的所有內容都將進入test-production倉庫,其他分支將被推送到test-test倉庫。

好的,這很酷,但更細粒度([人名] - 開發)訪問呢? - 你可能會問。 答案是:您可以為每個開發人員創建類似於test-test repos,並使用相同的模式進行設置。 這種方法的缺點是合作者必須克隆每個test-test-[person's name]-development回購。

VonC還建議分配production回購併向其發出拉動請求 - 為什麼不這樣做呢? 首先,因為你沒有支付GitHub賬戶就無法分叉私人倉庫。 其次,為了允許某人派一個私人倉庫,你給他完全訪問它,所以他可以直接推送它。 而開發人員可能會犯錯誤,推動production回購啟動GitHub服務掛鉤並搞砸了。 如果您使用多個外包開發人員,這可能會發生。

另外,我想提醒您關於Windows官方GitHub應用程序中的錯誤功能。 上游與原點不同的分支將進入原點。 所以使用命令行進行推送。

所有這些事情聽起來有點過於復雜。 但如果你不想為簡單付出代價就總是這樣。


在Bitbucket版本( Bitbucket v4.9.1 )您可以通過以下方式限制更改:

  1. 分店名稱
  2. 分支名稱模式
  3. 分支名稱建模

以下操作可以限制:

  1. 防止所有更改
  2. 防止刪除
  3. 防止重寫歷史
  4. 在沒有拉取請求的情況下阻止更改

輸入作為例外的用戶;



您可能想要查看GitLab及其“受保護的分支”功能。 我認為這正是你正在尋找的。 請參閱保護您的代碼


注意: 受保護的分支和所需的狀態檢查 (2015年9月3日)不會完全允許單個分支(“[人名] - 開發”),但它會被克隆。

分支機構將受到保護:

  • 反對被迫推
  • 反對刪除
  • 反對合併的更改,直到所需的狀態檢查通過





github