text混帐(代码片段)

author author     2022-12-03     224

关键词:

Git
Зафиксированный - файл уже сохранён в вашей локальной базе
Изменённым - файлы, которые поменялись, но ещё не были зафиксированы
Подготовленные - это изменённые файлы, отмеченные для включения в следующий коммит.
Git directory working directory staging area
1 Вы вносите изменения в файлы в своём рабочем каталоге.
2 Подготавливаете файлы, добавляя их слепки в область подготовленных файлов.
3 Делаете коммит, который берёт подготовленные файлы из индекса и помещает их в каталог Git'а на постоянное хранение.

--global - файл .gitconfig в каталоге $HOME (C:\Documents and Settings\$USER или C:\Users\$USER для большинства пользователей)

 указать ваше имя и адрес электронной почты
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

 выбрать текстовый редактор, который будет использоваться
$ git config --global core.editor code

встроенная diff-утилита, которая будет использоваться для разрешения конфликтов слияния
git config --global merge.tool diffuse

 проверить используемые настройки
$ git config --list

проверить значение конкретного ключа
$ git config user.name

 открыть страницу руководства по любой команде
$ git help <команда> например $ git help config

начать использовать Git для существующего проекта
$ git init

добавить под версионный контроль существующие файлы
$ git add *.c
$ git add .  $ git add --all

коммит
$ git commit -m 'initial project version'

клонирование существующего репозитория в каталог grit
$ git clone git://github.com/schacon/grit.git

клонирование существующего репозитория в каталог отличный от grit
$ git clone git://github.com/schacon/grit.git mygrit

 для определения, какие файлы в каком состоянии находятся 
$ git status

 начать отслеживать (добавить под версионный контроль) новый файл или проиндексировать существующий
$ git add filename

git add -u подготовка удаленных файлов

файл .gitignore   

*.[oa]  -  игнорировать любые файлы заканчивающиеся на .o или .a  
*~  игнорировать все файлы заканчивающиеся на тильду (~)
Пример:
# комментарий — эта строка игнорируется
*.a # не обрабатывать файлы, имя которых заканчивается на .a
!lib.a # НО отслеживать файл lib.a, несмотря на то, что мы игнорируем все .a файлы с помощью предыдущего правила
/TODO # игнорировать только файл TODO находящийся в корневом каталоге, не относится к файлам вида subdir/TODO
build/ # игнорировать все файлы в каталоге build/
doc/*.txt # игнорировать doc/notes.txt, но не doc/server/arch.txt
doc/**/*.txt # игнорировать все .txt файлы в каталоге doc/

непосредственно добавленные и удалённые строки — собственно заплатку (patch).
(сравнивает содержимое вашего рабочего каталога с содержимым индекса)
$ git diff

посмотреть, что вы проиндексировали и что войдёт в следующий коммит
$ git diff --cached 

эта команда сравнивает ваши индексированные изменения с последним коммитом
$ git diff --staged

$ git commit

Для ещё более подробного напоминания, что же именно вы поменяли
$ git commit -v

Комментарий для коммита в командной строке
$ git commit -m "Story 182: Fix benchmarks for speed"

заставляет Git автоматически индексировать каждый уже отслеживаемый на момент коммита файл
$ git commit -a 

удалить его из отслеживаемых файлов (точнее, удалить его из вашего индекса) 
$ git rm

 принудительное удаление проиндексированного файла
$ git rm -f 

 это удалить файл из индекса
$ git rm --cached readme.txt

Эта команда удаляет все файлы, которые имеют расширение .log в каталоге log/
$ git rm log/\*.log

Эта команда удаляет все файлы, чьи имена заканчиваются на ~
$ git rm \*~

переименовать файл в Git
$ git mv file_from file_to
(эквивалентно 
$ mv README.txt README
$ git rm README.txt
$ git add README)

список коммитов созданных в данном репозитории в обратном хронологическом порядке
$ git log
$ git log -p 
$ git log --pretty=oneline
$ git log --pretty=oneline --max-count=2
$ git log --pretty=oneline --since='5 minutes ago'
$ git log --pretty=oneline --until='5 minutes ago'
$ git log --pretty=oneline --author=<your name>
$ git log --pretty=oneline --all
$ git log --all --pretty=format:"%h %cd %s (%an)" --since='7 days ago'
$ git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short

что ограничит вывод до 2-х последних записей
$ git log -p -2

получить дельту по словам
$ git log -p --word-diff 

 получить некоторую краткую статистику по каждому коммиту
$ git log --stat

граф веток
$ git log --graph -all 

$ git log --oneline --graph

--pretty=oneline выводит каждый коммит в одну строку, что удобно если вы просматриваете большое количество коммитов.
short, full, и fuller, практически не меняя формат вывода, позволяют выводить меньше или больше деталей
format:"%h - %an, %ar : %s" свой формат вывода лога
$ git log --pretty=format:"%h - %an, %ar : %s" 

 список коммитов, сделанных за последние две недели
$ git log --since=2.weeks 

сделать этот коммит ещё раз
$ git commit --amend 
пример - в результате один коммит
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

НЕ создает новый коммит а заменяет страый
git commit --amend -m "Add an author/email comment"

отмена индексации файл
$ git reset HEAD benchmarks.rb

