Удалить каталог в иерархии при сохранении статуса в git - PullRequest
1 голос
/ 07 сентября 2011

У меня есть хранилище вроде

  /file1
  /file2
  /dir_a/file3
  /dir_a/file4
  ...

как я могу удалить dir_a и переместить все его содержимое на один каталог вверх (в данном случае на /), сохраняя при этом состояние всех файлов (не отслеженных, измененных, но не промежуточных), которые могут содержаться в / но также в dir_a?

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

git-mv должен справиться с этим. Используйте git mv -k dir_a/* ., и статус постановки / постановки будет сохранен. Это не будет перемещать неотслеживаемые файлы, поэтому используйте mv dir_a/* . впоследствии.

0 голосов
/ 07 сентября 2011
# shelving unstaged stuff
git stash
# moving content from /dir_a to /
# that should suffice as git doesn't track directories but only files
git status -uno -s | grep "src_dir" | awk '{print "-n " $2 " dest_dir"}' | xargs -n3 git mv -f
# than move what remains in source dir manually:
mv src_dir/* dest_dir
# resurrect unstaged changes
git stash pop

Вторая строка могла бы быть лучше, но у меня это сработало.

...