Git檔案操作

在本教程中,你將學習git中的檔案操作比如如刪除、移動和重新命名檔案。

Git刪除檔案

最簡單的將檔案從跟蹤中刪除並最終從儲存庫中刪除的方法是 git rm

$ git rm tes2.txt
rm 'test2.txt'

執行該命令後,test2.txt將從工作資料夾中刪除該檔案,並且此刪除資訊已新增到暫存區。

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	deleted:    test2.txt

Git重新命名檔案

如果直接在工作區中重新命名檔案,git將此操作視為兩個操作,第一是刪除舊檔案,第二是將新命名的檔案新增到工作區中。

$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	deleted:    test1.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	test1_rename.txt

no changes added to commit (use "git add" and/or "git commit -a")

這種操作的缺點是它會破壞檔案的版本歷史記錄,此後你無法檢視此重新命名之前的歷史修改記錄,這在版本控制中是不可取的。

Git 有一個重新命名命令來解決這個歷史修訂記錄連結斷開的問題 - mv

$ git mv test1.txt test1_rename.txt

mv的意思就是move,在這裡,重新命名檔案也就意味著test1.txt檔案被移動重新命名為test1_rename.txt

如果你現在檢查git statusrenamed就會出現了,

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	renamed:    test1.txt -> test1_rename.txt

Git移動檔案

與重新命名檔案類似,在git中移動檔案也使用git mv命令,只是目標資料夾與被移動檔案原本的資料夾不同。

$ git mv test1_rename.txt move/test1.txt

這裡,資料夾move是目標資料夾,test1.txt是檔案test1_rename.txt移動後的新檔名。

我們來看看git status

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	renamed:    test1_rename.txt -> move/test1.txt

你可以看到,它也是一個renamed操作,只是目的地資料夾不同。