Использование git и GitHub кажется большой дополнительной работой, я смотрю на это неправильно? - PullRequest
1 голос
/ 29 июня 2011

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

git add file1.php
git add file2.php
git commit -m 'updated file1 & 2'
git push origin master

Затем после этого в репозитории на GitHub, SSH на моем сервере, перейдите в правильный каталог и выполните:

git pull

каждый раз, когда я делаю какие-либо изменения в коде. Это применяется для редактирования чего-то вроде Coda, а затем просто нажмите команду + S.

Есть ли лучший (возможно, более автоматизированный) способ сделать это? Я знаю, что есть приложение GitHub для Mac, которое довольно неплохо и помогает с первой частью, но мне все еще нужно войти в SSH, чтобы обновить что-либо, что может стать утомительным после нескольких десятков обновлений днем.

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

Ответы [ 5 ]

7 голосов
/ 29 июня 2011

Я настоятельно рекомендую вам прочитать книгу ProGit http://progit.org/

Нет, есть намного более быстрые способы сделать это.

После добавления файлов вы можете просто git commit -a -m "Change descriptions"

Чтобы добавить файлы, вы можете git add ., который будет рекурсивно добавлять все не проигнорированные файлы.

Если у вас установлены отношения отслеживания с вашими ветвями, все, что вам нужноскажем git push.Только если кто-то вносит изменения, вам нужно git pull

Конечно, есть много IDE, которые помогут управлять git и git guis различных пород.https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools

Но на самом деле есть только несколько команд, которые нужно знать, чтобы сделать это из командной строки.

  • Обычные команды

Эти команды вы будете использовать каждый день

git pull --rebase    # Getting changes other people made.  Using rebase is my personal preference
git commit -a -m msg # Committing your work
git push             # Sharing changes with others
git status           # Finding out what you have not committed/pushed
git diff             # Finding out what changed
  • Случайные команды

Эти команды вы будете использовать только при настройке или редко

git init                 # Set up a new git repo
git clone URL            # Set up a git repo from the master source
git add <file/directory> # Mark a change specifically for commit

Я хотел бы повторить, что git не система веб-развертывания.Однако, если вы пытаетесь сделать что-то подобное, некоторые люди добились успеха с http://toroid.org/ams/git-website-howto

3 голосов
/ 29 июня 2011

Вам не нужно выполнять git pull везде, где у вас есть локальная ветвь после каждого отдельного коммита, git pull с удовольствием вытянет несколько изменений.Также вы можете использовать git add . или git commit -a, чтобы добавить / зафиксировать все изменения без перехода на git add file{1,2}.php dir/otherfile.txt или эквивалентный.Просто убедитесь, что вы используете git status до того, как по ошибке не добавите и не зафиксируете то, что вам не нужно.

Смысл использования git - иметь контроль версийЭто чрезвычайно надежный инструмент для управления исходным кодом, но он не предназначен для использования только в качестве механизма передачи файлов.Если вам нужен / нужен только FTP, используйте (S) FTP.

2 голосов
/ 29 июня 2011

Если вы имеете достаточный контроль над вашим сервером, вы можете разместить свой собственный центральный репозиторий на своем сервере.(Если нет, возможно, вы все равно сможете сделать следующее.)

Оттуда вы можете настроить перехваты после получения, чтобы выполнить извлечение или безопасное копирование (scp) в ваш активный раздел / сервер автоматически, Gitolite может помочь с проблемами безопасности, также как и аутентификация по ключу SSH.

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

Наконец, в дополнение к рекомендациям Сета, я также добавляю Git Immersion в ваш список чтения.Это пошаговое руководство, помогающее понять, как работает Git и что вы можете в нем сделать.

1 голос
/ 29 июня 2011

Использование git и GitHub кажется большой дополнительной работой, я смотрю на это неправильно?

Я буду спорить "да, вы смотрите на это неправильно", и ядумаю, что @ комментарий Мата имеет правильную идею.Git - это система контроля версий.Тот факт, что вы также можете использовать его в качестве инструмента развертывания, может стать хорошим бонусом, когда он уже является частью вашего рабочего процесса.вы создаете код (или любую другую форму цифровой работы), и пытаться делать это без истории ваших изменений и возможности управлять параллельными ветвями - это безумие.Однако, если мне нужно рассказать вам о важности включения контроля версий в ваш рабочий процесс, нет смысла беспокоиться о том, насколько хорошо git работает как механизм развертывания.

0 голосов
/ 29 июня 2011

Другие ответы касались эффективности с командной строкой - от Coda, как и вы, потребовалось немного времени, чтобы привыкнуть, но как только вы разберетесь с этим, вам это понравится (особенно когда вы нужно сделать сброс).

Вот как я недавно развернул развертывание DVCS, выполнив (по существу) то, что вы есть. Единственное отличие состоит в том, что я использую gitolite вместо GitHub по соображениям безопасности.

На центральном git-сервере есть репозиторий - в ветке master я проверю установку vanilla, если это проект с открытым исходным кодом или последний работающий / стабильный код, который у меня есть. Затем я создаю ветку для каждого этапа - так что в вашем случае есть ветка для Live / Production и вашей локальной среды разработки.

Я делаю свою работу из ветки dev, создавая функциональные ветки или исправления и объединяя их обратно. Когда все станет стабильно, я сливаюсь с веткой prod. Затем я использую хук на основе SSH, чтобы подключиться к удаленному серверу и инициировать извлечение, которое является альтернативой вашему PHP-сценарию и более безопасным.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...