Отмена изменений файла и возращение его к состоянию предыдущего коммита
$ git checkout -- benchmarks.rb

откат до коммита
$ git checkout <hash>

просмотреть, какие удалённые серверы у вас уже настроены
$ git remote 

просмотреть, какие удалённые серверы у вас уже настроены и их URL
$ git remote -v 

добавление нового удаленного репозитория
$ git remote add name url

извлечь (fetch) всю информацию, которая есть в репозитории 
$ git fetch pb 
$ git fetch [имя удал. сервера]
$ git fetch origin

автоматически извлекает и затем сливает данные из удалённой ветки в вашу текущую ветку
$ git pull  

отправить (push) их в главный репозиторий
$ git push [удал. сервер] [ветка]

получить побольше информации об одном из удалённых репозиториев
$ git remote show origin  

Просмотр имеющихся меток
$ git tag

поиск по шаблону
$ git tag -l 'v1.4.2.*'

Создание аннотированной метки, Опция -m задаёт меточное сообщение
$ git tag -a v1.4 -m 'my version 1.4'

 посмотреть данные метки
$ git show v1.4

посмотреть данные коммита
$ git show b10cc123

Легковесная метка
$ git tag v1.4-lw

 возможно помечать уже пройденные коммиты
$ git tag -a v1.2 -m 'version 1.2' 9fceb02

удаление тега
$ git tag -d v1-beta

отправляет метки на удалённые серверы
$ git push origin v1.5

 все ваши метки отправятся на удалённый сервер
$ git push origin --tags

 создадим новую ветку под названием testing
$ git branch testing

создать и перейти на ветку
$ git checkout -b style

 перейти на существующую ветку
$ git checkout testing

откатить один файл до заданного коммита
$ git checkout 09bd8cc1 hello.txt

объединить эту ветку и свой master
$ git checkout master
$ git merge iss53

удалить ветку
$ git branch -d iss53

список веток,  * указывает на ветку, на которой вы находитесь в настоящий момент.
$ git branch

посмотреть последний коммит на каждой из веток
$git branch -v

посмотреть те ветки, которые вы уже слили
ветки из этого списка, перед которыми нет символа *, можно смело удалять командой git branch -d
$git branch --merged

все ветки, содержащие наработки, которые вы пока ещё не слили в текущую ветку
$git branch --no-merged

просмотр всех веток, в том числе на удаленном репозитории
$ git branch -a 

Команда изменяет текущую ветку. Переданный параметр - это просто указатель на новое начало коммитов. 
Пересоздаются (копируются) коммиты из диапазона [BRANCH or SHA1]..HEAD . 
$git rebase [BRANCH or SHA1]
пример
git checkout develop
git pull
git checkout feature/A/super_code
git rebase develop

Алиасы
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global alias.hist "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short"
git config --global alias.type 'cat-file -t'
git config --global alias.dump 'cat-file -p'

В файле .gitconf
[alias]
  co = checkout
  ci = commit
  st = status
  br = branch
  hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
  type = cat-file -t
  dump = cat-file -p
  
 отмена коммита
 $ git revert HEAD --no-edit - последнего коммита
 
 отмена заданного коммита
 $ git revert b10cc123
 
 отмена коммитов до заданного тега 
 git reset --hard v1
 Параметр --hard указывает, что рабочий каталог должен быть обновлен в соответствии с новым head ветки.
 
 git reset --hard some-commit-hash — вернуться на определённый коммит в истории.
 Все изменения, сделанные после этого коммита пропадут.
 
 git reset some-commit-hash — вернуться на определённый коммит в истории. 
 Все изменения, сделанные после этого коммита, получат состояние «Not staged for commit».
 Чтобы вернуть их обратно, нужно использовать команды git add и git commit.
 
 git reset --soft some-commit-hash — вернуться на определённый коммит в истории. 
 Все изменения, сделанные после этого коммита, получат состояние «Staged for commit». 
 Чтобы вернуть их обратно, нужно использовать команду git commit.
 Например чтобы взять три последних коммита и слить их в один большой коммит
 
 git checkout forget-my-changes.js. Это как git reset --hard, только для конкретного файла.
 
 Сравнить два файла
 git diff some-branch some-filename.js
 
 получение обновлений и ребейз
 git pull --rebase
 
 
 git push -f
 
 git diff HEAD
 
 
 git pull эквивалентно
 git fetch
 git merge origin/master
 
 Добавьте локальную ветку, которая отслеживает удаленную ветку
 git branch --track style origin/style
 
 создание чистого репозитория для расшаривания
 git clone --bare hello hello.git
 
 добавление удаленного репозитория
 git remote add shared ../hello.git
 
 
 git remote add shared ../hello.git
git branch --track shared master
git pull shared master


 git difftool -d
 git config --global diff.tool meld
 
 git diff -w - игнорировать пробелы
git config --global merge.tool meld

git branch -a - выводит все ветки, в том числе удаленные

git reflog изменения HEAD в хронологическом порядке

git log -g  вывод лога для записей из reflog

rm -Rf .git/logs/ - удаление рефлога

git fsck - проверка целостности
git fsck --full показаны все объекты, недостижимые из других объектов

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐(代码片段)

查看详情

text混帐:取(代码片段)

查看详情

text混帐忽略(代码片段)

查看详情

text混帐:拉(代码片段)

查看详情