我們最近出現了一個問題:團隊成員在將主人合併到他們的功能分支時意外刪除了應用於主分支的所有新更改,然後當他們將其分支合併到主分支中,然後刪除所有更改。幸運的是,我們很早就發現了這一點,所以這不是什麼大不了的事情,但是要花一兩天才能完成,並確保我們沒有失去任何工作。如何讓git在合併刪除文件時發出警告
做了糟糕合併的同事並不確定它是如何發生的,他之前完成了大量合併工作,他們都工作良好,他記得那天合併並在合併衝突中工作,所以我們並不確定它是如何發生的。他使用TortoiseGit,我們最好的猜測是出現了一些錯誤或取消,這些錯誤或取消會退出所有更改,但以某種方式將合併頭留在那裏,當他做出下一次提交時,他認爲這只是一個正常提交,它會刪除所有更改。
我做了一些在線閱讀,明白當你做一個合併提交時,你基本上是告訴git「我手動合併了這些文件,這是從現在開始使用的版本庫」,但對我來說這似乎是相當危險的,所以我想知道是否有一個設置,我們可以打開git產生一個警告,當文件被刪除相比,父母之一(尤其是如果他們不在衝突)。如果沒有設置,是否有什麼理由不能在git中實現這樣的功能,我是否誤解了某些東西?在我看來,這似乎是一個明智的功能,可以警告如果在合併中刪除了一個分支中已更改的文件。 (最後我會提到,我們意識到這應該已經被拉入請求審查,問題是這是一個巨大的公關,這隻發生在初步審查後,所以審查人員剛剛開始看看個人承諾而不是整個公關視圖,所以錯過了。我們已經討論過未來如果我們正在研究更大的功能來分解它們,我們將努力減少我們的公關的規模, m也對更技術性的解決方案感興趣,因爲如果這種危險的行爲可能未被捕獲,那麼我的團隊就會抱怨可能會從git中移除)
(另外,我想我更喜歡它,如果它不只是文件刪除,但任何被刪除的改變,所以如果在一個塊中改變了一些塊分支,並且所有這些塊在合併中被刪除,那麼如果沒有衝突導致它們被刪除,理想情況下會給出警告)
你想git的是聰明,知道一些代碼改變是正確的或不?懷疑這會起作用,如果有解決方案可以幫助你(至少有一點),我懷疑依靠它是一個好主意。 – Seb
由於一個開發人員的錯誤用法而離開Git是無意義的,特別是因爲我懷疑任何其他VCS的行爲會有所不同。當然,開發人員要負責合併並正確執行。 Git還允許危險的操作刪除所有文件並提交,但這並不是一個壞的工具,因爲這也是該工具的有效用法。也許你可以devlop一個Git鉤子做這樣的檢查,然後阻止提交或發出警告。 – Vampire
我不想讓git知道什麼是正確的,但我的假設是,合併期間可能有95%的時間不需要編輯除git已確定爲合併衝突之外的文件,並且可能99%當你不想刪除在其他分支中添加的文件時,所以我認爲當你遇到少數情況時可能會有一種方法來打開警告。我會研究一個git鉤子。 – JSoet