我修改了分支A中的一些文件,然後使用git add
來添加這些修改過的文件。 但我忘了用git commit
提交修改到當前分支。然後我用git checkout B
切換到另一個分支。 當我再次切換到分支A時,我發現沒有任何修改可以在這裏找到。 有什麼方法可以讓我修改文件嗎?如何在git add和git checkout沒有git commit後重新獲得diff?
回答
如果git允許您切換分支,即使未提交更改,這些更改也將傳送到您切換到的分支。所以如果你檢查這兩個分支之間的差異,它不會顯示任何改變。嘗試使用任何其他基本分支的差異。希望
git add
通常會將對象寫入對象數據庫。如果它不再可以從索引或任何提交中訪問,它將是一個懸浮的斑點。
$ git fsck --no-reflogs | grep 'dangling blob'
dangling blob 5cd8df407a53f3cf1a00d7df9b92973fc7124649
dangling blob a15ac56b6ac98b0b26c4d30bd299cf5cea817b83
dangling blob a052e2e82624bfa14d7004a30e971cfc543d3759
dangling blob b3cae5cf028ad4728b344193a7c6fe4e76e36af3
dangling blob bb428320e3f8496ee844dfe1826e5f705e47b0c8
dangling blob aa9bc6e7a3078a91a895f9ade9ecb0d3f46783a0
dangling blob 0094f013e9120ac2168248245ee492f1c551754d
dangling blob 896c4a4752fab07a7be22cc068c50d4b8021c8a9
dangling blob f6fc725dc3f01cedee7933651e202fa1e46101a4
$ git cat-file -p 5cd8df407a53f3cf1a00d7df9b92973fc7124649
...
您可以一個接一個地打印出來,試圖找出丟失的東西。 (另請參閱--lost-found
選項。)
我試過這個,但似乎只有通過git commit提交的更改可以被發現 –
@張張彪然後,無論您使用了什麼'git add -N'都不會寫任何東西到對象數據庫,或者它是附加到索引或某處提交。它肯定會找到由'git add'編寫的對象,然後在提交之前丟失。 – ephemient
我發現它們在藏匿處。在git添加大部分文件之後,我使用git存儲,希望將剩餘的文件存儲起來。但似乎修改後的文件全部放到藏匿處,無論它們是否使用git add添加或不添加。
你在評論中聲稱你*沒有使用'git stash'。 'git stash'的作用是編寫至少兩個*提交,一個用於當前索引內容,另一個用於當前工作樹註釋。有一個可選的第三個提交保存更多的文件:或者未被忽略的未被忽略的文件,或者未被追蹤的文件,包括那些被忽略的文件。這兩個或三個提交是作出的,但存儲在* no *分支上,作爲從當前提交懸浮的一類提交。 – torek
- 1. 併發git checkout/add/commit
- 2. 結合git add。和git commit
- 3. (git add -A後跟git commit)和git commit -a之間的區別?
- 4. git checkout commit-name和git checkout branchname有何區別
- 5. git新手 - git add/commit/push/pull
- 6. 什麼做「git checkout \ *」和「git commit - 」完成?
- 7. git revert和git checkout
- 8. git add *和git add。有什麼區別?
- 9. 「git checkout」和「git checkout - 」有什麼區別?
- 10. 如何通過`git diff`獲取`git commit --verbose`輸出?
- 11. 「git commit」前的多個「git add」
- 12. git add→git commit。這是正確的嗎?
- 13. 撤消git add和git commit以及一種git push原點
- 14. 如何在git推後執行git commit?
- 15. git-stash和git-checkout有什麼區別?
- 16. 什麼時候需要做「git pull」,在「git add,git commit」之前還是之後?
- 17. Git add,git commit,git push不發送文件到GitHub?
- 18. 如何在Git Tower中獲得Git Commit消息?
- 19. git add -A vs git add file
- 20. 當用戶在「git add」和「git commit」之前做「git push」會發生什麼?
- 21. git commit -m vs git commit -am
- 22. 如何在`git push`後在本地和遠程撤銷`git commit`
- 23. git checkout vs git checkout HEAD vs git checkout <CURRENT BRANCH> vs git checkout - <WORKING DIR>
- 24. 爲什麼Git提交-a(和git add,然後git commit)不會觸發可執行文件pre-commit hook
- 25. 重新應用git commit
- 26. git add和git commit之間的區別-a
- 27. git add之間的區別。和git commit -am「message」
- 28. 是在Git 2.x`git add .`和`git add -A`是否一樣?
- 29. 如何獲得git子樹diff?
- 30. `git diff`和`git difftool`有什麼區別?
您在檢出B之前是否使用過'git stash'? – 17slim
你確定沒有任何修改?也許修改後的文件未分區? – destoryer
不,我在檢出B之前沒有使用git stash。當我在分支A時使用git status時,我看不到未修改的修改 –