GIT: самые популярные консольные команды

Git Git УРА =)

Я вообще не любитель черного экрана. Это и отложило отпечаток на мне. После школы и универа, где весь кодинг был в черном окне (DOS), меня тошнило от афроамериканского окна =) По этому я и выбрал сайтостроение. Тут все весело, цветное и двигается =)

Так вот. Эта чернота и оттолкнула меня от Ubuntu. Точнее от терминала. Сама убунту прикольная после виндовса. Но bash...

От этого и моя не любовь к консольному git'у. Я юзал sourcetree. Но пришло время и меня столкнули с консолью. Следовательно и гит меня достал тут. Пришлось его почувствовать на черном экране.

И вот что у меня вышло...


//получить справку по работе с командой git config
git help config

// ----------глобальные настроики---------
git config --global user.name "alexandr makovkin"
git config --global user.email "info@makovkin.com"
git config --global color.ui true

// ---------локальные (для текущего репозитороия) настроики---------
git config  user.name "alexandr makovkin"
git config  user.email "info@makovkin.com"
git config  color.ui true

// редактор по умолчанию для Windows
git config --global core.editor "'c:/program files/sublime text 3/subl.exe' -w"

// редактор по умолчанию для Linux
git config --global core.editor nano

/*********************************************************/
/ -----------ИНИЦИАЛИЗАЦИЯ----------- /

git init

git add .
git add file.name

git commit -m "some text explain what we did"

// можно объединить git add и git commit в одну команду
git commit -a -m "комментарий"

// добавление изменений к последнему коммиту
git commit --amend

/*********************************************************/
/ -----------ЛОГИРОВАНИЕ----------- /
git log

//просмотреть последние 3 комита
git lon -n 3
//просмотреть комиты начиная с 2014-02-23
git log --since=2014-02-23
//просмотреть комиты до 2014-02-23
git log --untill=2014-02-23
//посмотреть комиты Alexnander
git lod --author="alexander"
//поск комитов в описании которых есть some text
git log --grep="some text"
//показать короткий вариант
gil log --oneline

git log --since="2 weeks ago" --until="3 days ago"

// логи указанной ветки [после названия ветки можно использовать вышеуказанные параметры]
git log branch_name 	

/*********************************************************/
/*---------статус----------*/

git status

/*********************************************************/
/*--------разница----------*/

git diff      			// показать разницу между файлами в репозитории и рабочей папке
git diff filename.php  	// показать разницу между файлом в репозитории и рабочей папке
git dif --staged 		// показать разницу между файлами в репозитории и в буфере

git diff 2j548ds63hjsd  // показать разницу между файлами репозитория 2j548ds63hjsd и рабочей папки
git diff 2j548ds63hjsd  filename.txt // показать разницу между файлом filename.txt репозитория 2j548ds63hjsd и рабочей папкой

git diff 2j548ds..5d564dsd6 // показать разницу между файлами репозитория 2j548ds и 5d564dsd6

git diff 2j548ds..5d564dsd6 filename.txt // показать разницу между файлом filename.txt репозитория 2j548ds и 5d564dsd6

git diff branch..new_branch  // показать разницу между ветками branch и new_branch

/*-------------------------*/

git show  1a233dd8fd

/*********************************************************/
/*****************УДАЛЕНИЕ********************************/

//удаляет файл из индекса и из рабочей папки
git rm filename.txt

//удаляет файл только из индекса git
git rm --cached filename.txt

/*********************************************************/
/*****************ПЕРЕМЕЩЕНИЕ и ПЕРЕИМЕНОВЫВАНИЕ**********/

git mv filename.txt newfile.txt
git mv filename.txt folder/filename.txt

/*********************************************************/
/********************ОТМЕНА ИЗМЕНЕНИЙ*********************/

/--- вернуть измениея файла
git checkout -- filename.txt
//вернет последние состояние файла из репозитория (файл в проекте будет перезаписан файлом из репозитория)

/--- удалить файл из слежки гита (если добавили файл командой git add)
git reset HEAD filename.txt

//самая мощная и самая опасная команда - откат к указанному коммиту с потерей всех изменений!
git reset --hard 

git checkout 12a2er556tysa -- filename.txt
//эта команда переносит файл из комита с хэшэм 12a2er556tysa в буфер 
//затем можно выполнить git reset HEAD filename.txt,
//чтобь вернуть файл в рабочую дерикторию

git reset --soft 34as345dsad5asd76as5 
//перемещаем указатель на комит с хешем 34as345dsad5asd76as5

/*------------------------------------------------------------*/
/*--------------------GITIGNORE-------------------------------*/
/*------------------------------------------------------------*/

//- в папке с проектом создать файл .gitignore
//- в этом файле записать те файлы, которые не должен учитывать git

