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 - я так понимаю, это типа как сделать репликацию удаленного репозитория в локальный? Т.е. оно сделатся локально таким же как лежит удаленно на централизованном хранилище, засинхронизируется в одну сторону из удаленного в локальное, правильно? Или. Стянет из удаленного в локального новые файлы и добавит их, обновит до новых версий существующие файлы, удалит локально файлы, если в удаленном их удалили, при этом останутся файлы файлы, которые доложили руками (например, файлы о которых мне говорил разработчик).


Последнее исправление: dopedopedope (всего исправлений: 8)

И если мы удалим все файлы, то нам надо будет сохранять эти файлы где-то еще и копировать их в папку 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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.