Не смотря на то, что в интернете километр статей о Гите, я потратил кучу времени, чтобы найти информацию о совершенно базовых операциях, ради которых многие и решают использовать Гит.

---

1) Как откатиться на пару коммитов назад?
git checkout 767f9f1

767f9f1 - идентификатор коммита, можно взять на Битбакете.

После отката у вас перестанет работать команда git pull, потому что Гит не знает, какую ветку теперь пулить. Лучше всего сперва вернуться обратно к последнему коммиту, а потом делать пул.

---

2) Как вернуться к последнему коммиту?
git checkout master

Для крутых программистов стоит отметить, что семантика чекаутов немного шире и глубже, но для простоты объяснения я вот так вот пишу.

---

3) Как добавить все изменённые файлы в индекс и закоммитить?
git add .
git commit -m "Best commit"

---

4) Как отменить изменения, сделанные в файле со времени последнего коммита?
git checkout protected/file.php

---

5) Случайно в прошлом коммите добавил в индекс лишний файл, как его теперь удалить?

Чаще всего в индекс добавляется даже не файл, а папка с файлами, которую забыли прописать в эксклуды. Если такое случилось, то для начала надо:

а) Добавить-таки в эксклуды ненавистную папку.

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

git rm protected/file.php

Опасность в том, что эта команда не только удаляет файл из индекса, но и удаляет сам файл на сервере.

---

6) Как удалить файл из индекса, но чтобы он остался на сервере?
git rm --cached protected/file.php

---

7) Поудалял кучу файлов лишних на сервере, но теперь они в статусе deleted, как удалить их из индекса?

К сожалению, удалось найти только труднозапоминаемое решение, которое бы позволяло волшебно удалить все файлы в статусе deleted.

git status | sed -n '/^# *deleted:/s///p' | xargs git rm

Либо надо убирать по одному файлику (см. пункт 5). Есть ещё вариант: удалять из индекса можно файлы по максе, например:

git rm protected/\*.php

Но если все файлы в разных папках, то придётся всё-таки по одному.

8) Нет возможности сделать коммит из-за trailing whitespace/

Когда нет времени разбираться с этой проблемой, следует выполнить коммит с ключом --no-verify.

git commit -m "Commit" --no-verify
9) Как зачистить все файлы на состояние последнего коммита? Удалить все untracked файлы и вернуть все изменённые.

Вот такая вот магия:

git reset --hard && git status --porcelain -uall | egrep '^\?\?' | awk '{ print $2; }' | xargs rm
15 февраля 2014

Автор: Иван Огнёв

Комментарии (0)

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