2016-08-16 65 views
0

我創建了一個本地文件。Git pull聲明新的本地文件將被覆蓋

[email protected]:/project$ git status 
On branch development 
Your branch and 'origin/development' have diverged, 
and have 2 and 6 different commits each, respectively. 
    (use "git pull" to merge the remote branch into yours) 
Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

     new file: components/shared/some_utils.py 

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

     modified: components/shared/some_utils.py 

然而,當我做一拉我得到這個錯誤:

​​

我已經證實,該文件是完全地方不是在遠程的到來。我無法理解git會如何或爲何覆蓋它。

回答

0

Git pull改變了HEAD指針的位置,並將寫入您在本地進行的更改。解決方案是,您應該在提交之前提交本地更改。

這樣做:

git add . 
git commit -m "your message" 
git pull 

這應該工作。

+0

但它獨自離開其他文件。從上面的輸出中省略的是git不關心的另外三個修改文件。它通常只標記將被傳入更改覆蓋的文件。除非我錯過了一些東西。 –

+0

如果一個文件被git視爲已修改,那麼git已經在跟蹤它。一旦git正在跟蹤文件,並且在不修改修改後的文件的情況下執行pull操作,它將會覆蓋更改。但是如果一個新文件被創建並且沒有被git追蹤,它不應該被覆蓋。 – d3r1ck

+0

這是不是假設有什麼上游來覆蓋它?如果上游沒有什麼需要覆蓋文件,那麼git通常只會留下未提交的更改。我經常在我的git狀態下擁有未經處理的文件,但可以成功取消。這使我感到奇怪的是,他們不可能是這個文件的傳入改變,因爲它是全新的,並且我知道沒有其他人添加了相同的文件。 –

1

如果您不希望您提交的文件,你可以做的選擇:

git stash 
git pull 
git stash apply 
相關問題