# так обозначаются коментарии
/assets/video/     			- будут проигнорированны все вложеные файлы и папки  в папке video
*.zip     					- будут проигнорированные все zip архивы в текущей папке
!/assets/video/adv.mp4     	- файл adv.mp4 будет включен в список индексации


//пусть раньше у нас был файл filename.txt и мы его отслеживали.
//но теперь решили добавить его в .gitignore
git rm --cached filename.txt
//-эта команда удаляет filename.txt из буфера, но не из рабочей папки.


//!!! чтоб отслеживать пустую папку нужно добавить в нее пустой файл .gitkeep

/*------------------------------------------------------------*/
/*--------------------ПРОСМОТР СОДЕРЖИМОГО КОМИТА-------------*/
/*------------------------------------------------------------*/

//просмотреть список файлов, которые находятся в папке foldername,
//которые входят в последний комит
git ls-tree HEAD foldername/

//просмотреть список файлов, которые входят в последний комит
git ls-tree HEAD       

//просмотреть список файлов, которые входят в ПРЕДПРЕДпоследний комит
git ls-tree HEAD~2

/*--------------------------------------*/
/*--------------------ВЕТКИ-------------*/
/*--------------------------------------*/

//origin - это ссылка на удаленый репозиторий
//master - это главная ветка

// просмотреть все существующие ветви
git branch -a

// посмотреть на какой ветке мы сейчас находимся
git branch
// или более детально просмотреть
git branch -v

// создать ветку
git branch new_vetka

// переключиться на ветку new_vetka
git checkout new_vetka

// переименовать ветку
git branch -m old_name new_name

// удалить ветку (сперва нужно перейти на другую ветку, так как git не может удалить ветку в которой сейчас находишься)
git branch -d branch_name

// начать работать с веткой some_branch (уже существующей):
git checkout -b some_branch origin/some_branch

/*----слияние веток------*/
//чтоб сделать слияние developingBranch к productionBranch
//нужно переключиться на productionBranch и ввести команду
git merge developingBranch

/*-------------------------------------------------------*/
/*--------------------КОНФЛИКТЫ -------------------------*/
/*-------------------------------------------------------*/

// разрешение конфликтов
//если при слиянии веток произошел конфликт, то
//открываем файл и находим проблемные места.
//они помечаются так: <<<<<<<<

/*-------------------------------------------------------*/
/*--------------------УДАЛЕННЫЕ РЕПОЗИТОРИИ--------------*/
/*-------------------------------------------------------*/

//origin - это ссылка на удаленый репозиторий
//master - это главная ветка

//origin/master - это локальный бранч, которы ссылается на удаленый сервер

git remote - выведет список всех удаленый репозиториев, принадлежащих этому проекту

//git remote add NAME PATH
git remote add origin https://github.com/AlexMcowkin/zawebisdrupal.git
//этой командой мы связываем локальный проект с удаленым репозиторием
//(уазываем ссылку на удаленый репозиторий)

git remote rm origin - этой командой мы удаляем ссылку на удаленый репозиторий

git push -u origin master - этой командой мы отправляем на удаленый репозиторий origin
//локальный репозиторий master (где master это название бранча)
//если хотим послать другую ветку, то пишем
git push -u origin new_branch

// создание локальной копии репозитория
git clone https://github.com/AlexMcowkin/zawebisdrupal.git

git clone https://github.com/AlexMcowkin/zawebisdrupal.git folder_name
//!!! если не указать название папки, то git создаст папку с названием zawebisdrupal

// синхронизировать локальную копию с удаленной
git fetch origin

//Получение из удаленного репозитория информации, которой еще нет в локальном,
//но чтоб эти изменения с удаленого репозитория были в локальных файлах то надо еще сделать
git merge origin/master

// создание локального бранча на основе удаленого бранча
git branch some_branch origin/some_branch

// удаление удаленых бранчей
git push origin --delete some_branch



///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////

// при старте работы делать git pull origin
// на локалке делаем новую ветку git branch new_vetka
// переходим на нее git checkout new_vetka

// залить изменения на удаленку на ветку your_branch_name
git push -u origin your_branch_name

// перед началом работы и перед тем как залить
git pull origin master
git pull origin your_branch_name

***********************************************************

// Замерджить все ветки с удаленного репозитория:
git pull origin

// просто делаем пуш, чтоб занести все изменения в удаленный репозиторий в конкретную ветку
git push

// получаем все изменения из конкретной привязанной ветки
git pull


Добавить коментарий

Что за сайт

Этот сайт представляет унифицированную базу, где инфа собрана в единое целое, а не разбросанна по многочисленным сайтам, записям на листах бумаги или головам людей; а так же доступна круглосуточно не зависимо от кого-либо или чего-либо.

ФРЕНДЗОНА

Будь в курсе

Интересненько

Поехали