2009-07-18 22 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 

应该是一个干净的。