# cat ~/.gitconfig [user] name = Your_Name email = Your_Name@Your_Domain
Справка по командам:
# git --help
Инициализация репозитория и клонирование
Инициализируем локальный репозиторий, даем доступ по ssh клиенту
На сервере:
# /etc/ssh/sshd_config PasswordAuthentication no PubkeyAuthentication yes AllowUsers git
# systemctl restart sshd
# su git
# mkdir ~/.ssh && touch ~/.ssh/authorized_keys
# mkdir ~/gitrepo && cd ~/gitrepo
# git init --bare test_project.git Initialized empty Git repository in /home/git/gitrepo/test_project.git/
Чтоб в будущем при коннекте не возникла ошибка: Authentication refused: bad ownership or modes for directory Делаем:
# su git
# chmod go-w ~/
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/authorized_keys
Проверяем:
# ssh git@10.0.2.10 Last login: Tue Jun 25 08:30:46 2019
Ctrl + D
Клонирование репозитория в пустой каталог:
# mkdir ~/gitrepo && cd ~/gitrepo
# git clone ssh://git@10.0.2.10:22/home/git/gitrepo/test_project.git test_project.git Cloning into 'test_project.git'... warning: You appear to have cloned an empty repository.
Добавление файла в индекс и коммит в ветку мастер:
# cd test_project.git/
# echo 'test' > test.txt
# git add .
# git commit -m 'test commit'
# git push origin master
Инициализация локального репозитория и подключение удаленного:
# mkdir ~/gitrepo/repoinit && cd ~/gitrepo/repoinit
# git init Initialized empty Git repository in /home/git/gitrepo/repoinit/.git/
Команда "git pull origin master" выкачивает из репозитория origin ветку master
Соответственно команда "git push origin master" закачивает в репозиторий origin ветку master
Более подробная информация о удаленном репозиторие:
# git remote show origin * remote origin Fetch URL: ssh://git@10.0.2.10:22/home/git/gitrepo/test_project.git Push URL: ssh://git@10.0.2.10:22/home/git/gitrepo/test_project.git HEAD branch: master Remote branch: master tracked Local ref configured for 'git push': master pushes to master (up to date)
Из вывода мы видим 2 ветки на удаленном репозиторие master и tracked
Переименовать название репозитория можно было бы так: git remote rename origin newreponame
Создадим новый файл, его статус будет неотслеживаемым:
# echo "untracked" > test2.tx
# git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # test2.tx nothing added to commit but untracked files present (use "git add" to track)
# git status -s ?? test2.tx
Добавить файл в индекс и сделать коммит:
# git add test2.tx
Файл стал отслеживаемым:
# git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: test2.tx #
Файл дополнительно к новому стал еще и модифицированным:
# git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: test2.tx # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: test2.tx #
# git status -s AM test2.tx
Т.к. мы не делали коммит на стадии нового файла, изменения при коммите сейчас не сохранятся
Внесем изменения:
# git add test2.tx
# git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: test2.tx #
# git status -s A test2.tx
Подтвердим изменения и отправим их в репозиторий:
# git commit -m 'adding new file'
# git push origin master
Игнорирование файлов с помощью .gitignore
Понимает указание как одиночных файлов, так и директорий и масок
# git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore nothing added to commit but untracked files present (use "git add" to track)
Изменения по отношению к коммиченному состоянию можно посмотреть с помощью diff:
Лооги с id и комментарием:
# git log --pretty=oneline
Поиск по вхождению:
# git log -S "test"
Последние два лога:
# git log -2
Откат внесенных изменений к предыдущему коммиту:
# echo 'new' >> test2.txt
# gitstatus bash: gitstatus: command not found
# git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: test2.txt
# git checkout -- test2.txt
# cat test2.txt untracked untracked 2
Комментарии пользователей
Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!