所以,几个星期前我开始使用Git并遇到一个问题,我似乎找不到合适的答案。实际上问题很简单。
但是,合并不会删除文件,我仍然将它们都放在Y中。但是,当我在SourceTree中执行提交日志时,我可以清楚地看到50个文件被删除的变更集。不合并删除文件?
答案 0 :(得分:0)
这听起来像是一个缓存问题。您拥有Y中的所有文件,但随后在X中将其删除。无论出于何种原因,文件添加和删除往往会产生类似这样的怪异内容。
我尝试对要删除的每个文件进行循环,然后使用
将其从缓存中删除 git rm --cached <file>
下面是一个ruby脚本,假设你在Y分支(未经测试),可能会为你做这个:
#! /usr/bin/ruby
diff = `git diff --name-status X` #this will give you the name and status as (A, M, D, etc.)
# The output will look like this:
# A \t added_file
# D \t deleted_file
# M \t modified_file
# etc.
diff = diff.split #splits on new lines
deleted_files = diff.map do |entry|
status_name_pair = entry.split('\t')
return status_name_pair.last if status_name_pair.first == 'D'
end
deleted_files.each do |filename|
`git rm --cached #{filename}`
end
或者如果您删除的所有文件都在一个目录中,您可以这样做:
git rm --cached <dir>