我正在一家大型企業企業工作,其中所有開發人員機器均爲Windows 7 Enterprise SP1。是否有一個「安全」的unix模擬器在Windows上運行git?
我正在運行從RTC到git的主要移植項目(導致類似1200 git回購)。在生產環境,構建或測試環境中沒有Windows服務器 - 一切都是Solaris或RedHat。該解決方案將推出給約200名開發人員。
通常會推動使用更多的Unix命令行工具,並且Windows上有幾種不同的替代方法,如:Cygwin,git-bash,cmder。我避免運行一個完整的linux虛擬機,因爲它引入了太多的其他問題(大多數開發人員沒有本地管理員權限,因特網代理是一個常見的麻煩,所以我不想讓網絡成爲NAT的更大問題)。
過去8個月我一直在運行Cygwin(mintty 2.6.2),直到今天我一直在使用git(v2.8.3)碰到一個非常令人關注的問題,git status甚至報告了一個乾淨的工作目錄儘管多個文件和文件夾已被刪除回購。只有在我重新創建了與其中一個已刪除文件夾相同名稱的文件夾後,所有已刪除文件才能正確顯示,並顯示git狀態。
我會解釋症狀和我在做什麼,但到目前爲止我沒有轉載這個問題。我懷疑問題是在模擬的linux文件系統和實際的Windows文件系統之間存在問題。各種模擬器的實現方式有什麼不同嗎?
我打的具體問題有以下症狀:
客戶端:
- git的狀態顯示出一個乾淨的工作目錄
- git的日誌顯示,3款A,B和C(提交Ç檢查退出)
- 回購內容是一個文件夾包含一個文件,另外2個文件在根文件夾中,再加上帶有內容的.git文件夾
- git存儲列表爲空
- GIT中分支-a只報告主,HEAD和原點/主
服務器端:
- 原點包含13個附加文件夾,每一個文件
- 的也包含原點提交A,B和C
- 只有主分支是本
- 我創建了一個新的文件,然後運行「混帳添加「,」git commit「(創建D)和」git push「。
- 提交D出現在具有新文件的服務器上。服務器上仍存在13個額外的文件夾和文件。
- 我跑了「混帳拉」,這回「已經是最新的」
- 我檢查了每一個變化承諾在客戶端和服務器端和每一個差異是一樣的
- 我克隆一個新副本的回購和內容匹配服務器與13額外的文件和文件夾與額外的提交D和額外的文件
- 然後我重新創建一個與刪除的文件夾名稱相同的文件夾,並運行「git status」所有已刪除的文件和文件夾都正確報告。
提交一個爲初始空提交。 提交B是所有內容添加的地方,14個文件夾和16個文件。 提交C是另一個空提交
提交A和提交C都是使用工具創建的,以幫助進行遷移。它運行兩個命令:「git init」和「git commit --allow-empty -m'初始提交'」
我無法理解git status如何報告刪除的文件(我記得刪除它們,但它以前一些日子有多個計算機進入休眠狀態,並可能是一個或兩個重起恢復我的工作)
試圖找出發生了什麼事我這樣做:
我不能解釋這個任何其他方式,除了一個嚴重的錯誤,只是在Cygwin中使用git不安全。我希望社區可能會在這方面對我提出一些建議,這是一個足夠明確的問題,即mod不會標記我的帖子。
我會盡我所能嘗試重現問題,並在有更多信息時更新問題。
編輯:更新2016年12月8日
我試圖重現錯誤都沒有成功。如果我在工作中再次看到它,我會更新此問題。
爲什麼更好你不只是使用本機[Git for Windows](http://git-for-windows.github.io/)端口?一段時間以來,它的發展甚至得到了Windows™的支持者的支持。它爲那些喜歡獲得更多「類Unix」體驗的人提供'MinTTY'和一個'bash'端口。同時它在本機Windows控制檯中運行正常。 – kostix
@kostix我的git已經安裝了windows,但是我的git bash在mintty(2.0.6)的舊版本中運行,而不是在cygwin中運行。我更喜歡cygwin的主要原因是安裝tmux + vim等其他工具比較容易。 – philbert