
我的檔案目錄中有兩個資料夾 A 和 B,它們連結到同一個 Git 儲存庫。
我在資料夾 A 中建立了一個名為index.html
.然後,我會建立一個不同的文件,也稱為index.html
資料夾index.html
B。
當我從資料夾 A 中提取文件時,Git 聲稱我的文件「已經是最新的」。然而,這兩個資料夾顯然有不同的index.html
文件。到底是怎麼回事?
答案1
git pull
的工作是fetch
新的提交並將merge
它們放入當前分支。如果當前分支與您從中提取的分支相比沒有過時,則 pull 會說Already up-to-date.
即使您的工作目錄中有本地更改。git pull
關注的是分支,而不是工作樹——只有當存在幹擾合併的變更時,它才會對工作樹進行評論。
您的描述不足以解釋為什麼它不反對現有的index.html
,但您不應該認為Already up-to-date.
git 認為您沒有任何更改。相反,使用git status
來獲取摘要。
為了了解分支的狀態,git branch -v
它很有用(它顯示提交 ID 以及與每個分支的上游分支的關係),或gitk --all
用於所有提交的圖形視圖。
答案2
如果我理解正確,以下腳本應該會重現您的問題:
mkdir測試 光碟測試 git init --裸測試.git git 克隆 test.git a git 克隆 test.git b 回顯 > a/index.html 迴聲 b > b/index.html 光碟 git 新增索引.html git commit -m 添加 git推送原點大師 光碟../a git拉
最後git pull
列印:
遠端:計數物件:3,完成。 遠端:總計 3 個(增量 0),重複使用 0 個(增量 0) 拆開物體:100% (3/3),完成。 來自/home/cyrus/tmp/test/test * [新分支] master -> origin/master
而 的內容index.html
已經被默默地覆蓋了:
賽勒斯:~/tmp/test/a$ cat index.html 乙
答案3
答案4
看起來你已經習慣了 SVN,其中不同的資料夾(甚至文件,不知道)可以簽出不同的修訂版本。
這對 git 來說是不可能的。與您所在的資料夾無關,提交或簽出(這也是成功拉取的最後一步)對所有工作文件進行操作,與您目前所在的資料夾無關。