2017-01-02 79 views
0

我想從我的github存儲庫中獲取文件'README'到我的ubuntu本地。Git拉內容而不影響本地文件更改,反之亦然

從GitHub存儲庫中的文件「自述」的內容是這樣的:

This is a git repo modified from github 

現在對於同一個文件我在本地進行的更改,如:

This is a git repo locally modified from github local 

現在

Ubuntu終端,需要知道如何從Github獲取文件內容而不影響本地內容,反之亦然

Scenario1:如果我更改爲本地README文件,並說 'git的狀態' 我得到

   modified: README 

在我的終端。

這裏我需要添加我的本地內容到github而不影響內容。

場景2:對github所做的任何更新,我需要獲取更新而不影響我的本地內容。

場景3:如何恢復在本地完成的更改,並將github中的相同內容推送到其原始狀態。

需要所有場景中的命令。

更新:

嘗試以下:

git stash 
git pull origin master 
git stash pop 

我得到如下:

<<<<<<< Updated upstream 
This is a git repo modified from github repo 
======= 
This is a git repo locally modified from github 
>>>>>>> Stashed changes 

如何從GitHub獲取更新,並保持我們的本地修改,而無需手動編輯它們

+0

你是否嘗試使用'git stash'來存儲你的本地修改?之後你運行'git pull'獲取所有更新,然後運行'git stash pop'來恢復你的修改README –

+0

已經更新了答案 –

回答

1

場景1:您想將本地內容添加到服務器而不更改t他在服務器上聲明? git branch可能是解決您的問題的方法。或者什麼內容不應該受到影響? git branch documentation

場景2:git fetch從服務器下載更改,但不會將它們應用到本地。 git pull將應用它們。 git fetch documentation

情況3:如果您恢復本地更改,那麼因爲您已處於清理狀態,因此沒有什麼可以繼續推送了嗎?

1

場景1:學習Git,然後提交您的更改,然後推送您的更改。

場景2:您知道Git是分佈式VCS嗎?您可以在本地進行更改,執行更改,進行更多更改,執行更改,可能在本地多個分支上工作等等。當你想整合上游變更時,你可以將這些變更拖入遠程追蹤分支,而不會影響你的本地分支機構。然後,根據具體情況('rebase'創建一個線性歷史記錄,其中包含遠程跟蹤分支到您的本地分支的更改(您的遠程跟蹤分支的更改來自遠程),但不應該爲在重寫歷史時已經被推入,'merge'創建合併提交以合併您的更改和遠程更改)。如果由於您在本地修改文件而導致合併或重新鏈接併發生衝突,並且存在來自遠程的更改,Git會告訴您並且希望您手動或使用合併工具(git mergetool)解決衝突。 fetch+mergefetch+rebase也可以使用一個命令完成,即git pull,它可以進行合併或重新綁定,具體取決於您的配置選項和命令行參數。如果您不希望在將更改與本地更改結合在一起之前查看遠程更改,這很方便。

如果你不想提交你的修改,首先,你可以使用git stash其保存和恢復您的本地未提交的更改,然後合併或重訂遠程修改到你的本地分支,然後使用git stash pop得到再次應用的變化。如果有衝突,git stash popgit stash apply一樣工作。然後,您可以解決衝突,如果您滿意,可以使用git stash drop刪除最頂端的存儲空間。

合併或重新綁定時,還可以使用完全使用文件的合併策略,忽略來自遠程(不僅是衝突文件)的內容。如果您只想使用衝突文件的版本,請使用git checkout --ours -- your-file.ext手動解決該文件的衝突。

方案3:如果您沒有提交或添加到索引本地,只是做git checkout .在回購的根恢復所有的本地修改。如果您已經提交了,則可以使用git branch -f master origin/mastergit reset --hard origin/master將本地主分支帶到遠程分支狀態,從而丟棄所有本地提交。

相關問題