{"id":163853,"date":"2012-12-25T12:36:03","date_gmt":"2012-12-25T08:36:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=163853"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=163853","title":{"rendered":"<span class=\"post_title\">\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Git: \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 merge<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441 SVN \u043d\u0430 Git \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0430\u0432\u043e\u043a (\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432 trunk). \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0447\u0435\u0440\u0435\u0437 Git-SVN, \u043d\u043e \u043c\u044b \u043f\u043e\u0448\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0443\u0442\u0451\u043c. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0430\u043a\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 Git, \u043a\u0430\u043a <i>branching<\/i> \u0438 <i>merge<\/i>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u0430\u0445, \u043a\u0430\u043a \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Git \u0438 \u043a\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u043d\u0438\u043c.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u041e \u0441\u0442\u0430\u0442\u044c\u0435<\/h4>\n<p>  \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439, \u0443\u043c\u0435\u044e\u0449\u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Git \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0437\u043d\u0430\u044e\u0449\u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u043b\u0435\u0433\u043a\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0435\u0442\u043e\u043a \u0438 \u0438\u0445 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u0435. \u0412\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 Git (2d242fb3fc19fc9ba046accdd9210be8b9913f64).<\/p>\n<h4>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445: \u043e\u0431\u044a\u0435\u043a\u0442\u044b<\/h4>\n<p>  \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0433\u043b\u0430\u0432\u0435 Pro Git (http:\/\/git-scm.com\/book\/en\/Git-Internals).<\/p>\n<p>  \u0412 Git \u0435\u0434\u0438\u043d\u0438\u0446\u0435\u0439 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442 (\u0430\u043d\u0433\u043b. object), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f 40-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0445\u0435\u0448\u0435\u043c sha1. \u0412 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 Git \u0445\u0440\u0430\u043d\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451: \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438\u0445 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 .git\/objects, \u0430 \u043f\u043e\u0441\u043b\u0435 git gc \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 .pack-\u0444\u0430\u0439\u043b\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435. \u0414\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e zlib.<\/p>\n<p>  \u0423\u0437\u043d\u0430\u0442\u044c \u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u0431\u0440\u0430\u0432 <code>git cat-file -t &lt;sha1&gt;<\/code>. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432:<\/p>\n<h5>BLOB (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430).<\/h5>\n<p>  \u0412 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u0442\u0438\u043f\u0430 BLOB \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0434\u043b\u0438\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438 \u0441\u0430\u043c\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u041d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435: \u043d\u0438 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430, \u043d\u0438 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0442\u0430\u043c \u043d\u0435\u0442.<\/p>\n<p>  \u0418\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 BLOB \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0430 \u043d\u0435 \u0434\u0438\u0444\u0444, \u0432\u044b\u0442\u0435\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0430\u0439\u043b \u043d\u0430 100 000 \u0441\u0442\u0440\u043e\u043a \u0438 \u0432 \u043d\u0435\u0433\u043e \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u043f\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438:<\/p>\n<pre><code>$ git init Initialized empty Git repository in test\/.git\/ $ for((i=0;i&lt;=100000;i++)); do echo $i; done &gt;test.txt $ ls -lh 575K\ttest.txt $ git add test.txt $ git commit -m &quot;First commit&quot; [master (root-commit) b3061d2] First commit  1 file changed, 100001 insertions(+)  create mode 100644 test.txt $ find .git\/objects -type f | xargs ls -lh 204K\t.git\/objects\/97\/578648a76227f183339438512ad99a383b48cc # \u043d\u0430\u0448 \u0444\u0430\u0439\u043b ... $ echo 10001 &gt;&gt; test.txt $ git commit -m &quot;Added another line&quot; test.txt [master 0361e3c] Added another line  1 file changed, 1 insertion(+)  # Git \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430\u0441\u044c 1 \u0441\u0442\u0440\u043e\u043a\u0430 $ find .git\/objects -type f | xargs ls -lh 204K\t.git\/objects\/59\/e434385635dccf949e66353f7a74a077357438 # \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f 204K\t.git\/objects\/97\/578648a76227f183339438512ad99a383b48cc # \u043d\u0430\u0448 \u0441\u0442\u0430\u0440\u044b\u0439 \u0444\u0430\u0439\u043b ... <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u0432\u0435\u0442\u043e\u043a \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432. \u041d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435.<\/p>\n<h5>Tree (\u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u0424\u0421)<\/h5>\n<p>   \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0442\u0438\u043f\u0430 \u0434\u0435\u0440\u0435\u0432\u043e (\u0430\u043d\u0433\u043b. <i>tree<\/i>) \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041e\u0434\u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>&lt;\u043f\u0440\u0430\u0432\u0430 \u0444\u0430\u0439\u043b\u0430&gt; &lt;\u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430&gt; &lt;sha1 \u043e\u0431\u044a\u0435\u043a\u0442\u0430&gt; &lt;\u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430&gt; <\/code><\/pre>\n<p>  \u041f\u0440\u0430\u0432\u0430 \u0444\u0430\u0439\u043b\u0430 \u0432 Git \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043b\u0438\u0448\u044c \u043e\u0447\u0435\u043d\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439:<\/p>\n<p>  040000 \u2014 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f;<br \/>  100644 \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b;<br \/>  100755 \u2014 \u0444\u0430\u0439\u043b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f;<br \/>  120000 \u2014 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430.<\/p>\n<p>  \u0422\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u2014 \u044d\u0442\u043e BLOB \u0438\u043b\u0438 tree, \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0442\u0438\u043f\u0430 tree \u0434\u043b\u044f \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u0441\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f.<\/p>\n<h5>Commit<\/h5>\n<p>  \u0412 Git \u043e\u0434\u0438\u043d <i>\u043a\u043e\u043c\u043c\u0438\u0442<\/i> (\u0430\u043d\u0433\u043b. <i>\u0441ommit<\/i>) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 tree, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 (\u043a\u0440\u043e\u043c\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438). \u0422\u0430\u043a\u0436\u0435 \u0432 \u043a\u043e\u043c\u043c\u0438\u0442\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0430\u0432\u0442\u043e\u0440\u0435 \u0438 UNIX timestamp \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u043c\u0438\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c merge (<code>git merge &lt;\u0438\u043c\u044f \u0432\u0435\u0442\u043a\u0438&gt;<\/code>), \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 2 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f: \u0442\u0435\u043a\u0443\u0449\u0438\u0439 HEAD \u0438 \u043a\u043e\u043c\u043c\u0438\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>&lt;\u0438\u043c\u044f \u0432\u0435\u0442\u043a\u0438&gt;<\/code>. Git \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0441\u043b\u0438\u044f\u043d\u0438\u044f \u00ab\u043e\u0441\u044c\u043c\u0438\u043d\u043e\u0433\u00bb (\u0430\u043d\u0433\u043b. <i>octopus<\/i>), \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c merge \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u0432\u0435\u0442\u043e\u043a. \u0414\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0432\u0443\u0445.<\/p>\n<pre><code>$ git cat-file -p 0361e3c6d16fb3bbbcac8faa4e673667ea6fe20b tree ce9f2ced0ebb4346676879c7b12b92628378477f parent b3061d23da6f1a62dbc8f97b2a06e10e1aee2afa author Yuriy Nasretdinov &lt;...&gt; 1354450065 +0400 committer Yuriy Nasretdinov &lt;...&gt; 1354450065 +0400  Added another line <\/code><\/pre>\n<h5>Pack-\u0444\u0430\u0439\u043b\u044b<\/h5>\n<p>  \u0415\u0441\u043b\u0438 \u0431\u044b Git \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u043b \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0446\u0435\u043b\u0438\u043a\u043e\u043c (\u0445\u043e\u0442\u044c \u0438 \u0441\u0436\u0430\u0442\u044b\u0435), \u043f\u0430\u043f\u043a\u0430 <i>.git<\/i> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 \u0431\u044b \u0438\u0437 \u0441\u0435\u0431\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u0440\u0438\u0447\u0435\u043c \u0438\u0445 \u0431\u044b \u0431\u044b\u043b\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043a\u043e\u043f\u0438\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u0433\u0430\u0434\u043e\u0447\u043d\u044b\u0435 <i>pack-\u0444\u0430\u0439\u043b\u044b<\/i>, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u041a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043d\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u0430\u043b\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a Git \u0445\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u043e\u0442\u0440\u044b\u0432\u043e\u043a \u0438\u0437 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0438\u0441\u044c\u043c\u0430 \u041b\u0438\u043d\u0443\u0441\u0430 \u0422\u043e\u0440\u0432\u0430\u043b\u044c\u0434\u0441\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0447\u0451\u0442 \u044d\u0442\u0438\u0445 \u0437\u0430\u0433\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 (\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"http:\/\/gcc.gnu.org\/ml\/gcc\/2007-12\/msg00165.html\">gcc.gnu.org\/ml\/gcc\/2007-12\/msg00165.html<\/a>):  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u00ab&#8230;It&#8217;s worth explaining (you are probably aware of it, but<br \/>  let me go through the basics anyway) how git delta-chains work, and how<br \/>  they are so different from most other systems.<\/p>\n<p>  In other SCM&#8217;s, a delta-chain is generally fixed. It might be \u00abforwards\u00bb<br \/>  or \u00abbackwards\u00bb, and it might evolve a bit as you work with the repository,<br \/>  but generally it&#8217;s a chain of changes to a single file represented as some<br \/>  kind of single SCM entity. In CVS, it&#8217;s obviously the *,v file, and a lot<br \/>  of other systems do rather similar things.<\/p>\n<p>  Git also does delta-chains, but it does them a lot more \u00abloosely\u00bb. There<br \/>  is no fixed entity. Delta&#8217;s are generated against any random other version<br \/>  that git deems to be a good delta candidate (with various fairly<br \/>  successful heursitics), and there are absolutely no hard grouping rules.<\/p>\n<p>  This is generally a very good thing. It&#8217;s good for various conceptual<br \/>  reasons (ie git internally never really even needs to care about the whole<br \/>  revision chain \u2014 it doesn&#8217;t really think in terms of deltas at all), but<br \/>  it&#8217;s also great because getting rid of the inflexible delta rules means<br \/>  that git doesn&#8217;t have any problems at all with merging two files together,<br \/>  for example \u2014 there simply are no arbitrary *,v \u00abrevision files\u00bb that have<br \/>  some hidden meaning.<\/p>\n<p>  It also means that the choice of deltas is a much more open-ended<br \/>  question. If you limit the delta chain to just one file, you really don&#8217;t<br \/>  have a lot of choices on what to do about deltas, but in git, it really<br \/>  can be a totally different issue\u00bb.  <\/div>\n<\/div>\n<p>  \u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e, \u0442\u043e \u0432 pack-\u0444\u0430\u0439\u043b\u0430\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0441\u0445\u043e\u0436\u0435\u0441\u0442\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0438\u043f \u0438 \u0440\u0430\u0437\u043c\u0435\u0440), \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u043d\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u00ab\u0446\u0435\u043f\u043e\u0447\u0435\u043a\u00bb. \u041f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u0430\u043c\u0443\u044e \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430 \u043d\u0438\u043c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0438\u0444\u0444\u043e\u043c \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443. \u0421\u0430\u043c\u044b\u0435 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u044b\u0448\u0435 \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, Git \u0432\u0441\u0451 \u0436\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u0434\u0438\u0444\u0444\u044b, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0433\u043e API \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0432\u044b\u0448\u0435, Git \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0441\u043b\u0438\u044f\u043d\u0438\u044f \u0438 \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b.<\/p>\n<h5>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438<\/h5>\n<p>  \u0412 Git \u043d\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u0412\u0441\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c, \u043d\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u0439\u0434\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438\u0437 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u0430\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0430. \u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 (\u0438\u043b\u0438 \u043f\u043e \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438), Git \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0421\u0442\u043e\u0438\u0442 \u0438\u043c\u0435\u0442\u044c \u044d\u0442\u043e \u0432\u0432\u0438\u0434\u0443, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 Git, \u0438 \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c Git \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b.<\/p>\n<p>  \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, Git \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043d\u0435\u0442, Git \u043f\u0440\u043e\u0438\u0437\u0432\u0434\u0438\u0442 \u0430\u043d\u0430\u043b\u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0445\u0441\u044f \u0443 \u043d\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c (\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u043c) \u0434\u043e\u043f\u0443\u0441\u043a\u043e\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d.<\/p>\n<h5><i>Merge<\/i>: \u0442\u0440\u0435\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u0435 (\u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f <i>resolve<\/i>)<\/h5>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0432\u0435\u0442\u043e\u043a, \u0442\u043e git \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e <i>recursive<\/i>, \u043d\u043e \u043e \u043d\u0435\u0439 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u0414\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f resolve, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f <a href=\"http:\/\/en.wikipedia.org\/wiki\/Merge_(revision_control)#Three-way_merge\">\u0442\u0440\u0435\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u0435<\/a>. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u0435, \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c 3 \u0432\u0435\u0440\u0441\u0438\u0438: \u043e\u0431\u0449\u0438\u0439 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c, \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0432\u0435\u0442\u043a\u0438 \u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u0442\u043a\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0442\u0440\u0435\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u0435\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <i>diff3<\/i>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Diff3\">diffutils<\/a>. \u042d\u0442\u0430 \u0441\u043a\u0440\u043e\u043c\u043d\u0430\u044f \u0438 \u0440\u0435\u0434\u043a\u043e \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430, \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u044e \u00ab\u0433\u0440\u044f\u0437\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443\u00bb \u043f\u043e \u0441\u043b\u0438\u044f\u043d\u0438\u044e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f RCS, CVS, SVN \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, Git.<\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0430 <i>diff3<\/i> (\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0432 Git \u2014 \u044d\u0442\u043e LibXDiff), Git \u0442\u0430\u043a\u0436\u0435 \u00ab\u043d\u0430 \u043b\u0435\u0442\u0443\u00bb \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0441\u043b\u0438\u044f\u043d\u0438\u044f tree-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0421\u043b\u0438\u044f\u043d\u0438\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u043e \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432.<\/p>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a Git \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u0440\u0435\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 (\u0432\u0437\u044f\u0442\u043e \u0438\u0437 <i>man git-merge<\/i>):<\/p>\n<blockquote><p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u2014 master:<\/p>\n<pre><code>      A---B---C topic      \/ D---E---F---G master<\/code><\/pre>\n<p>  \u0422\u043e\u0433\u0434\u0430 <i>git merge topic<\/i> \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432 topic \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0442\u0432\u0438\u043b\u0430\u0441\u044c (\u043a\u043e\u043c\u043c\u0438\u0442 E), \u0438 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 H, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0432\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c.  <\/p>\n<pre><code>      A---B---C topic      \/         \\ D---E---F---G---H master<\/code><\/pre>\n<p>  <\/p><\/blockquote>\n<p>  \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432 \u0432\u0435\u0442\u043a\u0430\u0445 <i>topic<\/i> \u0438 <i>master<\/i> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0430, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u0443\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e: \u0443 \u043d\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043c\u0438\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u00ab\u043e\u0431\u0449\u0438\u0439 \u043f\u0440\u0435\u0434\u043e\u043a\u00bb:  <\/p>\n<pre><code>      A---B---C---K---L---M topic      \/         \\ D---E---F---G---H---N---O---P master <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e <i>resolve<\/i>, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d \u0441\u0430\u043c\u044b\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u043e\u0431\u0449\u0438\u0439 \u043f\u0440\u0435\u0434\u043e\u043a (\u043a\u043e\u043c\u043c\u0438\u0442 E). \u0415\u0441\u043b\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f merge \u0431\u044b\u043b\u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b, \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043c\u043c\u0438\u0442\u0435 H, \u043d\u0430\u043c \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0438\u0445 \u0435\u0449\u0451 \u0440\u0430\u0437.<\/p>\n<p>  \u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043b\u0438\u044f\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 <i>resolve<\/i> Git \u0432\u043e\u0437\u044c\u043c\u0435\u0442 \u043a\u043e\u043c\u043c\u0438\u0442 E \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043a\u0430 \u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b M \u0438 P \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0432\u0443\u0445 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. \u0415\u0441\u043b\u0438 \u0432 \u043a\u043e\u043c\u043c\u0438\u0442\u0435 C \u0431\u044b\u043b \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442, \u0442\u043e \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <i>git revert<\/i> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043e \u0432 \u043a\u043e\u043c\u043c\u0438\u0442\u0435 K), \u0442\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 M \u0443\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430, \u0438 \u043f\u0440\u0438 \u0441\u043b\u0438\u044f\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<h4>Merge made by the &#8216;recursive&#8217; strategy<\/h4>\n<p>  \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0435\u0431\u0435 \u0442\u0430\u043a\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e:  <\/p>\n<pre><code>      A---B---C---K---L---M topic      \/         \\     \/ D---E---F---G---H---N---O---P master <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c <i>git merge topic<\/i>, \u043d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432 \u0432\u0435\u0442\u043a\u0435 <i>master<\/i>. \u041c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442 E \u043a\u0430\u043a \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043a\u0430, \u043d\u043e Git \u0441\u043e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0435\u0439 <i>recursive<\/i> \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u043d\u0430\u0447\u0435. \u0412 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0434\u043d\u0443 \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e: <a href=\"http:\/\/codicesoftware.blogspot.com\/2011\/09\/merge-recursive-strategy.html\">codicesoftware.blogspot.com\/2011\/09\/merge-recursive-strategy.html<\/a>. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443:  <\/p>\n<ul>\n<li>c\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043e\u0431\u0449\u0438\u0445 \u043f\u0440\u0435\u0434\u043a\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0432\u0435\u0436\u0435\u0433\u043e;<\/li>\n<li>\u0431\u0435\u0440\u0435\u043c \u0437\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043a\u0430;<\/li>\n<li>\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0435\u0434\u043a\u043e\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <i><b>\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442<\/b><\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0435\u0440\u0435\u043c \u0437\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439;<\/li>\n<li>\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u0449\u0438\u0445 \u043f\u0440\u0435\u0434\u043a\u043e\u0432.<\/li>\n<\/ul>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u00ab\u0441\u043c\u0435\u0440\u0436\u0435\u043d\u043d\u043e\u0435\u00bb \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043e\u0431\u0449\u0438\u0445 \u043f\u0440\u0435\u0434\u043a\u043e\u0432 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0442\u043e\u0436\u0435 \u043f\u043e\u043f\u0430\u0434\u0435\u0442 \u0432 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0438\u0442, \u043f\u0440\u0438\u0447\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043a\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u0435\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u0435, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435.<\/p>\n<p>  \u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 <i>merge-recursive.c<\/i>:  <\/p>\n<pre><code>int merge_recursive(...) { &lt;...&gt; \tif (!ca) { \t\tca = get_merge_bases(h1, h2, 1); \t\tca = reverse_commit_list(ca); \t} &lt;...&gt; \tmerged_common_ancestors = pop_commit(&ca); &lt;...&gt; \tfor (iter = ca; iter; iter = iter-&gt;next) { &lt;...&gt; \t\tmerge_recursive(o, merged_common_ancestors, iter-&gt;item, \t\t\t\tNULL, &merged_common_ancestors); &lt;\u2026&gt; \t} &lt;...&gt; \tclean = merge_trees(o, h1-&gt;tree, h2-&gt;tree, merged_common_ancestors-&gt;tree, &mrtree); &lt;...&gt; \treturn clean; } <\/code><\/pre>\n<h4>\u041d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Git<\/h4>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0441 Git, \u0442\u043e \u0432\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0437\u043d\u0430\u0435\u0442\u0435 \u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0445 checkout, branch, pull, push, rebase, commit \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445. \u041d\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e Git \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043d\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439, \u0430 \u043a\u0430\u043a \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0435\u0451 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 Git \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u0433\u0430\u0442\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 \u043d\u0438\u0437\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445, \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435, \u043d\u0430 \u043d\u0430\u0448 \u0432\u0437\u0433\u043b\u044f\u0434:<\/p>\n<h5>git rev-parse &lt;revision&gt;<\/h5>\n<p>  \u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439: \u043e\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0445\u0435\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, git rev-parse HEAD \u0432\u0435\u0440\u043d\u0435\u0442 \u0445\u0435\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 HEAD.<\/p>\n<h5>git rev-list &lt;commit&gt;&#8230;<\/h5>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0445\u0435\u0448\u0435\u0439 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 <code>git log<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>git rev-list branch ^origin\/branch ^origin\/master <\/code>\u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u0438\u0437 \u0432\u0435\u0442\u043a\u0438 branch, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0437\u0430\u043f\u0443\u0448\u0435\u043d\u044b (\u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e origin\/branch \u0438 origin\/master \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0432\u0435\u0436\u0438\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d <code>git fetch<\/code>).<\/p>\n<p>  <i>\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438:<\/i> \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u0438\u0434\u0430 <i>branch ^other_branch<\/i>, Git \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0435\u0441\u043b\u0438 \u0443 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0441\u0442\u043e\u0438\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u044b \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u00ab\u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c\u00bb \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 merge \u0432\u0435\u0442\u043a\u0438.<\/p>\n<h5>git diff-index<\/h5>\n<p>  \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043a\u043e\u043f\u0438\u0435\u0439 \u0438 <i>\u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c<\/i> (.git\/index). \u0412 \u0438\u043d\u0434\u0435\u043a\u0441\u0435 Git \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u0435\u0448 <i>lstat()<\/i> \u043e\u0442 \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d \u0437\u043d\u0430\u0435\u0442.<\/p>\n<p>  <i>\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438:<\/i> \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 (\u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043f\u0438\u044e \u043f\u0430\u043f\u043a\u0438), \u0442\u043e git diff-index \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0445\u043e\u0442\u044f \u0438\u0445 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435\u0442. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 <i>.git\/index<\/i> \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f <i>lstat<\/i>, \u0432\u043a\u043b\u044e\u0447\u0430\u044f <i>inode<\/i>, \u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 <i>diff-index<\/i> \u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c <i>git update-index<\/i>, \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <i>git diff<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e .git\/index: <a href=\"http:\/\/www.kernel.org\/pub\/software\/scm\/git\/docs\/v1.6.5\/technical\/racy-git.txt\">www.kernel.org\/pub\/software\/scm\/git\/docs\/v1.6.5\/technical\/racy-git.txt<\/a><\/p>\n<h5>git cat-file &lt;object&gt;<\/h5>\n<p>  \u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u043e \u0435\u0451 \u0432\u0441\u0451 \u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0435\u0449\u0451 \u0440\u0430\u0437. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Git.<\/p>\n<h5>git ls-tree &lt;object&gt;<\/h5>\n<p>  \u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 tree-\u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<h5>git ls-remote &lt;repository&gt;<\/h5>\n<p>  \u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0442\u043a\u0430\u0445 \u0438 \u0442\u0435\u0433\u0430\u0445 (\u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0445\u0435\u0448\u0430\u043c\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432) \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.<\/p>\n<h5>GIT_SSH<\/h5>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 <i>git pull<\/i>, \u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e SSH \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u00ab\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438\u00bb \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u043f\u0440\u0438\u0447\u0451\u043c \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u0438\u0437\u044f\u0449\u043d\u043e\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e GIT_SSH \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0443\u0442\u0435\u043c \u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 (\u0430 \u043d\u0435 \u043e\u043f\u0446\u0438\u0438 SSH):  <\/p>\n<pre><code class=\"bash\">echo '#!\/bin\/sh exec ssh -o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=\/dev\/null \\&quot;\\$@\\&quot;' &gt;\/tmp\/gitssh; chmod +x \/tmp\/gitssh; # \u0434\u0435\u043b\u0430\u0435\u043c git pull: GIT_SSH=\/tmp\/gitssh git pull \u2026 <\/code><\/pre>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, Git \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u0435\u0442\u043a\u0430\u043c\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0434\u0432\u0443\u0445 \u0432\u0435\u0442\u043e\u043a \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043a\u0430. \u0415\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0448\u0435\u0439 \u0446\u0435\u043b\u044c\u044e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439, \u043c\u044b \u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b Git, \u0430 \u043d\u0435 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u0438\u044f\u043d\u0438\u044f.<\/p>\n<p>  \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u0430\u0441 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 Git \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u0430 \u043d\u0435 \u0438\u043d\u0430\u0447\u0435. \u041f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043a Git, \u043f\u0440\u0438\u0432\u043e\u0434\u044f \u043a \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u043c\u0443 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb. <\/p>\n<p>  <i>\u042e\u0440\u0438\u0439 \u041d\u0430\u0441\u0440\u0435\u0442\u0434\u0438\u043d\u043e\u0432, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Badoo<\/i>    \t   \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/badoo\/blog\/163853\/\"> http:\/\/habrahabr.ru\/company\/badoo\/blog\/163853\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441 SVN \u043d\u0430 Git \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0430\u0432\u043e\u043a (\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432 trunk). \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0447\u0435\u0440\u0435\u0437 Git-SVN, \u043d\u043e \u043c\u044b \u043f\u043e\u0448\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0443\u0442\u0451\u043c. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0430\u043a\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 Git, \u043a\u0430\u043a <i>branching<\/i> \u0438 <i>merge<\/i>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u0430\u0445, \u043a\u0430\u043a \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Git \u0438 \u043a\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u043d\u0438\u043c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-163853","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/163853","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=163853"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/163853\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=163853"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=163853"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=163853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}