我有一个包含文件和子文件夹的文件夹,我创建了一个分支,我在这里编辑了这个文件夹并实际提交了这个(但还没有与主人合并)。
但是,如果我合并,我想我可能会遇到问题。
假设我的文件夹结构是这样的:
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以删除文件夹,然后在分支中与编辑合并。
这是一种有效/可行的方法吗?
答案 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).