Git
TODO!
клонувати репозиторій
git clone git@github.com:NICKNAME/REP.git
Також можна змінювати назву директорії проекту локально, налаштування репозиторію та сам локальний репозиторій не злетять - всі ці речі зберігаються в директорії .git, за назвою директорії проекту git не стежить, важливі лише зміни самих файлів у робочій директорії.
А взагалі можна відразу клонувати в потрібну вам директорію, на кшталт git clone https://site.com site_from_github
перегляд віддалених репозиторіїв
git remote
origin
Если вы клонировали репозиторий, то увидите как минимум origin – имя по умолчанию, которое Git дает серверу, с которого производилось клонирование. Можно также указать ключ -v, чтобы просмотреть адреса для чтения и записи, привязанные к репозиторию:
git remote -v
origin git@github.com:olexsyn/e-note.git (fetch) origin git@github.com:olexsyn/e-note.git (push)
добавить отдаленный репозиторий и присвоить ему имя (shortname)
git remote add SHORTNAME URL
git remote add e-note git@github.com:olexsyn/e-note.git
Теперь вместо указания полного пути мы можем использовать ‘e-note’.
получение изменений с сервера
git fetch origin
Команда git fetch забирает данные в ваш локальный репозиторий, но не сливает их с какими-либо вашими наработками и не модифицирует то, над чем вы работаете в данный момент. Вам необходимо вручную слить эти данные с вашими, когда вы будете готовы.
Команда git pull, как правило, извлекает (fetch) данные с сервера и автоматически пытается слить (merge) их с кодом, над которым вы в данный момент работаете.
отправка изменений на сервер
Когда вы хотите поделиться своими наработками, вам необходимо отправить их в удаленный репозиторий.
git push REMOTE-NAME BRANCH-NAME
Чтобы отправить вашу ветку main на сервер origin (клонирование обычно настраивает оба этих имени автоматически), вы можете выполнить следующую команду для отправки ваших коммитов:
git push origin main
Сокращенный вывод статуса
-s или --short
git status -s
M README MM Rakefile A lib/git.rb M lib/simplegit.rb ?? LICENSE.txt
В выводе два столбца: в левом - статус, в правом - (не)модифицирован
??- новые неотслеживаемые файлыA·- файлы добавленные в отслеживаемые·M- модифицирован и НЕ проиндексированM·- модифицирован и проиндексированMM- модифицирован, проиндексирован и еще раз модифицирован, т.е. на данный момент у него есть изменения которые попадут в коммит и те которые не попадут
git add file1.ext file2.ext ...
git add --all
Коммит
git commit -m 'Commit comment'
Добавить файл(ы) в последний коммит
Сначала добавляем в индекс файлы, которые необходимо присоединить к последнему коммиту, затем выполнить команду commit:
git add --all git commit --amend --no-edit
--amend- при использовании этого ключа, на самом деле удаляется последний коммит и создается новый. Поэтому нельзя выполнять--amendдля коммитов, которые уже были отправлены на удаленный репозиторий (для которых был выполненgit push).--no-edit- позволяет оставить текущей комментарий к коммиту без изменений
Если необходимо также изменить и комментарий, то:
git commit -m 'New commit comment' --amend
Просмотр истории коммитов
git log git log --stat
TODO!
git commit -m "description" filename.ext |
коммит только одного файла |
Просмотр индексированных и неиндексированных изменений
git diff git diff --staged git diff --cached
Выбор программы для сравнения
Посмотреть, что уже установлено, и что можно можно установить:
git difftool --tool-help
Установить для git программу сравнения, например, meld
git difftool --tool=meld
Принудительно обновить отдаленный репозиторий:
git push -f origin master
! Но, следует понимать, что на сервере затрутся все изменения в файлах, которые были сделаны после последнего git push, даже если ты отправляешь всего один файл.
Книга Pro Git
- Запись изменений в репозиторий
- Игнорирование файлов см. также .gitignore templates
- Удаление больших объектов из истории
- Работа с отдаленными репозиториями