Как открыть файл в git bash
Перейти к содержимому

Как открыть файл в git bash

  • автор:

Git. Краткое руководство по терминалу

Данное краткое руководство демонстрирует основные команды в терминале Bash:

  • Bash (Linux/Mac)
  • Git Bash (Windows)

Открытие терминала

Первая задача: открыть терминал сразу в нужном каталоге.

Linux

В Linux достаточно щёлкнуть правой кнопкой мыши на каталоге и выбрать пункт меню Open in Terminal или Открыть в терминале :

Mac

В Mac всё немного сложнее, необходимо настроить отображение этого пункта меню в Finder.

Для этого необходимо перейти в Системные настройки , затем пункт меню Клавиатура , в разделе Службы выбрать раздел Файлы и папки и поставить флажок напротив Новый терминал по адресу папки :

После чего при клике правой кнопкой мыши на каталоге появится необходимый пункт меню:

Windows (Git Bash)

В Windows всё достаточно просто — клик правой кнопкой мыши на каталоге и выбор Git Bash Here :

Первоначальная настройка Git

После установки Git первое, что мы сделаем — укажем наши имя и адрес электронной почты. Это важно, потому как этой информацией подписывается каждый коммит (кто сделал изменения и его электронная почта). Для настройки потребуется ввести команды:

$ git config --global user.name "Thorin Oakenshield" $ git config --global user.email ereborsons@stone.com 

Если указана опция —global , настройки применятся глобально, то есть для всех ваших действий в системе Git. Без этой опции настройки применяются локально, для текущего репозитория, и не влияют на глобальные настройки.

Пути

Одно окно терминала подразумевает, что вы можете в один момент времени находиться только в одном каталоге, который называется Current Working Directory (текущий каталог), так же как и в одном открытом окне Nautilus , Finder или проводника Windows.

Вы можете выполнять команды относительно текущего каталога или относительно абсолютного пути.

Абсолютный путь — это путь, начинающийся от корня файловой системы. Корень файловой системы обозначается символом / .

Например, в Git Bash (Windows) абсолютный путь для каталога Program Files , будет чаще всего выглядеть следующим образом: /c/Program Files/ .

Для домашнего каталога в Ubuntu (Linux), абсолютный путь будет выглядеть следующим образом: /home/user/ , где user — имя пользователя.

Bash (Git Bash в том числе) используют символ / для разделения каталогов.

Ещё два специальных обозначения помимо корня файловой системы:

  • . — обозначает текущий каталог;
  • .. — обозначает родительский каталог.

Важно: в терминале символ ` ` (пробел) является символом, разделяющим команды и опции. Поэтому если в пути есть пробел, то варианта два:

  • заключать путь в кавычки, то есть «Program Files» ;
  • использовать символ backslash для экранирования пробела: Program\ Files .

Переменные окружения

Командная оболочка устанавливает ряд переменных, которые выполняют специфические функции. Так, переменная с именем PATH содержит список путей, в которых будет производиться поиск программы, если вы наберёте её название в терминале.

Для вывода содержимого конкретной переменной используется команда echo следующим образом:

$ echo $PATH 

Команда printenv позволяет отобразить все переменные окружения:

$ printenv 

Видно, что в переменных окружения содержится достаточно много информации о системе.

Автодополнение

В командных оболочках работает автодополнение по клавише Tab :

  • дополняются имена команд;
  • дополняются пути.

Используйте автодополнение, так как оно позволяет сократить время на набор команды.

Ключевые команды

В этом разделе будут описаны ключевые команды, необходимые нам для работы. Естественно, список этот далеко не полный.

Текущий рабочий каталог

pwd — сокращение от “Print Working Directory”.

Отображение текущего рабочего каталога:

Смена рабочего каталога

cd — сокращение от “Change Directory”.

Переход в определённый каталог:

path может быть как абсолютным, так и относительным путём.

Например, перейти на каталог выше:

Перейти в подкаталог src :

$ cd src 

Если перед путём нет слеша — он трактуется как относительный (относительно текущего каталога).

Листинг каталога

ls — сокращение от “List”.

Отображает листинг (содержимое каталога):

По умолчанию, ls не отображает файлы, начинающиеся с . , например, .gitignore . Для отображения таких файлов нужно использовать флаг -a :

