HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p><em>Это перевод заметки "<a>Oh shit, git!</a>" от Katie Sylor-Miller.</em></p>
1 <p><em>Это перевод заметки "<a>Oh shit, git!</a>" от Katie Sylor-Miller.</em></p>
2 <p>Git - сложная штука. Испортить все очень легко, а исправить проблему иногда чертовски сложно. В официальной документации прослеживается проблема курицы и яйца: сложно понять как выйти из сложной ситуации если не знаешь название штуки, которая тебе требуется чтобы исправить проблему.</p>
2 <p>Git - сложная штука. Испортить все очень легко, а исправить проблему иногда чертовски сложно. В официальной документации прослеживается проблема курицы и яйца: сложно понять как выйти из сложной ситуации если не знаешь название штуки, которая тебе требуется чтобы исправить проблему.</p>
3 <p>Вот список плохих ситуаций, в которые я попадала, и как я в итоге смогла выбраться. На простом языке!</p>
3 <p>Вот список плохих ситуаций, в которые я попадала, и как я в итоге смогла выбраться. На простом языке!</p>
4 <h3>Ой, блин, я сделал что-то не то. Тут же есть машина времени, правда?..</h3>
4 <h3>Ой, блин, я сделал что-то не то. Тут же есть машина времени, правда?..</h3>
5 <h3>Блин! Сделал коммит, но понял, что забыл одну мелочь</h3>
5 <h3>Блин! Сделал коммит, но понял, что забыл одну мелочь</h3>
6 <p># сделай что хотел git add . # или добавляй файлы по одному git commit --amend # теперь измени или оставь старое сообщение коммита # теперь твой последний коммит включает то новое изменение!</p>
6 <p># сделай что хотел git add . # или добавляй файлы по одному git commit --amend # теперь измени или оставь старое сообщение коммита # теперь твой последний коммит включает то новое изменение!</p>
7 <h3>Ой, блин, нужно изменить сообщение в последнем коммите</h3>
7 <h3>Ой, блин, нужно изменить сообщение в последнем коммите</h3>
8 <p>git commit --amend # тут можно изменить сообщение</p>
8 <p>git commit --amend # тут можно изменить сообщение</p>
9 <h3>Бли-и-ин! Коммитнул в мастер, а надо было в новую ветку!</h3>
9 <h3>Бли-и-ин! Коммитнул в мастер, а надо было в новую ветку!</h3>
10 <p># создай новую ветку на основе мастера git branch some-new-branch-name # удали последний коммит из мастера git reset HEAD~ --hard git checkout some-new-branch-name # теперь тот коммит в новой ветке! :)</p>
10 <p># создай новую ветку на основе мастера git branch some-new-branch-name # удали последний коммит из мастера git reset HEAD~ --hard git checkout some-new-branch-name # теперь тот коммит в новой ветке! :)</p>
11 <p>Естественно, это не сработает если ты уже сделал пуш в origin. Ну, и если коммитов больше, чем один, то надо git reset HEAD@{число}.</p>
11 <p>Естественно, это не сработает если ты уже сделал пуш в origin. Ну, и если коммитов больше, чем один, то надо git reset HEAD@{число}.</p>
12 <h3>Блин! Коммитнул не в ту ветку.</h3>
12 <h3>Блин! Коммитнул не в ту ветку.</h3>
13 <p># отмени последний коммит, но оставь изменения git reset HEAD~ --soft git stash # перейди в нужную ветку git checkout name-of-the-correct-branch git stash pop git add . # или добавь файлы по одному git commit -m "your message here" # теперь изменения в нужной ветке</p>
13 <p># отмени последний коммит, но оставь изменения git reset HEAD~ --soft git stash # перейди в нужную ветку git checkout name-of-the-correct-branch git stash pop git add . # или добавь файлы по одному git commit -m "your message here" # теперь изменения в нужной ветке</p>
14 <p>Другой вариант - использовать cherry-pick:</p>
14 <p>Другой вариант - использовать cherry-pick:</p>
15 <p>git checkout name-of-the-correct-branch # возьми последний коммит мастера git cherry-pick master # удали его из мастера git checkout master git reset HEAD~ --hard</p>
15 <p>git checkout name-of-the-correct-branch # возьми последний коммит мастера git cherry-pick master # удали его из мастера git checkout master git reset HEAD~ --hard</p>
16 <h3>Блин, сделал diff, но ничего не происходит!</h3>
16 <h3>Блин, сделал diff, но ничего не происходит!</h3>
17 <p>git diff --staged</p>
17 <p>git diff --staged</p>
18 <p>Git показывает изменения в diff только для тех файлов, которые еще не добавлены в staging area (еще не сделан git add). С флагом --staged будет показывать diff для добавленных файлов.</p>
18 <p>Git показывает изменения в diff только для тех файлов, которые еще не добавлены в staging area (еще не сделан git add). С флагом --staged будет показывать diff для добавленных файлов.</p>
19 <h3>Нахрен всё, я сдаюсь</h3>
19 <h3>Нахрен всё, я сдаюсь</h3>
20 <p>cd .. sudo rm -r fucking-git-repo-dir git clone https://some.github.url/fucking-git-repo-dir.git cd fucking-git-repo-dir</p>
20 <p>cd .. sudo rm -r fucking-git-repo-dir git clone https://some.github.url/fucking-git-repo-dir.git cd fucking-git-repo-dir</p>