我有一个应用补丁的脚本,有时它因任何原因失败(在我的情况下是文件权限)。我想在修复问题后再次运行脚本,但是之前的git apply尝试可能会有剩余的文件。
我不想运行git clean,这会丢掉我想保留的其他文件。我只想替换那些受补丁影响的未跟踪文件。
我的剧本:
for SITE in $SITES
do
echo "Updating $SITE ..."
cd /home/klausi/web/$SITE
chmod u+w sites/default
git fetch
git reset --hard origin/master
git apply --index /home/klausi/web/7.33.patch
git commit -m "Updated Drupal core to 7.33."
git push
done
当我再次运行时,我得到:
error: misc/throbber-active.gif: already exists in working directory
error: misc/throbber-inactive.png: already exists in working directory
error: modules/simpletest/tests/themes/test_theme/templates/node--1.tpl.php: already exists in working directory
所以git apply --force就好了。
答案 0 :(得分:0)
您可以尝试几种选择。
git apply --check
而不是应用修补程序时,请查看是否可以应用该修补程序,如果不能中止它。如果检查恢复正常,请继续正常运行git apply
git apply --cached
直接应用于索引但保持工作副本不变。如果失败则只清除索引。如果它可以继续并提交它。