簡體   English   中英

如何從另一個分支簽出文件,然后覆蓋當前分支

[英]How to checkout files from another branch and then overwrite the current branch

基於http://jasonrudolph.com/blog/2009/02/25/git-tip-how-to-merge-specific-files-from-another-branch/ ,我們可以使用以下命令合並來自另一個的更改分支到當地分公司。

例如:

$git checkout master -- hello.c

此命令將hello.c從master分支合並到當前本地分支。

問題>如果我想使用master中的hello.c來覆蓋我的本地分支文件而不進行任何合並,該怎么辦? 我應該使用哪個選項?

謝謝

- 更新 -

$ pwd
/sandbox/projectOne

$ git branch
  feature/F_Source
* feature/F_Dest
  master
$ git status -s
$
$ git diff feature/F_Source feature/F_Dest -- Messages/src/Hello.C | wc -l
165
$ git checkout feature/F_Source -- Messages/src/Hello.C
$
$ git diff feature/F_Source feature/F_Dest -- Messages/src/Hello.C | wc -l
165
$ git status -s
M  Messages/src/Hello.C
$

如您所見,在結賬之前,F_Source Hello.C和F_Dest Hello.C之間存在差異。 結賬后,仍然存在差異。 所以我假設結賬不是覆蓋操作,否則我們不應該看到任何差異。

請注意您發布的鏈接中的引用:

您需要抓取的代碼與少數文件隔離,並且主分支中尚不存在這些文件。

所以他稱之為“合並”並不是真正的合並; 它只是復制文件,不需要合並。 當你調用git checkout master -- hello.c ,確實 master任何東西覆蓋你的本地hello.c副本; 它沒有合並任何東西。

問題>如果我想使用master中的hello.c來覆蓋我的本地分支文件而不進行任何合並,該怎么辦?

我應該使用哪個選項?

正如您已經發現的那樣,這是做到這一點的方式(到目前為止您做了什么)

git checkout <branch_name> -- <file path>


# On branch master - checkout different branch
git checkout <branch2>

# now checkout the desired file form different branch (master in this case)
git checkout master -- hello.c

由於您正在檢查來自不同分支的文件,因此將進行合並。 如果你不想合並,只需抓取你需要的文件的內容,並覆蓋當前文件,這樣內容將是新的,這將是一個簡單的改變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM