LINUX.ORG.RU

Разница между git pull и delete+download from github

 ,


0

1

Предыстория. Есть каталог, в который я доставляю непрерывно (делаю continuous delivery). Есть два варианта сложить туда файлы:

  • Вариант первый: Я удаляю все старые файлы из него и кладу свежескачанные из репозитория git.
  • Второй вариант: git pull в эту папку.

Я консультировался с разработчиком и получил ответ такого плана: вместо удаления ты хочешь/нужно/(надеюсь ты имелл ввиду) git pull. Это важно т.к. там лежат некие конфигурационные файлы, которые не лежат в github. И если мы удалим все файлы, то нам надо будет сохранять эти файлы где-то еще и копировать их в папку deploy прежде чем будет запускаться скрипт установки всей этой штуки.

Вопросы:

  • В чем разница между git pull и delete+download from github или технически это одно и то же?
  • Git pull - я так понимаю, это типа как сделать репликацию удаленного репозитория в локальный? Т.е. оно сделатся локально таким же как лежит удаленно на централизованном хранилище, засинхронизируется в одну сторону из удаленного в локальное, правильно? Или. Стянет из удаленного в локального новые файлы и добавит их, обновит до новых версий существующие файлы, удалит локально файлы, если в удаленном их удалили, при этом останутся файлы файлы, которые доложили руками (например, файлы о которых мне говорил разработчик).

И если мы удалим все файлы, то нам надо будет сохранять эти файлы где-то еще и копировать их в папку deploy прежде чем будет запускаться скрипт установки всей этой штуки.

WRONG! use .gitignore, Luke!

gh0stwizard ★★★★★ ()
Ответ на: комментарий от gh0stwizard

А если фишка в том, что это приватные данные типа пароли или номера банковских карт? Нам же не нужно это на гитхабе в публичном доступе, лол.

dopedopedope ()

В чем разница между git pull и delete+download from github или технически это одно и то же?

delete+download аля git clone скопировать репозиторий себе

git pull синхронизирвать свой репозиторий с удалённым

Dron ★★★★★ ()
Ответ на: комментарий от dopedopedope

А если фишка в том, что это приватные данные типа пароли или номера банковских карт? Нам же не нужно это на гитхабе в публичном доступе, лол.

echo «*.pass» >> .gitignore

Все файлы с расширением .pass не попадут на гитхаб при git push

Dron ★★★★★ ()
Ответ на: комментарий от dopedopedope

И? Да я могу хранить пароли, карты и т.д. в публичной репе с корректно прописанными .gitignore. Естественно, кто-то должен контролировать изменения это файла. И ни при каких условиях эти файлы не закоммитятся/не удалятся. В этом смысл игнора.

Внешние репы в чьей компетенции? Вашей или вообще левых людей?

gh0stwizard ★★★★★ ()
Ответ на: комментарий от dopedopedope

Просто. Из мастер репозитория берутся последние коммиты и накладываются на твою локальную репу. В итоге они становятся идентичны.

Dron ★★★★★ ()
Ответ на: комментарий от dopedopedope

Git pull - я так понимаю, это типа как сделать репликацию удаленного репозитория в локальный? Т.е. оно сделатся локально таким же как лежит удаленно на централизованном хранилище, засинхронизируется в одну сторону из удаленного в локальное, правильно?

Да.

Dron ★★★★★ ()
Ответ на: комментарий от anTaRes

ну да, конечно

конечно да.

что будет после git clone ... ; ты склонируешь репу
; echo 'some data' > new_file.txt создашь файлик с текстом
git pull забёрёшь изменения с мастер сервера (если они есть)

ты не сделал git add new_file.txt; git commit -m «Я добавил файло гы ::)»

Так что репы одинаковы.

А если хочешь чтобы теперь и твой новый файлик появился в мастере после вверхунаписанного скажи git push и ты отправишь свои изменения в репе в мастер репу и они опять близнецы.

Dron ★★★★★ ()
Ответ на: комментарий от Dron

Чета я запутался. Столько много всего умного написано. Есть папка для деплоя. Я не пишу в нее код. Я в нее накатываю git pull когда появляются новые коммиты в центарльном репо.

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

Допустим, я потом накатил git pull еще пару раз, обновил.

Те самые два файла, добавленные мною затрутся или нет?

dopedopedope ()

git pull надеюсь после коммита делается?

Зачем тебе этот гемор - осиль git hooks и git bare

anonymous ()
Ответ на: комментарий от dopedopedope
git clone #берёт удалённую репу и копирует тебе её локально.

git pull  #забирает изменения из удалённой репы к тебе в локальную

git push  #отправляет из твоей локальной репы изменения в удалённую


если добавил файл в локальную репу и хочешь чтобы он появился на удалённой то

git add filename.txt #говоришь git`у что теперь он должен следить за этим файлом и этот файл теперь часть проекта.

теперь допустим ты изменил файл filename.txt

echo "awesome text" >> filename.txt

и это изменение надо зафиксировать тогда делаешь коммит

git commit -m "Я создал файл и добавил туда текст" 

теперь отправляешь изменения из локальной репы в удалённую

git push

твой напарник сделал у себя git pull и увидел новый файл звонит тебе и говорит "в файле должны быть номера телефонов, забыл?", ты такой "Аааа блин забыл сейчас будут"

вписываешь номера телефонов в filename.txt сохраняешь файл и снова

git commit -m "добавил номера телефонов" #оформляешь изменения
git push #заносишь зменения в удалённую репу.

тут друган опять звонит и говорит "ты неверно указал формат надо не 8 а +7, я исправил", ты такой " надо было уточнять сам виноват" и забираешь изменения которые сделал твой напарник

git pull

и так до бесконечности.

Dron ★★★★★ ()
Последнее исправление: Dron (всего исправлений: 1)
Ответ на: комментарий от dopedopedope

Те самые два файла, добавленные мною затрутся или нет?

нет

Dron ★★★★★ ()
Ответ на: комментарий от Dron

Да. Тоже подумал об этом. Спасибо за ответы и за шпаргалку. Сохраню. :)

Спасибо всем за ответы!!!

dopedopedope ()
Ответ на: комментарий от Dron

если добавил файл в локальную репу и хочешь чтобы он появился на удалённой то
git add filename.txt #говоришь git`у что теперь он должен следить за этим файлом и этот файл теперь часть проекта.
теперь допустим ты изменил файл filename.txt
echo «awesome text» >> filename.txt
и это изменение надо зафиксировать тогда делаешь коммит
git commit -m «Я создал файл и добавил туда текст»

Ответ неверный, git commmit в этом случае добавит пустой filename.txt без строки «awesome text»

В общем как ни крути, придётся почитать что-то типа Pro Git

anonymous ()
Ответ на: комментарий от Dron

Да, ошибся надо git commit -a -m «comment»

Стоит уточнить что git commit -a автоматически добавляет в индекс все изменённые и удалённые файлы, а не только последний отредактированный.

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

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.