Git更新/替换文件夹和内容

时间:2012-06-19 20:28:56

标签: git

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

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

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

您需要告诉git您已删除的文件。如果您执行git状态,则应列出: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'(尽管磁盘上不再存在文件)并提交这些更改,那么它应该都是细

这有帮助吗?如果我需要澄清,请告诉我。

答案 1 :(得分:0)

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

清理你只需要“git add”。和“git commit”。没有必要使用“git rm”进行适当的合并。

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

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 shout具有相同的输出(合并前)

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

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

git branch -d remove
Deleted branch remove (was d28cdee).