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
- Удаление больших объектов из истории
- Работа с отдаленными репозиториями