git config global user name Your Name git
Начало работы $ git config --global user. name "Your Name" $ git config --global user. email "your_email@whatever. com" Создание нового репозитория $ git init Индексация и фиксация изменений $ git add *. c $ git add README $ git commit -m 'initial project version' Клонирование существующего репозитория: $ git clone git: //github. com/schacon/grit. git
Определение состояния файлов $ git status # On branch master nothing to commit (working directory clean) Добавляем простой файл README $ vim README $ git status # On branch master # Untracked files: # (use "git add <file>. . . " to include in what will be committed) # # README nothing added to commit but untracked files present (use "git add" to track)
Отслеживание новых файлов $ git add README $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>. . . " to unstage) # # new file: README # Изменим файл benchmarks. rb $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>. . . " to unstage) # # new file: README # # Changed but not updated: # (use "git add <file>. . . " to update what will be committed) # # modified: benchmarks. rb #
Отслеживание новых файлов $ git add benchmarks. rb $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>. . . " to unstage) # # new file: README # modified: benchmarks. rb #
Изменение проиндексированного файла $ vim benchmarks. rb $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>. . . " to unstage) # # new file: README # modified: benchmarks. rb # # Changed but not updated: # (use "git add <file>. . . " to update what will be committed) # # modified: benchmarks. rb #
Просмотр индексированных и неиндексированных изменений $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>. . . " to unstage) # # new file: README # # Changed but not updated: # (use "git add <file>. . . " to update what will be committed) # # modified: benchmarks. rb # $ git diff --git a/benchmarks. rb b/benchmarks. rb index 3 cb 747 f. . da 65585 100644 --- a/benchmarks. rb +++ b/benchmarks. rb @@ -36, 6 +36, 10 @@ def main @commit. parents[0] end + run_code(x, 'commits 1') do + git. commits. size + end + run_code(x, 'commits 2') do log = git. commits('master', 15) log. size
Сравнение индексированных изменений с последним коммитом $ git diff --cached diff --git a/README b/README new file mode 100644 index 0000000. . 03902 a 1 --- /dev/null +++ b/README 2 @@ -0, 0 +1, 5 @@ +grit + by Tom Preston-Werner, Chris Wanstrath + http: //github. com/mojombo/grit + +Grit is a Ruby library for extracting information from a Git rep
Фиксация изменений $ git commit # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Changes to be committed: # (use "git reset HEAD <file>. . . " to unstage) # # new file: README # modified: benchmarks. rb ~ ~ ~ ". git/COMMIT_EDITMSG" 10 L, 283 C Или (можно добавить -m): $ git commit -m "Story 182: Fix benchmarks for speed" [master]: created 463 dc 4 f: "Fix benchmarks for speed" 2 files changed, 3 insertions(+), 0 deletions(-) create mode 100644 README
Игнорирование индексации $ git commit -a -m 'added new benchmarks' [master 83 e 38 c 7] added new benchmarks 1 files changed, 5 insertions(+), 0 deletions(-)
Просмотр истории коммита $ git log commit 2 f 95134938 d 71665 bdd 40 f 9626 fcb 142 c 904 d 048 Author: Alexander Dmitriev <golostos@yandex. ru> Date: Wed Oct 5 01: 32: 13 2011 +0400 Updated index. html commit e 2 e 24 f 36 cffcba 3705692 d 2602 af 3 f 3784934 ecf Author: Alexander Dmitriev <golostos@yandex. ru> Date: Wed Oct 5 01: 30: 49 2011 +0400 Hello uses style. css $ git log --pretty=format: "%h %ad | %s%d [%an]" --graph --date=short * 2 f 95134 2011 -10 -05 | Updated index. html (HEAD, style, master) [Alexander Dmitriev] * e 2 e 24 f 3 2011 -10 -05 | Hello uses style. css [Alexander Dmitriev]
Удаление файлов Если просто удалить, то файл становится измененным, но непроиндексированным $ rm grit. gemspec $ git status # On branch master # # Changes not staged for commit: # (use "git add/rm <file>. . . " to update what will be committed) # # deleted: grit. gemspec # $ git rm grit. gemspec rm 'grit. gemspec' $ git status # On branch master # # Changes to be committed: # (use "git reset HEAD <file>. . . " to unstage) # # deleted: grit. gemspec # После следующего коммита файл исчезнет и больше не будет отслеживаться.
Перемещение файлов $ git mv file_from file_to $ git mv README. txt README $ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Changes to be committed: # (use "git reset HEAD <file>. . . " to unstage) # # renamed: README. txt -> README # Однако, это эквивалентно выполнению следующих команд: $ mv README. txt README $ git rm README. txt $ git add README
- Slides: 18