簡體   English   中英

git:需要在一個分支上構建並將該分支合並到另一個分支

[英]git: need to build on one branch and merge that branch to another branch

我們的構建需要很長時間。 單元測試大約需要4個小時。 我正在嘗試在master上構建和運行單元測試。 同時,我需要將master合並到分支A。

有沒有一種方法可以不更改文件在文件系統上的外觀並合並到另一個分支

---------\-----master
          \----A

像“ git merge from_branch to_branch”或“ git merge to_Branch from_Branch”之類的東西我觀察到一些與alais相關的帖子,但這些帖子看起來像是在做“ git checkout A; git merge master”,這不是我想要的。 無法結帳,因為我的流程需要訪問主文件

謝謝

同意@Schwern認為,解決此問題的最簡單方法是克隆存儲庫。

有時,代替完整的克隆,您可能會發現復制工作目錄更為方便。 特別是,您不必在這兩個本地git存儲庫之間拉/推。

最好的解決方案確實是CI服務器。 如果您可以使用這種中間件解決方案,並且可以在Linux上運行測試,則采用這種方式的中間件解決方案可以在docker中進行此類構建。

我們的構建需要很長時間。 單元測試大約需要4個小時。 我正在嘗試在master上構建和運行單元測試。 同時,我需要將master合並到分支A。

有一些好的做法可以消除此問題。 首先是不要在master上工作,而只能在功能分支上工作。 master僅應用於啟動新功能分支和集成已測試的功能分支。 這種非常好的做法可以解決很多問題。

- B - C - D [master]
           \
            E - F - G [feature]

使用git merge master可以使您的功能分支與master更改保持最新(或者git rebase master以避免大量不必要的合並點)。 可以安全地推動要素分支,而不會危害其他分支。

二是使用持續集成服務器 就是說,有一台專用的機器,除了將其推送到中央存儲庫之外,什么都不做,只能構建並運行完整的測試套件。 這樣做的好處是提供的環境應盡可能接近真實的生產環境(而不是開發計算機上發生的任何事情)。 Travis CI是CI服務的一個示例, Jenkins是一個開源可安裝CI服務器。

請注意,您可以在自己的桌面上的虛擬機上運行自己的CI服務器。

有了這個,您不再需要等待長時間的測試完成。 您可以安全地推送功能分支,CI服務器將運行測試。 同時,您可以使用開發副本做任何您想做的事情。


如果您不想做所有事情,並且希望繼續在開發機器上進行master測試並運行長時間的測試,則最簡單的解決方案是將開發副本克隆到新位置進行測試。 克隆您的開發副本,而不是共享的遠程副本,意味着它將擁有您的工作和分支。

git clone /path/to/my/devel /path/to/my/tests

/path/to/my/tests運行測試,並在/path/to/my/devel

暫無
暫無

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

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