Как go о вставке вновь обнаруженных файлов резервных копий в git репо - PullRequest
0 голосов
/ 19 апреля 2020

Моя проблема заключается в том, что у меня есть довольно большой набор файлов с "версией для перебора", то есть хранящихся вместе с индикатором даты, которые также распределяются по различным носителям данных.

После преодоления моего отвращения к версии контроль, я хотел бы поместить все эти файлы в репо git, который позволяет хронологическое восстановление снимков.

Вопросы:

  • предположим, у меня есть git репо, содержащее снимки, соответствующие датам A <- <strong>B <- <strong>E <- <strong>F в хронологическом порядке, и я обнаруживаю снимок C на запыленном носителе данных; как мне go добавить spapshot C, чтобы он напоминал репо git, содержать A <- <strong>B <- <strong>C <- <strong>E <- <strong>F

  • как добавить файл f к снимку B , который уже присутствует в других представленных снимках?

В идеале сгенерированное репо git должно создавать впечатление, что все представления происходили в хронологическом порядке, т.е. в какой-то момент, когда я уверен, что все находится в репо, я хочу удалить всю информацию о порядке добавления снимков / файлов в репозиторий git; Есть ли также решение для этого?

Поскольку я не git Wizzard, я был бы признателен за руки решения.

1 Ответ

1 голос
/ 19 апреля 2020

Итак, вы хотите разделить коммит C на середину истории после B:

  1. Создайте название ветки, чтобы удержать ваше место, и проверьте его.

  2. Сброс до B.

  3. Добавьте вновь обнаруженные файлы и зафиксируйте их как C.

  4. Перебазировать старую ветку поверх новой.


Вот пример. Я подготовил образец репо; вот журнал:

commit 740dc8c1dd312d93c63f8edd4dfb91503f7f66df (HEAD -> master)

    F

 F (new) | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit d0b2924ad33e4d7f2898eb8707bbdf016f7adf8a

    E

 E (new) | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit a932a794ceb6df01483490410d7a3e538f556876

    B

 B (new) | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit 85d3a01ee94427729b745078c8c06d8b89a6af52

    A

 A (new) | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

Итак, читая снизу вверх, я добавил файл A и вызвал этот коммит A, добавил файл B и вызвал этот коммит B, затем то же самое для E и для F.

Теперь представьте, что мы обнаруживаем существование файла C. Я разделю в цепочке истории коммит, который добавляет C:

git branch holdMyPlace
git checkout holdMyPlace
git reset --hard a932a794 # go back to B
touch C
git add .
git commit -m"C"
git rebase holdMyPlace master

Вот журнал сейчас:

commit 882d6e170101a1a9cb0462c5eb1b6103470ab07c (HEAD -> master)

    F

 F (new) | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit 57e9a01b94f48741b70ecfea32492659cef4aeb3

    E

 E (new) | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit c5b41b74b2dc0a36bef17c01ed581eda585ce103 (holdMyPlace)

    C

 C (new) | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit a932a794ceb6df01483490410d7a3e538f556876

    B

 B (new) | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit 85d3a01ee94427729b745078c8c06d8b89a6af52

    A

 A (new) | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

Это именно та история, которую вы хотели: она выглядит как C было добавлено после B, а E и F были добавлены после C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...