0

我有一个包含文件和子文件夹的文件夹,我创建了一个分支,我一直在编辑这个文件夹并实际提交了这个(但尚未与主文件夹合并)。

但是,我认为如果我合并可能会遇到问题。

假设我的文件夹结构是这样的:

Folder 
  - Sub-Folder A 
    - File A1
    - File A2
    - File A3
  - Sub-Folder B
    - File B1
    - File B2
    - File B3

现在我已经编辑成为:

Folder 
  - Sub-Folder A 
    - File A2 (Edited)
    - File A3
    - File A4
  - Sub-Folder C
    - File C1
    - File C2
    - File C3

IE,文件A1已删除,文件A2已编辑,新文件A4,子文件夹B和所有内容已删除,新子文件夹C。

我担心提交似乎只是添加了新的和编辑的东西,并且当我合并时,删除/删除的东西仍然存在。

是这样吗?如果是这样我该如何解决?

我在想我应该从 master 创建一个临时分支, git rm -f 文件夹,将其合并回 master 以删除文件夹,然后将编辑合并到分支中。

这是一种有效/可行的方法吗?

4

2 回答 2

1

您需要告诉 git 您已删除的文件。如果您执行 git status,它应该列出:A/A1、B/B1、B/B2、B/B3 已被删除。在本地重新创建了您的情况,然后删除了文件, git status 给出:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   A/A4
#   new file:   C/C1
#   new file:   C/C2
#   new file:   C/C3
#
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    A/A1
#   deleted:    B/B1
#   deleted:    B/B2
#   deleted:    B/B3

如果您对 A/A1、B/B1、B/B2 和 B/B3 中的每一个执行“git rm”(尽管文件不再存在于磁盘上)并提交这些更改,那么一切都应该没问题。

这有帮助吗?让我知道是否需要澄清。

于 2012-06-19T20:37:18.087 回答
0

您的主人的工作/更改分支是一个参考。如果您在工作分支中删除、更改、重命名并提交任何内容。Git 将以适当的方式合并所有内容。但重要的是你的工作和主分支喊我干净。

要进行清理,您只需要“git add”。和“git提交”。没有必要使用“git rm”进行正确的合并。

git status 像这样喊,在这个例子中我在我的删除分支中工作):

git status
# On branch remove
nothing to commit (working directory clean)

现在您可以切换到主分支:

git checkout master

检查主人是否干净:

git status
# On branch master
nothing to commit (working directory clean)

现在是合并到你的主分支的时候了

git merge remove
Updating 7989dd1..d28cdee
Fast-forward
 {B => A}/demo2 |    0
 1 files changed, 0 insertions(+), 0 deletions(-)
 rename {B => A}/demo2 (100%)

git status say 有相同的输出(合并前)

git status
# On branch master
nothing to commit (working directory clean)

如果你愿意,你可以踢旧分支:

git branch -d remove
Deleted branch remove (was d28cdee).
于 2012-06-19T22:20:47.570 回答