2013-02-13 25 views
1

我有這種情況。 一位開發人員正在./model目錄中工作,他正在向它添加新文件,然後他提交新的model_files並推送到原點/主模塊Git checkout只從分支目錄中獲取新文件

現在,第二個開發人員也在相同目錄下編寫模型./model他自己的工作目錄)。

假設開發一個建立這樣的模型:

./model/m1.php 
./model/m2.php 

現在,開發人員B創建這樣的模型:

./model/m3.php 
./model/m4.php 

假設開發一個提交的變化,推動了原點/主,因爲開發人員B需要M1 .php和m2.php模型到他的工作。

開發人員B還在項目中創建了許多其他更改/文件夾/文件,不僅在./models目錄中,他的工作還沒有完成。如果他合併或拉動,他的工作就會失去。

開發人員B如何才能檢索僅由開發人員A創建的./model文件夾中的新模型文件。 我在開發者B機器上嘗試過這樣的事情。我假設開發者B沒有提交m3.php和m4.php,因爲還沒有結束那些文件。他只需要在./models有從開發商A.目錄中的新文件(m1.php和m2.php)在開發B機器上我想:

git fetch origin 
git checkout origin/master ./model/* 

但不幸的是錯誤給了我

error: pathspec 'model/m3.php' did not match any file(s) known to git. 
error: pathspec 'model/m4.php' did not match any file(s) known to git. 

但如果我執行:

git checkout origin/master ./model/m1.php ./model/m2.php 

然後它的工作原理,但這個假設我必須知道exacly文件,我需要從這個分支檢出的名字。

有人可以幫助我嗎?謝謝。

+0

或許這將幫助:單個文件的git] [ 1] [1]:http://stackoverflow.com/questions/6138817/how-to-update-particular-folder-file-from-central-repository-in-git – 2013-02-13 10:30:15

+0

它的工作原理,但我必須非常熟悉新的文件名。 – 2013-02-13 10:52:39

+0

出於好奇,你爲什麼不用這個分支?有開發人員在他自己的m1m2分支上工作,然後開發人員B可以在他的最後建立一個跟蹤分支並拉m1m2併合併到他自己的分支m3m4中? – JosefAssad 2013-02-13 11:49:29

回答

1

您需要將傳入的更改合併到您的工作副本中。爲了做到這一點,只是:

git fetch origin 
git merge origin/master 

爲了做到這一點,你必須先提交或階段,計算機B的局部變化

+0

但合併將在所有項目目錄上工作,我們只需要在./model目錄下。如果開發人員B合併所有項目目錄,那麼在我們的案例中將是災難。 – 2013-02-13 10:39:26

2

開發人員B應該運行

  1. git stash
  2. git pull origin master
  3. git stash apply

行1個藏匿開發工作,所以他們的分支是自由變化的執行拉

線2進行提取,並從遙控器上的主目錄合併之前。這將讓開發者A的變化。

第3行重新申請了開發者B在m3.php和m4.php文件中的工作。

顯然,在git中執行命令時不要包含數字。

+0

git pull會給我衝突從其他項目目錄,現在我們不打算合併一些文件夾。我們只想從這個目錄下取出./model – 2013-02-13 11:02:35

1

我想通了。幾乎一切都很好,除了這個'*'在最後。

從遠程分支機構的文件下載到一些項目的文件夾只添加新文件到這個文件夾的正確方法:

git fetch origin 
git checkout origin/master model/ 
0

你的shell擴展

git的結帳產地/主./model/*

在git看到它之前。這可能是擴展到

git checkout origin/master ./model/m1.php ./model/m2.php ./model/m3.php ./model/m4.php 

,然後你從git的是master缺少model/m3.phpmodel/m3.php錯誤。告訴外殼不擴大你*,像

git checkout origin/master './model/*' 

似乎工作,或只是使用顯式路徑按其他解決方案,如

git checkout origin/master model/