我有一个包含文件 A、B 和 C 的 git 存储库(我们称之为“默认”)。(我实际上用 svn 更新了其他人的修改。)

我将该存储库克隆到“defaultmods”并添加文件 D、E 和 F。

我注意到有人更新了 A 和 C 并添加了文件 G,所以我想要更新这些文件并想要新文件 (G)。

我转到我的“defaultmods”存储库并提交我的更改。然后从默认执行 git pull 。它会删除我的文件(D、E 和 F),并为我留下一个精确的默认工作副本。

我想要的是将我的东西与更新的东西 merge ,给我 A、B、C、D、E、F 和 G(带有更新的 A 和 C 以及新的 G 文件)。

我错过了什么奇怪的东西吗?它不是这样工作的吗?

最佳答案

一定有一些东西你遗漏了,因为它确实值得这样:

$ 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

关于Git pull 不断删除我添加的所有内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1146735/

10-14 17:15
查看更多