$ ls -a 

Создание файлов

Для создания файлов используются специальные программы (например, для создания текстовых файлов — текстовые редакторы).

В рамках рассмотрения Bash мы рассмотрим два текстовых редактора, которые позволят вам создавать и редактировать файлы в псевдографическом режиме.

nano

nano — простой текстовый редактор.

Для того, чтобы создать файл достаточно ввести команду nano и имя файла:

$ nano README.md 

Откроется редактор следующего вида:

Пункты меню в нижней части вызываются с помощью горячих клавиш, где символ ^ обозначает клавишу Ctrl .

То есть чтобы записать файл и выйти следует последовательно нажать Ctrl + O (запись) и Ctrl + X (выход).

Редактор nano установлен в большинстве Unix-подобных операционных системах и Git Bash.

Vim

Редактор Vim (a programmer’s text editor) — профессиональный редактор, позволяющий достичь максимальной производительности при работе с любыми текстовыми файлами. Настолько популярен, что для любой графической среды (IDE, текстовых редакторов вроде VS Code, Atom, Sublime) всегда есть плагин, включающий возможность редактирования кода в режиме “Vim Mode”.

На освоение работы в Vim нужно потратить достаточно много времени, для этого вы можете воспользоваться интерактивным учебником vimtutor :

$ vimtutor 

Мы лишь скажем, что для выхода из этого редактора (если вы всё-таки осмелились его открыть) нужно нажать клавишу Esc , затем ввести команду :q! — это позволит вам закрыть открытый файл без сохранения изменений.

VS Code

В видео-лекциях используется VS Code. В Windows вы можете правой кнопкой открыть каталог сразу в VS Code.

В Mac OS и Linux вы можете открыть терминал по адресу папки и в терминале выполнить команду code . & , которая откроет выбранный вами каталог в этом редакторе.

Если ни то, ни другое у вас не получилось, то просто откройте VS Code и через File — Open откройте нужный каталог.

Создание каталогов

mkdir — сокращения от “Make Directory”.

Позволяет создавать каталоги (создаст каталог tmp в текущем каталоге):

$ mkdir tmp 

Стоит обратить внимание на поведение при создании нового каталога в текущей директории. После команды mkdir name ваше текущее расположение в терминале не изменится. Для того, чтобы работать внутри созданного каталога, в него требуется перейти командой cd name . Это справедливо и при клонировании удалённого репозитория с помощью команды git clone . Полностью склонированный репозиторий создаст каталог в текущей директории с именем проекта, в который нужно перейти командой cd repo_name .

Перемещение файлов и каталогов

mv — сокращение от “Move”.

Перемещение (переименование) файлов и каталогов:

$ mv tmp temp 

Удаление файлов и каталогов

rm — сокращение от “Remove”.

Команда для открытия файла с помощью git

какая команда открыть say index.html или style.css внутри каталога проекта?

в основном, когда я работаю над проектом, я хотел бы иметь возможность открыть файл из git. Как это сделать. Каждый учебник, похоже, проходит мимо слияние, клонирование, фиксация да мы все это знаем, как сделать эту простую команду. Или это невозможно изнутри git?

  • ОС Windows 7
  • msysgit версии 1.8.0

Я понимаю, что git не является пусковой установкой и строго для контроля версий. Просто хочу знать, какие варианты у меня есть инструменты под рукой.

вопрос возник, когда я совершал проект и понял, что мне нужно сделать небольшое редактирование файла css я уже закрыл и задавался вопросом, Могу ли я открыть, чтобы отредактировать файл изнутри git, так как он у меня есть.

кажется, это невозможно (не конец света) мне просто нравится понимать все мои варианты с помощью инструментов, которые я использую, это все

автор: Flimzy

12 ответов

Git не имеет ничего общего с тем, как вы открываете/редактируете файлы в своем проекте. Настройка редактора в git только для того, чтобы внутренние вещи git, которые требуют редактора (например, сообщения фиксации), могли использовать предпочтительный редактор.

Если вы просто хотите открыть файлы из командной строки (cmd.exe) как будто они были дважды щелкнуты в проводнике windows, я думаю, вы можете использовать start .

