文章目錄
Git 修改資料夾名稱的做法
同事想要調整 Git repository 的 folder 名稱,以往 SVN 的修改方式就是直接修改資料夾名稱,然後 commit,一切搞定:因為 SVN 是檔案 base 的版控,它可以持續追蹤到修改資料夾名稱,其他一切如故,但 Git 的運作方式不同,這樣的操作對於 Git 就會變成移除檔案再新增檔案的情境,檔案還是會在,但對於 Git 來說檔案已經不是同個檔案了,變成 rename 前的資料夾內容都變成 Missing
,rename 後的資料夾內容都是 Not Versioned
,當然可以手動刪除 Missing
的檔案及狀態,但這樣的操作既麻煩又沒有意義,我們來看看 Git 中的正確做法
基本情境設定
- 在 folder 中建立
test
資料夾 - 在
test
建立1.txt
- 依序在
1.txt
中建立幾個版本 - 將
test
改名為test123
直接修改資料夾名稱
- 直接在檔案總管中修改資料夾名稱
Git 會將原本資料夾內容標記會
Missing
並將 rename 完的資料夾標記為Not Versioned
透過 Git 修改
使用指令
指令範例(詳細內容可以參考 git-mv)
git mv test test123
使用 git status 檢查狀況 –> 正確標記為
renamed
使用
TortoiseGit
資料夾–> 按右鍵 –> TprtoiseGit –> Rename..
New name
正確標記為
Rename
關於檔案的修改歷程
不管哪一種修改方式,檔案的修改歷程都會被重設,舊的歷程不會再以個別 commit 顯示(無法使用 diff with previous version)
原檔案歷程
新檔案歷程
可以使用 git blame 看修改歷程
檔案 –> 按右鍵 –> TortoiseGit –> Blame
可以使用指令可修改歷程
指令 1
語法
``` git log --follow {file} ```
範例
``` git log --follow 1.txt ```
指令 2
語法
``` gitk --follow {file} ```
範例
``` gitk --follow 1.txt ```
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-02
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。