как синхронизировать" теневой " репозиторий git с основным репозиторием "тайно"



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



Как синхронизировать" теневой " репозиторий с главным репозиторием, чтобы главный репозиторий не знал, что это происходит?



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

  • Мой клиент использует bitbucket. Я мог бы дать другому разработчику свой логин bitbucket, но я хотел бы избежать этого.
  • что на самом деле работает, так это то, что я могу открыть файл в главном репозитории, удалить содержимое и затем вставить обновленный код. Тогда я мог бы совершить коммит, и это выглядело бы так, если бы я выполнял работу непосредственно в главном хранилище. Но это отнимает много времени (а времени у меня не так уж много).


Есть ли другой способ, которым я мог бы "тайно" скопировать содержимое файлов из теневого хранилища в основное хранилище? Существует ли linux / osx-команда, которую я мог бы использовать, которая заменяет содержимое файла без удаления и повторного создания файла (который я затем мог бы использовать рекурсивно)? Есть ли git-команда, которая делает это возможным, не оставляя следов доказательств того, что я действительно сделал?

738   2  

2 ответов:

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

rem set Git to use the sub-developer's git repository
set GIT_DIR=/path/to/sub/repository.com

rem verify which repository that you are on
git rev-parse --git-dir

rem pull the sub-developer's latest
git pull

rem merge, commit, change, push, change branches, whatever
rem ... when the code is the way you want it

rem switch to client repository
set GIT_DIR=/path/to/client/repository.com

rem bring main repository up to date
git commit -m"changes brought over from sub-developer"

rem push the updated code to the client repository
git push

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

После моей ошибки в первом ответе я чувствую себя вынужденным попробовать снова.

Попробуйте прочитать в ветке sub developer и сравнить / объединить с main с помощью Git differencing. увидеть в Git помогите конфиг для 'сравнения.внешний". Я использую диффузный.exe и пакетный файл для сопоставления параметров.

Рабочий поток будет выглядеть примерно так.

rem make a remote to the sub
git remote add MYSUB https://path/to/sub/repository.com

rem see what branches are there
git remote show MYSUB

rem get the branch from the subdeveloper
git fetch MYSUB CurBranch:CurBranch

rem view/manually merge just the modified files 
git diff --diff-filter=M MYSUB/CurBranch 

rem cleanup
git branch -D MYSUB/CurBranch
git rm MYSUB

rem push to main site
git push

Это метод, который я использую для передачи ветвей на мою лабораторную машину, через USB-накопитель. Я не пробовал его с удаленным подключением.

Comments

    Ничего не найдено.