2013-05-16 16 views
0

所以我需要將rails 2.3.14應用程序升級到rails 3.我們使用git,因此決定創建另一個分支'rails3'(git checkout -b rails3)。我發現升級問題的最簡單的解決方案是刪除所有東西,並生成一個新的項目和複製/粘貼控制器,視圖等等。但現在git status告訴我這些文件被刪除和重新生成,而不是修改,雖然他們大多數是在他們以前的相同的地方。所以更改仍然模糊,其他程序員不會看到文件的微妙變化。爲什麼git將這些文件顯示爲已刪除並添加與移動?

有什麼我做:

/path/to/rails_project/ (master) $ git checkout -b rails3 
/path/to/rails_project/ (rails3) $ rm -rf ./* # not git rm 
/path/to/ $ rails new rails_project 
/path/to/rails_project/ (rails3) $ cp old/project/stuff/from/another/dir 

我怎樣才能「告訴」 git的這些文件被修改,不刪除和再生?我有一個完全不同的目錄中升級的應用程序,所以它很好地內爆宇宙,並開始做所有事情。

+0

這不是一個特定於rails的問題,所以我會刪除ruby-on-rails標記並從問題標題中刪除rails,而是將其稱爲「爲什麼git將這些文件顯示爲已刪除並添加vs感動?「 –

+0

我使用了rails標籤,因爲這也與如何在imploding和再生/升級rails應用程序時管理git提交有關。也許有人在那裏知道更好的方法來完成這個特定的任務。無論如何,標題是有道理的。 – nicooga

+0

使用'git log --stat'添加'git status'的輸出和任何適用的近期提交。 –

回答

0

看起來Git是正確的,如果你下面說的是正確

「我發現升級的問題,最簡單的辦法是消除所有的東西,併產生一個新的項目和複製/粘貼控制器,視圖,等等。「來自主人。」

如果這些文件,你想他們是,爲什麼不乾脆: git的添加 git的承諾

0

Git不會自動刪除任何東西。您必須一直使用IDE或編輯器,它調用git rm ...,然後git add ...,而您只是沒有看到它。

要避免這種情況,請在命令行或更明顯的工具上使用git。對於相同的文件,請使用git mv而不是git rmgit add。有時候,當你添加時,git會自動移動,但使用mv則無需猜測。

+0

我沒有使用任何IDE。我剛跑過'rm -rf ./*'。仍git檢測到丟失的文件被刪除。當我生成新項目並粘貼舊的東西時,git status會拋出「deleted:/ path/to/file1」和「new file:/ path/to/file1」 – nicooga

+0

啊,好的。如果路徑正在移動,請執行'git mv old_pathname new_pathname'並在'git add'之前用新版本替換移動的文件。但是,如果只有'rm'(而不是'git rm'),然後替換文件,那麼如果文件名和路徑相同,並且您沒有對該文件執行git操作,那麼git不應將該文件識別爲已刪除。請注意,儘管我們中的很多人都認爲某些東西看起來像文件被重新創建時,因爲git有時會出錯。有時候有點寬恕是可以的,對吧? :) –

相關問題