我想做一個腳本,通過在GIT中籤出回購協議來發布系統。GIT預覽結賬或合併
我的任務是我可以通過某種方式測試以檢出分支,以確定是否出現錯誤而不依賴於文件系統。
同樣,我可以在一個簡單的方法預覽GIT合併識別衝突,而無需修改文件系統?
(全系統的Linux系統上運行,如果這是爲了幫助)
我想做一個腳本,通過在GIT中籤出回購協議來發布系統。GIT預覽結賬或合併
我的任務是我可以通過某種方式測試以檢出分支,以確定是否出現錯誤而不依賴於文件系統。
同樣,我可以在一個簡單的方法預覽GIT合併識別衝突,而無需修改文件系統?
(全系統的Linux系統上運行,如果這是爲了幫助)
如果你籤一個分支,你永遠不會得到一個錯誤。結帳只是恢復分支的以前的狀態。
如果你想檢查合併,情況會有所不同。
如果你有一個分支mybranch
,你要合併otherbranch
進去,在合併之前記得mybranch
狀態:
git log -1 --oneline
這將返回最後的哈希提交。請注意散列(例如CAFEBABE
)。
現在,嘗試做合併:
git merge otherbranch
如果一切正常。精細。如果你得到任何錯誤,都不願意來解決這些問題:
git reset --hard CAFEBABE
git merge
尚未開始之前,這將重置mybranch
的狀態。
不用記住哈希CAFEBABE
的,你也可以利用ORIG_HEAD
如下所述:HEAD and ORIG_HEAD in Git
使用git merge --ff-only
- 它會合並,只有當它能夠快速轉發的分支。這意味着衝突是不可能的,並且始終有效(當然系統故障除外,例如磁盤空間不足)。顯然,這意味着分支機構不應該分化,但是在大多數情況下,如果不是,你應該在另一個回購機制中合併潛在的衝突,保持「釋放回購」不變。
另一種方法是使用符號鏈接(linux或ntfs)。您應該有兩個存儲庫repo1
和repo2
以及符號鏈接releaserepo
,它們將指向其中之一。說,你有releaserepo
- >repo1
。現在你可以更新repo2
,檢查是否所有的工作,然後只是改變它的符號鏈接,下次你將更新repo1
並翻轉符號鏈接回來。如果也會避免所有的系統故障,因爲創建符號鏈接操作是原子的。
是的,您可以在結帳時收到錯誤,因爲您有本地更改,但沒有被提交或不在gitinrgnor文件中。 – 2013-04-20 13:16:58
你不想合併未提交的狀態 – eckes 2013-04-20 14:32:24