2013-04-26 65 views
110

我正在Git分支上有一些破損的測試,我想從其他分支已經修復的地方抽取(合併更改,而不是覆蓋)這些測試。是否可以在Git中只拉一個文件?

我知道我可以做

git pull origin that_other_branch 

但這將試圖合併很多其他的文件,說我還沒有準備好。

是否可以從另一個分支中僅抽取和合並指定的文件(而不是所有內容)?

這不是Git pull request for just one file重複的,因爲所有的答案對這個問題是如何恢復本地更改的文件到存儲庫版本,而無需改變任何分支機構。

回答

99

您可以獲取,然後檢查了只有一個文件中這樣說:

git fetch 
git checkout -m <revision> <yourfilepath> 
git add <yourfilepath> 
git commit 

關於git checkout命令: <revision> - 一個分支名稱,即origin/master <yourfilepath>不包括倉庫名(你可以通過點擊GitHub上的文件頁面上的copy path按鈕獲得),即README.md

+19

-m開關所需的哈希碼可以用git branch -v打印。真棒! – h22 2013-04-30 07:46:30

+2

非常好。這不止一次幫助了我。爲了澄清,-m標誌似乎滿意於你想要從中提取單個文件的提交散列。 – rd108 2013-11-14 22:36:05

+1

這也適用於我。儘管如此,我在遠程分支上運行git log來查找反轉:例如$ git log remotes/origin/master – Dan 2013-12-23 17:50:09

190

這是一個稍微簡單的方法,我剛剛提出時研究:

git fetch {remote} 
git checkout FETCH_HEAD -- {file} 
+2

這是正確的答案 – Picrasma 2017-03-02 11:25:39

+2

fatal:無效的參考:FETCH_HEAD – 2017-08-24 18:46:16

相關問題