Git Flashcards
git
распределённая система управления версиями. Проект
был создан Линусом Торвальдсом для управления
разработкой ядра Linux, первая версия выпущена 7
апреля 2005 года. На сегодняшний день его
поддерживает Джунио Хамано.
как устроен GIT
хранит папки и файлы проекта, с
возможностью восстановления
изменений, интегрируется в
проект путем создания папки .git
при добавлении файла в репозиторий -
создается файл с сжатыми данными.
Имени этого файла присваивается
сгенерированный хеш на основе данных
коммиты строятся на графах
git config
$ git config –global user.name “John Doe”
$ git config –global user.email johndoe@example.com
$git init
clone
# git clone "project_url" # git checkout branch_name # git branch new_branch_name
explore remote
# git remote show origin *remote origin
add to server
# git status # git add file_list # git commit -m "Commit message" #git remote -v #git push -u origin develop
load at server
git pull ///подгрузиь все изменения
git pull — это, по сути, команда git
fetch, после которой сразу же
следуетgit merge.
git fetch получает изменения с сервера и сохраняет их в каталог refs/remotes/. Это никак не влияет на локальные ветки и текущие изменения. А git merge уже вливает все эти изменения в локальную копию.
Cancel local
# git reset --hard ///выкинуть локальные изменения #git log -v # git reset --hard ///откатиться до определенного коммит
Cancel remote
# git reset --hard ///выкинуть локальные изменения #git log -v # git reset --hard ///откатиться до определенного коммит или #git reset --hard HEAD~2 # git push -f origin master ///без -f будет ругаться что у вас версия младше чем в гит
Merge Branch
git merge “branch name”
Rebase
Слияние двух веток в одну
смещением файлов
Submodules
$ git submodule add git://github.com/chneukirchen/rack.git rack $ git submodule update
git submodule update --init --recursive git submodule foreach --recursive git submodule foreach git checkout developmen
Перенести коммит в другу. ветку
git cherry-pick но я не пользовался - не помню синтаксис, у меня иногода были такие ситуация- но там через патч переносили