$ cat /etc/gitconfig [system] name = git_system_repo_one
Назначим редактор по умолчанию:
$ git config --global core.editor "vim"
Создадим пустой репозиторий:
$ mkdir testrepo && cd testrepo && git init && ls -a .git branches config description HEAD hooks info objects refs
Проверим статус:
$ git status On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
Видим, что находимся в ветке мастер и нам нечего коммитить
Создадим новый файл:
$ echo "test" > test.txt
$ git status On branch master
No commits yet
Untracked files: (use "git add <file>..." to include in what will be committed)
test.txt
nothing added to commit but untracked files present (use "git add" to track)
Добавим его в отслеживание репозиторием:
$ git add test.txt && git status On branch master
No commits yet
Changes to be committed: (use "git rm --cached <file>..." to unstage)
new file: test.txt
Необходимо зафиксировать изменения в репозитории:
$ git commit -m "Peasant add new testfile" && git status [master (root-commit) 0c39ff0] Peasant add new testfile 1 file changed, 1 insertion(+) create mode 100644 test.txt On branch master nothing to commit, working tree clean
В комманде присутствует указание комментария
Удалим файл и подтвердим изменения:
$ rm -rf test.txt
$ git status On branch master Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory)
deleted: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git rm test.txt rm 'test.txt'
$ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage)
Теперь при добавлении файлов нам будет выводиться список игнорируемых:
$ git add * The following paths are ignored by one of your .gitignore files: test.txt Use -f if you really want to add them.
Склонируем репозиторий, между ними будет связь:
$ cd .. && git clone testrepo/ testrepoclone Cloning into 'testrepoclone'... done.
Внесем изменения в клоне репозитория:
$ cd testrepoclone && echo "new" > newfile.txt
$ git status On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits)
nothing to commit, working tree clean
Перейдем в папку начального репозитория и скачаем изменения с клона:
$ cd ../testrepo && git pull ../testrepoclone/ && cat newfile.txt remote: Counting objects: 3, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From ../testrepoclone * branch HEAD -> FETCH_HEAD Updating 45f58cf..fd6840f Fast-forward newfile.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 newfile.txt new
Перейдем в клонированный репозиторий:
$ cd ../testrepoclone/ && git status On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits)
nothing to commit, working tree clean
Видно, что оригинальный имеет одно различие с клоном
Применем изменения:
$ git push && git status Everything up-to-date On branch master Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
Больше различий между репозиториями нет
Чтоб работать с репозиториями по сети ip адресу:
$ ifconfig | grep inet inet 192.168.0.129
Создайте ключи у пользователя:
$ ssh-keygen
И произведите обмен ключами:
$ ssh-copy-id peasant@192.168.0.129
Склонируем по сети репозиторий:
$ mkdir ../iprepo && cd ../
Теперь посмотрим, какие изменения произошли по отношению коммиту с тэгом:
$ git show one commit fd6840f010ac8d0260a4c98c57a203437a4211b6 (tag: one, origin/master, origin/HEAD) Author: peasant <peasant@localhost> Date: Mon Aug 10 09:03:54 2020 +0000
new
diff --git a/newfile.txt b/newfile.txt new file mode 100644 index 0000000..3e75765 --- /dev/null +++ b/newfile.txt @@ -0,0 +1 @@ +new
Информация о тэгах (имя-количество коммитов с его создания-ссылка):
$ git describe --tags one-1-g88741ec
Создадим аннотированный тэг для текущего коммита:
$ git tag -a v1 -m "tag two" && git tag one v1