刪除 git 分支中的檔案意味著也將其從 master 分支中刪除?

刪除 git 分支中的檔案意味著也將其從 master 分支中刪除?

我剛剛遇到了一個對我來說 Git 不合邏輯的情況。我有一個包含大量提交的儲存庫,因此在這一階段它只有一個分支(掌握)。

主分支

假設這個分支有一個名為我的文件.txt。現在我需要建立一個不同的分支,因為我想對一些文件進行一些更改,我不想直接在 master 分支上進行更改,所以我運行:

git checkout iss53

現在架構如下圖所示:

新分行

好吧,我已經轉到branch了國際太空站53號,我跑ls -l並且我的文件.txt。其中一項變更包括刪除我的文件.txt文件,所以:

git rm MyFile.txt

很好,ls -l再次運行顯示沒有我的文件.txt不再了。所以我切換回掌握分支:

git checkout master

但是……那個我的文件.txt文件也消失了。我的邏輯是,如果我刪除了分支上的文件,則應該應用它僅有的到該分支,那麼為什麼該檔案會從掌握也有分行嗎?請注意,我還沒有進行任何提交,只是分支。

筆記: 兩張圖均取自Git-scm

答案1

答案就在你的問題中:

請注意,我還沒有進行任何提交,只是分支。

如果您不提交,更改將始終保留在您的工作目錄中。切換分支不會影響你的工作目錄,工作目錄也不會影響你最後一次提交。您會看到該檔案已被刪除,但實際上它僅從您的工作目錄中刪除。如果您想清除變更並返回到上次提交,請使用以下命令:

git reset --hard HEAD

這樣文件就會再次恢復。

也許這對你來說不符合邏輯,但這種行為可能很有用。想像一下,您有 2 個分支:master和,並且您應該始終在將變更移至 之前development繼續工作。假設您在開始工作之前忘記切換到 ,那麼在您提交之前您意識到自己正在使用。解決方法很簡單,切換到然後commit即可。developmentmasterdevelopmentmasterdevelopment

答案2

每當我從我的一個分支(我稱之為登入)中刪除一個檔案時,它並沒有從主分支中刪除它。

  1. 我切換到登入分支git checkout login
  2. 刪除了 test.html 文件git rm --cached test.html
  3. 將所有內容新增至暫存區git add .
  4. 提交更改git commit -m 'removed test.html file'
  5. 將本機儲存庫推送到 Github 遠端儲存庫git push

相關內容