Это проблема, которую трудно описать (и, конечно, трудно найти ответ), наиболее близким из того, что я нашел, является перемещение двух уже синхронизированных деревьев каталогов в приложение git

У меня есть две копии текстовых файлов моих документов, одна на настольном компьютере с Linux, другая на ноутбуке. Ранее я периодически запускал rsync чтобы синхронизировать эти файлы в обоих направлениях. Теперь я хотел бы перенести управление этой проблемой на git , но мне было интересно, каким будет самый чистый способ начать.

Я разместил файлы на своем рабочем столе на удаленном git сервере, следуя инструкциям в Интернете. Это было хорошо. Теперь проблема для меня на стороне ноутбука. Т.е. у меня уже есть наполовину синхронизированные файлы и папки на моем ноутбуке, и я не думаю, что обычно предлагаемый git clone будет правильным ответом на мою ситуацию, не так ли?

Предположим, что файлы и папки на моем ноутбуке уже не синхронизированы с обоими. Каковы были бы правильные шаги, чтобы вернуть мои текстовые файлы документа обратно в синхронизацию, используя git с моим уже настроенным удаленным git ?

3 ответа3

1

Посмотрите ответ, почему использование git для синхронизации не очень хорошая идея.

Вот тестовый пример, который показывает, как синхронизировать git с двумя уже заполненными каталогами.

cd /tmp
mkdir foo
cd foo
git init
echo "hello" > README.md
git add .
git commit -m "initial commit"
git remote add origin git@github.com:<myUser>/test.git
git push -u origin master

На данный момент у меня есть локальный репозиторий Git, который синхронизирован с моим сервером Git. Теперь я создам новую копию файла REDME.md, как если бы он был rsyn-ed на другой компьютер

cd /tmp
mkdir bar
cd bar
git init
echo "hello" > README.md
git add .
git commit -m "initial commit"
git remote add origin git@github.com:<myUser>/test.git
git push -u origin master

Поскольку бар позади мастера, я не могу толкнуть.

To git@github.com:<myUser>/test.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:<myUser>/test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Я пытался сделать git pull. Git объединил репозиторий, но не загрузил файл, потому что он уже существует локально.

мастер происхождения git pull От github.com:/test * ветка
master -> FETCH_HEAD Слияние, выполненное по «рекурсивной» стратегии.

Вы также должны всегда помнить о необходимости выполнить git pull перед изменением любых файлов в каждой системе, иначе вы получите конфликты, которые необходимо разрешить.

0

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

0

Похоже, использование git в качестве посредника синхронизации было бы идеальным решением. Я бы рекомендовал вам избегать использования git в качестве инструмента синхронизации по следующим причинам.

Git никогда не собирался работать таким образом.

Git медленно работает с большими файлами (2)

Git не синхронизирует пустые папки

Git не отслеживает метаданные файловой системы

Git не отслеживает другие проекты git (любая папка с папкой .git внутри)

Цитата с сайта GitHubs

Хотя кажется, что Git станет отличным инструментом резервного копирования, Git на самом деле не работает для резервного копирования в долгосрочной перспективе.

https://help.github.com/articles/what-is-my-disk-quota

Если вы когда-либо работали с репо с тысячами коммитов, git работает очень медленно. Dropbox или rsync станут лучшим инструментом для работы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .