Git pull продолжает удалять все, что я добавил - PullRequest
3 голосов
/ 18 июля 2009

У меня есть git-репо (назовем его «по умолчанию») с файлами A, B и C. (Я фактически обновляю модификации других с помощью svn.)

Я клонирую репо в «defaultmods» и добавляю файлы D, E и F.

Я заметил, что кто-то обновил A и C и добавил файл G, поэтому я хочу, чтобы эти файлы были обновлены, и хочу новый файл (G).

Я захожу в репо "defaultmods" и фиксирую свои изменения. Затем сделайте git pull по умолчанию. Он удаляет мои файлы (D, E и F) и оставляет мне точную рабочую копию по умолчанию.

Что я хочу, так это объединить мои вещи с обновленными вещами, давая мне A, B, C, D, E, F и G (с обновленными A и C и новым G-файлом).

Я что-то упустил? Разве это не работает таким образом?

Ответы [ 3 ]

2 голосов
/ 18 июля 2009

Должно быть, вы что-то упускаете, потому что оно действительно стоит так:

$ 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
2 голосов
/ 18 июля 2009

Вы хотите: A, C и G. Do:

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 в default? Есть:

cd default
git merge ../defaultmods

Должен быть чистым.

1 голос
/ 18 июля 2009

У меня есть git-репо (давайте назовем это по умолчанию) с файлами A, B, C. (I на самом деле обновить другие модификации со свн)

Итак, у нас есть 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 будет позади, хотя. Это нормально, но может вызвать конфликты слияний, если вы, ребята, сотрудничаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...