Git Magic. Уроки истории | Participants
|
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translated in draft, editing and proof-reading required.
If you do not want to register an account, you can sign in with OpenID.
Git Magic. Chapter. Lessons of History | ||
== Lessons of History == | ||
A consequence of Git's distributed nature is that history can be edited easily. But if you tamper with the past, take care: only rewrite that part of history which you alone possess. Just as nations forever argue over who committed what atrocity, if someone else has a clone whose version of history differs to yours, you will have trouble reconciling when your trees interact. | Вследствие распределенной природы Git, историю изменений можно легко редактировать. Однако, если вы вмешиваетесь в прошлое, будьте осторожны: изменяйте только ту часть истории, которой владеете вы и только вы. И также как государства бесконечно выясняют, кто же именно совершил и какие бесчинства, так и у вас будут проблемы с примирением после взаимодействия деревьев истории. | |
Of course, if you control all the other trees too, then there is no problem | Конечно, если вы также контролируете и все остальные деревья, то нет никаких проблем | |
since you can overwrite them. | ||
Some developers strongly feel history should be immutable, warts and all. | Некоторые разработчики убеждены, что история должна быть неизменна со всеми огрехами и прочим. | |
Others feel trees should be made presentable before they are unleashed in | Другие считают, что деревья должны быть презентабельными, до того как они выпустят их в публичный доступ. | |
public. Git accommodates both viewpoints. Like cloning, branching and merging, rewriting history is simply another power Git gives you. It is up to you to use it wisely. | Git учитывает оба мнения. Также как клонирование, ветвление и слияние, переписывание истории - это просто еще одна возможность, которую дает вам Git. Разумное ее использование зависит только от вас. | |
=== I Stand Corrected === | ||
Did you just commit, but wish you had typed a different message? Then run: | Только что сделали коммит и уже хотите изменить запись в журнале? Запустите: | |
$ git commit --amend | ||
to change the last message. Realized you forgot to add a file? Run *git add* to add it, and then run the above command. | чтобы изменить последнее сообщение коммита. Осознали, что забыли добавить файл? Запустите *git add*, чтобы это сделать и выполните вышеуказанную команду. | |
Want to include a few more edits in that last commit? Then make those edits and run: | Захотелось добавить еще немного изменений в последнюю фиксацию (commit)? Так сделайте их и запустите: | |
$ git commit --amend -a | ||
=== ... And Then Some === | ||
Let's suppose the previous problem is ten times worse. After a lengthy session you've made a bunch of commits. But you're not quite happy with the way they're organized, and some of those commit messages could use rewording. Then type: | Давайте представим себе, что предыдущая проблема на самом деле в десять раз хуже. После длительной работы вы сделали ряд фиксаций, но вы не очень-то довольны тем, как они организованы и кое-какие записи в журнале (commit messages) надо бы слегка переформулировать. В этом случае запустите: | |
$ git rebase -i HEAD~10 | ||
and the last 10 commits will appear in your favourite $EDITOR. A sample excerpt: | и записи в журнале от последних 10-ти фиксаций появятся в вашем любимом редаторе (задается переменной окружения $EDITOR). Вот кусок примера: | |
pick 5c6eb73 Added repo.or.cz link | ||
pick a311a64 Reordered analogies in "Work How You Want" | pick a311a64 Сменил порядок в "Работай как хочешь" | |
pick 100834f Added push target to Makefile | ||
Then: | ||
- Remove commits by deleting lines. | — удалением -> удаляя как в следующем абзаце — ivan.borzenkov | |
- Reorder commits by reordering lines. | ||
- Replace "pick" with "edit" to mark a commit for amending. | - Заменяем "pick" на "edit", если требуется внести изменения в коммиты. | |
- Replace "pick" with "squash" to merge a commit with the previous one. | - Заменяем "pick" на "squash" для слияния коммита с предыдущим. | |
If you marked a commit for editing, then run: | Если вы отметили коммит для исправлений, запустите: | |
$ git commit --amend | ||
Otherwise, run: |
License: GNU General Public License version 3

— Уважаемые коллеги, я создал открытый репозиторий gitmagic-ru, где хранится вся работа: http://github.com/mifistor/gitmagic-ru Вы можете скачать и посмотреть черновой вариант: http://files.getdropbox.com/u/281916/... Если в книге Вам не понравился или был непонятен перевод, пожалуйста свяжитесь со мной: mifistor@gmail.com — mifistor