автор: Brenton Alker

я смог сделать это, используя эту команду:

notepad .gitignore 

и он откроет .файл gitignore в блокноте.

автор: Nick Young

Я нашел обходной путь для этого через этот ссылке. В двух словах, вы должны:

  1. создайте файл с именем subl (или любое имя, которое вы хотите, чтобы команда вызов Sublime Text) без расширения
  2. поместите в файл эту команду (при необходимости замените путь для исполняемого файла):

#!/bin/sh "C:\Program Files\Sublime Text 2\sublime_text.exe" & 
C:\Program Files (x86)\Git\usr\bin 
subl filename 

автор: arbolitoloco

Брентон Алкер выше сказал, что «пуск» работает — я добавлю к этому предостережение: это работает для всех файлов, которые уже связаны с sublime-text (как он говорит, это работает, как если бы они были дважды щелкнуты в проводнике windows).

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

я отредактировал переменную среды PATH, чтобы содержать папку Sublime Text в программе файлов, владеет sublime_text.исполняемый. Теперь, в моем терминале (я использую powershell, но он работает с любого терминала), когда я набираю ‘sublime_text .гитюдного’ на .gitignore из моего текущего каталога открывается в Sublime!

Я попытался сделать .файл bat называется sublime.bat, который будет работать, чтобы я мог просто напечатать sublime .gitignore, но это не сработало — по какой-то причине он открыл sublime text, но не файл. Я доволен sublime_text (завершение вкладки упрощает его для я, на самом деле-просто «su[tab]» делает трюк!

автор: TKoL

просто использовать vi + .

vi stylesheet.css 

откроется редактор vi с содержимым файла.

начать редактирование, нажмите клавишу I

автор: Asopiah

пока вы работаете в каком-то проекте, и вы хотите внести незначительные изменения, вы можете использовать редактор по умолчанию git, однако вам, вероятно, понадобится небольшой скрипт, который анализирует файл, созданный командой ниже

git config -l 

переменная code.editor имеет значение /Applications/Sublime_Text.app -n -w

который вы можете открыть с помощью os.system()

автор: Ciasto piekarz

Я только что загрузил Git 2.7.0 и добавил псевдоним .bashrc для редактирования файлов с кодом VS:

alias code='/c/Program\ Files\ \(x86\)/Microsoft\ VS\ Code/bin/code.cmd' 

также должен работать с другими редакторами.

автор: stehuebn

Я использовал Atom, чтобы открыть файлы, это работает для меня

atom index.html 

надеюсь, это поможет.

автор: dstineback

вы можете использовать командную строку git в качестве терминала мой чувак, вы просто знаете, что команды bash Чтобы создать файл

touch file.txt 
code file.py atom file.py start file.py 

открыть текущую папку и все внутри в текстовом редакторе

code . 
mkdir folder1 folder2 folder3 

вы можете сделать столько, сколько вы хотите сразу это работает с touch to

автор: Nick Lesseos

вы можете создать псевдоним для открытия файла в Редакторе по умолчанию, добавив следующую строку в ваш .файл gitconfig хранит настройки:

edit = "!f() < $(git config core.editor) -- $@; >; f" 

затем, git edit foo.txt открыть файл foo.txt для редактирования.

его гораздо легче открыть .gitconfig хранит настройки с git config —global —edit и вставьте строку, а не выяснить, как избежать всех символов, чтобы ввести псевдоним непосредственно из командной строки с git config alias.edit «. «

как это работает

  • ! запускает команду bash, а не внутреннюю команду git
  • f() ; запускает функцию
  • $(git config core.editor) получит имя вашего редактора, из локальной конфигурации или глобального, если локальный не установлен. К сожалению, он не будет смотреть в $VISUAL или $EDITOR для этого, если ни один не устанавливается.
  • — разделяет команду редактора со списком файлов. Это работает для большинства редакторов командной строки, поэтому безопаснее вставлять. Если пропустили и то core.editor не установлен, то это возможно, что исполняемый файл выполняется вместо редактирования. С ним здесь, команда просто провалится.
  • $@ добавить файлы, введенные в командной строке.
  • f выполнит функцию после того, как она будет определена.

пример использования

другие ответы выражают сомнение в том, почему вы этого хотите. Мой вариант использования заключается в том, что я хочу редактировать файлы как часть других функций git, которые я создаю, и я хочу редактировать их в том же редакторе, который пользователь настроил. Например, одним из моих псевдонимов является следующее:

reedit = "!f() < $(git config core.editor) -- $(git diff --name-only ); >; f" 

затем, git reedit откроет все файлы, которые я уже начал изменять, и git reedit —cached откроет все промежуточные файлы.

автор: eedrah

возможно, было бы полезно открыть редактор из сценария, совместно используемого в репозитории git, не предполагая, какой редактор может использовать этот скрипт, но только то, что у них есть git.

здесь вы можете проверить, установлен ли редактор в git config, а также открыть файлы, не связанные с этим редактором:

alias editor="$(git config core.editor)" if [ "$(alias editor | sed -r "s/.*='(.*)'//")" != "" ]; then editor else start fi 

не работает .gitconfig на windows:

[core] editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin 

автор: Hazzard17

чтобы открыть файл в Sublime Text,

вот пример открытия образца текстового файла в Sublime Text editor

subl .txt 

subl ранее создавался как псевдоним, содержащий файл каталога, с помощью команды «echo»в оболочке Git Bash.

sasstr / Команды в Git Bash консоли

Save sasstr/03d819bd98272ae261dd29ef731e9a6f to your computer and use it in GitHub Desktop.

Команды в Git Bash консоли

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

Команды в Git Bash консоли
clear — Очистить консоль
Навигация
pwd — Показать текущий каталог
ls — Показать файлы в данной папке, кроме скрытых
ls -f — Показать файлы в данной папке, включая и скрытые
cd c:/ — Перейти в конкретный каталог
cd — — Вернуться назад
cd .. — Выйти на 1 уровень вверх
cd ../.. — Выйти на 2 уровня вверх
Создание каталогов
mkdir — Создать папку
cd !$ — Перейти в только что созданную папку
mkdir -p — Создать сразу несколько папок
mkdir -p app/ — Создать сразу несколько вложенных папок
Создание файлов
touch index.html — Создать файл index.html
touch app/ — Создать сразу несколько файлов, никаких лишних пробелов быть не должно
Удаление файлов
touch — позволяет создавать файлы
rm test — Удалить пустую папку test
rm -r test — Удалить папку test с файлами внутри неё
Перемещение файлов
mv app1/*.* app2 — Переместить все файлы из папки app1 в папку app2

jt3k commented Jun 26, 2020 •

Почему все вокруг копируют на разбираясь cd c:/ ?

Я не уверен но по-моему это команда для шиндовс указывающая на переход в корень диска цэ.
Но баг как правило в юникс-подобных операционных системах, а в юнткс-подобных ос никаких дисков цэ не существует

petroDavydov commented Nov 28, 2021 •

У мен сработало в Bash cd d:/

jt3k commented Dec 6, 2021 •

Ну ок, тогда ладно. У меня в линуксах не сработает

AntooxaD commented Apr 15, 2022 •

ls — Показать файлы в данной папке, кроме скрытых
ls -f — Показать файлы в данной папке, включая и скрытые

НАОБОРОТ. ls — показывает все файлы и скрытые! А ls -f все кроме скрытых! По крайней мере у меня так на виндовс! может на Mac по другому

MaxOnRem commented Sep 18, 2022

нет, всё написано правильно, флаг показывает все включая скрытые, а еще команда ls -a так же работает

jt3k commented Oct 10, 2022 •

нет, всё написано правильно, флаг показывает все включая скрытые, а еще команда ls -a так же работает

в версии под мак вот такая справка для этих ключей:

-a Include directory entries whose names begin with a dot (‘.’). -f Output is not sorted. This option turns on -a. It also negates the effect of the -r, -S and -t options. As allowed by IEEE Std 1003.1-2008 (“POSIX.1”), this option has no effect on the -d, -l, -R and -s options.

тоись
-а выводит вам скрытые директории(и файлы) те что начинаются с точки. При этом будет произведена сортировка

-f выводит то же что и -a но без любой сортировки (инфа 21%)

ZdraviiSmisl commented Jun 21, 2023 •

Может, стоило указаать , что нужно указывать абсолютный путь для дериктории в которую перещаете файлы? Для комманды перемещения всех файлов из одной папки в другую
mv: cannot stat ’01-starting-setup/.‘: No such file or directory

89610090091 commented Jun 21, 2023 via email

Добрый день! Скорее сообщение было адресовано не мне, хотя с git bash знаком сам. Может сообщение было важным, отправьте в нужный адрес. ср, 21 июн. 2023 г., 17:29 Evgeniy Arapov ***@***.***>:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Footer

© 2024 GitHub, Inc.

You can’t perform that action at this time.

supervoron1 / Шпаргалка git bash

Save supervoron1/510a91d47f3bb51a24e1090f63188bcb to your computer and use it in GitHub Desktop.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

# Шпаргалка по консольным командам Git
## Общее
Git — система контроля версий (файлов). Что-то вроде возможности сохраняться в компьютерных играх (в Git эквивалент игрового сохранения — коммит).
Любой файл в папке существующего репозитория может находиться или не находиться под версионным контролем (отслеживаемые и неотслеживаемые).
Неотслеживаемые файлы можно в любой момент сделать отслеживаемыми и наоборот.
Отслеживаемые файлы могут быть в 3-х состояниях: неизменённые, изменённые, готовые к коммиту. Сразу после клонирования репозитория все файлы — отслеживаемые неизменённые.
После редактирования отслеживаемого файла он становится изменённым. Изменения файла (или нескольких) можно индексировать (подготовить к коммиту) и закоммитить. После коммита такие файлы становятся отслеживаемыми неизменёнными.
Проверить состояние репозитория можно командой `git status`. Она покажет ветку, изменённые файлы (если есть) с пометкой «modified», неотслеживаемые файлы в списке «Untracked files».
## Консольные команды
### Создать новый репозиторий
«` bash
git init # создать новый проект в текущей папке
git init folder-name # создать новый проект в указанной папке
«`
### Клонирование репозитория
«` bash
git clone git@github.com:supervoron1/ruby.git # клонировать удаленный репозиторий в одноименную папку
# или
git clone git@github.com:supervoron1/ruby.git foldername # клонировать удаленный репозиторий в папку «foldername»
«`
### Добавление файлов к отслеживанию, индексация отслеживаемых
«` bash
git add text.txt # добавить к отслеживанию этот существующий файл
git add . # добавить к отслеживанию все новые файлы из текущей папки и её подпапок, индексировать отслеживаемые файлы
git add -i # запуск оболочки интерактивного индексирования для добавления в индекс только выбранных файлов (см. [git-scm.com](http://git-scm.com/book/ru/v1/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B-Git-%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5-%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5))
«`
### Отмена индексации
«` bash
git reset HEAD # убрать из индекса все индексированные файлы
git reset HEAD text.txt # убрать из индекса указанный файл
«`
### Просмотр изменений
«` bash
git diff # посмотреть непроиндексированные изменения (если есть, иначе ничего не выведет)
git diff —staged # посмотреть проиндексированные изменения (если есть, иначе ничего не выведет)
«`
### Отмена изменений
«` bash
git checkout — text.txt # ОПАСНО: отменить все изменения, внесенные в файл со времени предыдущего коммита
git checkout text.txt # ОПАСНО: отменить изменения в непроиндексированном файле
«`
### Коммиты
«` bash
git commit -m «Name of commit» # закоммитить отслеживаемые индексированные файлы (указано название коммита)
git commit -m -a «Name of commit» # закоммитить отслеживаемые индексированные файлы (указано название коммита, не требует git add, не добавит в коммит неотслеживаемые файлы)
git commit # закоммитить отслеживаемые индексированные файлы (откроется редактор для введения названия коммита)
git commit —amend # изменить последний коммит (Insert — режим ввода, : — командный режим; в командном режиме: :wq — сохранить и выйти)
«`
### Отмена коммитов
«` bash
git revert HEAD —no-edit # создать новый коммит, отменяющий изменения последнего коммита (без запуска редактора сообщения)
git reset —hard 75e2d51 # вернуть репозиторий в состояние коммита с указанным хешем
«`
### Удаление файла (просто удалить отслеживаемый файл из папки недостаточно, нужно сделать его неотслеживаемым и отправить коммит)
«` bash
git rm text.txt # удалить из отслеживаемых неиндексированный файл (файл будет удален из папки)
git rm -f text.txt # удалить из отслеживаемых индексированный файл (файл будет удален из папки)
git rm -r log/ # удалить из отслеживаемых всё содержимое папки log/ (папка будет удалена)
git rm ind* # удалить из отслеживаемых все файлы с именем, начинающимся на «ind» в текущей папке (файлы будут удалены из папки)
«`
### Перемещение/переименование файлов (Git не отслеживает перемещения/переименование, но пытается его угадать)
«` bash
git mv text.txt test_new.txt # переименовать файл «text.txt» в «test_new.txt»
git mv readme_new.md folder/ # переместить файл readme_new.md в папку folder/ (должна существовать)
«`
### История изменений
«` bash
git log -2 # показать последние 2 коммита
git log -2 —stat # показать последние 2 коммита и статистику внесенных ими изменений
git log -p -22 # показать последние 22 коммита и внесенную ими разницу на уровне строк (выход из длинного лога: Q)
git log —pretty=format:»%h — %an, %ar : %s» -4 # показать последние 4 коммита с форматированием выводимых данных
git log —graph -10 # показать последние 10 коммитов с ASCII-представлением ветвления
git log —since=2.weeks # показать коммиты за последние 2 недели
git log —pretty=format:»%h %ad | %s%d [%an]» —graph —date=short # мой формат вывода, висящий на алиасе оболочки
git log master..branch_99 # показать коммиты из ветки branch_99, которые не влиты в master
git log branch_99..master # показать коммиты из ветки master, которые не влиты в branch_99
git show 60d6582 # показать изменения из коммита с указанным хешем
git show HEAD^ # показать данные о предыдущем коммите
«`
### Ветки
«` bash
git branch # показать список веток
git branch -v # показать список веток и последний коммит в каждой
git branch new_branch # создать новую ветку с указанным именем
git checkout new_branch # перейти в указанную ветку
git checkout -b new_branch # создать новую ветку с указанным именем и перейти в неё
git merge hotfix # влить в ветку, в которой находимся, данные из ветки hotfix
git branch -d hotfix # удалить ветку hotfix (если её изменения уже влиты в главную ветку)
git branch —merged # показать ветки, уже слитые с активной (их можно удалять)
git branch —no-merged # показать ветки, не слитые с активной
git branch -a # показать все имеющиеся ветки (в т.ч. на удаленных репозиториях)
«`
### Удалённые репозитории
«` bash
git remote -v # показать список удалённых репозиториев, связанных с этим
git remote add origin git@github.com:nicothin/test.git # добавить удалённый репозиторий (с сокр. именем origin) с указанным URL
git remote show origin # получить данные об удалённом репозитории с сокращенным именем origin
git fetch origin # скачать все ветки с удаленного репозитория (с сокр. именем origin), но не сливать со своими ветками
git fetch origin master # то же, но скачивается только указанная ветка
git checkout origin/github_branch # посмотреть ветку, скачанную с удалённого репозитория (локальной редактируемой копии не создаётся! если нужно редактировать, придётся влить)
git checkout —track origin/github_branch # создать локальную ветку github_branch (данные взять из удалённого репозитория с сокр. именем origin, ветка github_branch) и переключиться на неё
git push origin master # отправить в удалённый репозиторий (с сокр. именем origin) данные своей ветки master
git pull origin # влить изменения с удалённого репозитория (все ветки)
git pull origin master # влить изменения с удалённого репозитория (только указанная ветка)
«`
### Разное
«` bash
git clean -f # удалить из репозитория все неотслеживаемые файлы
«`
## Примеры
Собираем коллекцию простых и сложных примеров работы
### Начало работы
Создание нового репозитория, первый коммит, привязка удалённого репозитория с gthub.com, отправка изменений в удалённый репозиторий.
«` bash
git init # инициируем гит в этой папке
touch readme.md # создаем файл readme.md
git add readme.md # делаем этот файл отслеживаемым
git commit -m «Первый коммит» # создаем первый коммит с вменяемым названием
git remote add origin git@github.com:nicothin/test.git # добавляем предварительно созданный пустой удаленный репозиторий
git push origin master # отправляем данные из локального репозитория в удаленный (в ветку master)
«`
### Внесение изменений в коммит
«` bash
subl inc/header.html # редактируем и сохраняем разметку «шапки»
git add inc/header.html # индексируем измененный файл
git commit -m «Убрал телефон из шапки» # делаем коммит
# сознаём, что нужно было еще что-то сделать в этом коммите
git add inc/header.html # индексируем измененный файл
git commit —amend -m ««Шапка»: выполнена задача №34 (вставить-вынуть)» # заново делаем коммит
«`
### Работа с ветками
«` bash
Есть master (публичная версия сайта), хотим масштабно что-то поменять (переверстать «шапку»), но по ходу работ возникает необходимость подправить критичный баг (неправильно указан контакт в «подвале»).
git checkout -b new_page_header # создадим новую ветку для задачи изменения «шапки» и перейдём в неё
subl inc/header.html # редактируем и сохраняем разметку «шапки»
git commit -a -m «Новая шапка: смена логотипа» # делаем первый коммит (работа еще не завершена)
# тут выясняется, что есть баг с контактом в «подвале»
git checkout master # возвращаемся к ветке master
git checkout -b footer_hotfix # создаём ветку (основанную на master) для решения проблемы
subl inc/footer.html # устраняем баг и сохраняем разметку «подвала»
git commit -a -m «Исправление контакта в подвале» # делаем коммит
git checkout master # переключаемся в ветку master
git merge footer_hotfix # вливаем в master изменения из ветки footer_hotfix
git branch -d footer_hotfix # удаляем ветку footer_hotfix
git checkout new_page_header # переключаемся в ветку new_page_header для продолжения работ над «шапкой»
subl inc/header.html # редактируем и сохраняем разметку «шапки»
git commit -a -m «Новая шапка: смена навигации» # делаем коммит (работа над «шапкой» завершена)
git checkout master # переключаемся в ветку master
git merge new_page_header # вливаем в master изменения из ветки new_page_header
git branch -d new_page_header # удаляем ветку new_page_header
«`
### Работа с ветками, конфликт слияния
Есть master (публичная версия сайта), в двух параллельных ветках (branch_1 и branch_2) было отредактировано одно и то же место одного и того же файла, первую ветку (branch_1) влили в master, попытка влить вторую вызывает конфликт.
«` bash
git checkout master # переключаемся на ветку master
git checkout -b branch_1 # создаём ветку branch_1, основанную на ветке master
subl . # редактируем и сохраняем файлы
git commit -a -m «Правка 1» # коммитим (теперь имеем 1 коммит в ветке branch_1)
git checkout master # возвращаемся к ветке master
git checkout -b branch_2 # создаём ветку branch_2, основанную на ветке master
subl . # редактируем и сохраняем файлы
git commit -a -m «Правка 2» # коммитим (теперь имеем 1 коммит в ветке branch_2)
git checkout master # возвращаемся к ветке master
git merge branch_1 # вливаем изменения из ветки branch_1 в текущую ветку (master), удача (автослияние)
git merge branch_2 # вливаем изменения из ветки branch_2 в текущую ветку (master), КОНФЛИКТ автослияния
# Automatic merge failed; fix conflicts and then commit the result.
subl . # выбираем в конфликтных файлах те участки, которые нужно оставить, сохраняем
git commit -a -m «Устранение конфликта» # коммитим результат устранения конфликта
«`
### Синхронизация репозитория-форка с мастер-репозиторием
Есть некий репозиторий на github.com, он него нами был сделан форк, добавлены какие-то изменения. Оригинальный (мастер-) репозиторий был как-то обновлён. Задача: стянуть с мастер-репозитория изменения (которые там внесены уже после того, как мы его форкнули).
«` bash
git remote add upstream git@github.com:address.git # добавляем удаленный репозиторий: сокр. имя — upstream, URL мастер-репозитория
git fetch upstream # качаем все ветки мастер-репозитория, но пока не сливаем со своими
git checkout master # переключаемся на ветку master своего репозитория
git merge upstream/master # вливаем ветку master удалённого репозитория upstream в свою ветку master

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *