Чи добре копіювати (не клонувати) сховище git за допомогою основних команд Unix?


22

Я досить новачок у використанні git, і мені було цікаво, чи нормально скопіювати сховище Git із загальними командами UNIX (наприклад, cpчи tar/ untag), а не через git clone.

Я знаходжусь у ситуації, коли у мене є виробниче середовище (віртуальний пітон), що якийсь код перевіряється в git в ньому. Мені цікаво, чи погана ідея з точки зору git копіювати все середовище за допомогою того tarчи іншого. Цей підхід був би зручним для швидкої копії бази / середовища.

Мене турбує те, що, можливо, git clone асоціює якийсь унікальний ідентифікатор з робочою копією, яка може викликати конфлікти, якщо існують дві робочі копії, де одна була скопійована файлова система з іншої.


Нічого собі, я опинився в цій ситуації, тому що я мав деякі файли під контролем джерела, а деякі ні, і у мене були дозволи на збереження файлів, які потрібно було зберегти. Я радий, що ти задав це питання.
Джо C

Відповіді:


21

Це абсолютно добре.

git зберігає всю свою історію, комісії тощо на сайті - це основна властивість DCVS.

Технічно кажучи, він gitможе працювати чудово із скопійованими сховищами, що працюють скрізь, тому що вся суть DCVS полягає в тому, що він не повинен знати, що відбувається поза будь-якого даного сховища , а насправді - ні, якщо ви цього не скажете .

Цей принцип діє і тут.


1
Я розумію, що клонований сховище буде містити посилання назад до батьківського. Використання команди копіювання ОС не створить це посилання.
Тоні

@Tony True, але ви можете видалити це посилання, скориставшись тим git remote remove origin, що Git не може використовувати батьківське сховище як висхідний потік.
new123456

2

Ви повинні мати змогу скопіювати весь робочий каталог у будь-яке інше місце у вашій системі, щоб він продовжував функціонувати як звичайно під час використання Git, Hg або SVN. Я не можу коментувати інші SCM.


0

Це більш незвичний випадок використання, але ...

Я бачив, як repoутиліта робить символьні посилання в .gitкаталозі. У такому випадку, коли ви робите копію, ви хочете переконатися, що ви переносите символічні посилання. Наприклад:

cp -r -L <source-repo-dir> <destination-repo-dir>

0

Це нормально, але якщо ви збираєтеся поділитися репортажем з кимось іншим, будь ласка, врахуйте наступне :

  • У вашому configфайлі можуть бути віддалені інші люди, можливо, це не хвилює
  • У вашій logsпапці будуть посилання, якими ви, можливо, не хочете ділитися. Git чудово допомагає вам робити неприємні речі на своєму комп’ютері, поки не будете задоволені кінцевим результатом, а потім натисніть його на пульт дистанційного управління (періодично). Деякі з цієї неприємної історії можуть бути у вашому релозі, тому краще не ділитися ним IMHO.
  • Ваш info/excludeфайл може ігнорувати деякі файли, які ви лише бажаєте проігнорувати.
  • Ви також можете мати гачки, гілки та купу інших речей, які є особистими, і ви віддаєте перевагу не ділитися ...
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.