2009-07-18 44 views
3

我有一個混帳回購協議(姑且稱之爲「默認」)與文件A,B和C(其實我更新別人的修改與SVN)Git的拉力,使刪去我已經添加

我克隆回購「defaultmods」並添加文件D,E和F.

我注意到有人更新A和C並添加文件G,所以我希望這些文件更新,並希望新文件(G)。

我去我的「defaultmods」回購並提交我的更改。然後做一個默認的git pull。它刪除我的文件(D,E和F),並給我一個默認的確切工作副本。

我想要的是合併我的東西和更新的東西給我A,B,C,D,E,F和G(帶有更新的A和C以及新的G文件)。

我錯過了一些奇怪的東西嗎?這種方式不行嗎?

+0

感謝大家的全力幫助。我通過刪除所有內容,克隆它,然後應對我的更改來實現它。當我開始搞砸索引時,我一定做了一些事情。現在她工作得很好。 – that0n3guy 2009-07-20 14:39:41

回答

2

必須有你留下了一些東西,因爲它,其實,值得這樣:

$ mkdir default 
$ cd default/ 
$ git init 
Initialized empty Git repository in /Users/jim/Desktop/default/.git/ 
$ echo "A" > A; echo "B" > B; echo "C" > C 
$ git add . && git commit -m "Initial commit" 
[master (root-commit) 318f655] Initial commit 
3 files changed, 3 insertions(+), 0 deletions(-) 
create mode 100644 A 
create mode 100644 B 
create mode 100644 C 
$ cd .. 
$ git clone ./default ./defaultmods 
Initialized empty Git repository in /Users/jim/Desktop/defaultmods/.git/ 
$ cd defaultmods/ 
$ echo "D" > D; echo "E" > E; echo "F" > F 
$ cd ../default 
$ echo "A, updated" > A; echo "C, updated" > C; echo "G" > G 
$ git add . && git commit -m "Upstream update" 
[master 4485f72] Upstream update 
3 files changed, 3 insertions(+), 2 deletions(-) 
create mode 100644 G 
$ cd ../defaultmods/ 
$ git add . && git commit -m "Mods commit" 
[master a393e70] Mods commit 
3 files changed, 3 insertions(+), 0 deletions(-) 
create mode 100644 D 
create mode 100644 E 
create mode 100644 F 
$ git pull 
remote: Counting objects: 8, done. 
remote: Compressing objects: 100% (2/2), done. 
remote: Total 5 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (5/5), done. 
From /Users/jim/Desktop/./default 
    318f655..4485f72 master  -> origin/master 
Merge made by recursive. 
A | 2 +- 
C | 2 +- 
G | 1 + 
3 files changed, 3 insertions(+), 2 deletions(-) 
create mode 100644 G 
$ cat * 
A, updated 
B 
C, updated 
D 
E 
F 
G 
1

我有一個混帳回購協議(可以稱之爲 默認值)與文件A,B,C(我 實際更新他人修改 與SVN)

因此,我們有R1:{ A,B,C}

我克隆了一個回購協議defaultmods和 添加文件d,E和F ...

所以,你做了:

git add .  
git commit -a -m "Added D, E, and F" 

現在我們有R2:{A,B,C,d,E,F} 所以,現在一切都致力於和快樂。現在

,你應該做一些效果:

git pull /path/to/R1 master 

拉R1所做的改變。

現在,R2:{A,B,C,D,E,F,G}隨着A和C的變化而變化。 R1將會落伍。這很好,但如果你們合作,可能會導致潛在的合併衝突。

2

你想:A,C和G務必:

cd default 
git pull [wherever A, C and G are located] 
[resolve merges] 

你現在有A,C和G.想在defaultmods中使用它嗎?做:

cd defaultmods 
git rebase ../default 
[resolve merges] 

決定在這一點上,你想合併defaultmods到默認?做:

cd default 
git merge ../defaultmods 

應該是一個乾淨的。