Skip to content

Commit 875b5d2

Browse files
dschodscho
authored andcommitted
Merge branch 'book-bg' of bundle-bg/bg.bundle into hugo
2 parents c0d837e + 0050828 commit 875b5d2

File tree

854 files changed

+28899
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

854 files changed

+28899
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
### DO NOT EDIT! Generated by script/update-book2.rb
3+
redirect_to: book/bg/v2
4+
---

external/book/content/book/bg/v2/Git-и-други-системи-Git-като-клиент.html

Lines changed: 1980 additions & 0 deletions
Large diffs are not rendered by default.

external/book/content/book/bg/v2/Git-и-други-системи-Миграция-към-Git.html

Lines changed: 1061 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
### DO NOT EDIT! Generated by script/update-book2.rb
3+
category: book
4+
section: documentation
5+
subsection: book
6+
sidebar: book
7+
book:
8+
language_code: bg
9+
chapter:
10+
title: Git и други системи
11+
number: 7
12+
section:
13+
title: Обобщение
14+
number: 3
15+
cs_number: '7.3'
16+
previous: book/bg/v2/Git-и-други-системи-Миграция-към-Git
17+
next: book/bg/v2/Git-на-ниско-ниво-Plumbing-и-Porcelain-команди
18+
title: Git - Обобщение
19+
url: "/book/bg/v2/Git-и-други-системи-Обобщение.html"
20+
---
21+
<h2 id="_обобщение_11">Обобщение</h2>
22+
<div class="paragraph">
23+
<p>Сега би трябвало да се чувствате комфортно използвайки Git като клиент с други version-control системи или импортирайки почти всяко налично хранилище в Git без да губите данни.
24+
В следващата глава ще разгледаме механизмите на Git на по-ниско ниво, така че ако е необходимо да можете да пипнете и последната подробност, която искате да настроите.</p>
25+
</div>
26+
<div id="nav"><a href="{{< previous-section >}}">prev</a> | <a href="{{< next-section >}}">next</a></div>

external/book/content/book/bg/v2/Git-инструменти-Credential-Storage-система.html

Lines changed: 358 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 306 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,306 @@
1+
---
2+
### DO NOT EDIT! Generated by script/update-book2.rb
3+
category: book
4+
section: documentation
5+
subsection: book
6+
sidebar: book
7+
book:
8+
language_code: bg
9+
chapter:
10+
title: Git инструменти
11+
number: 5
12+
section:
13+
title: Rerere
14+
number: 9
15+
cs_number: '5.9'
16+
previous: book/bg/v2/Git-инструменти-Сливане-за-напреднали
17+
next: book/bg/v2/Git-инструменти-Дебъгване-с-Git
18+
title: Git - Rerere
19+
url: "/book/bg/v2/Git-инструменти-Rerere.html"
20+
---
21+
<h2 id="ref_rerere">Rerere</h2>
22+
<div class="paragraph">
23+
<p>Функционалността на <code>git rerere</code> е един вид скрита опция.
24+
Името идва от фразата “reuse recorded resolution” и както името подсказва, позволява ви се да укажете на Git да запомня как сте разрешили даден конфликт така че следващия път, когато той възникне отново — да бъде автоматично разрешен.</p>
25+
</div>
26+
<div class="paragraph">
27+
<p>Има няколко сценария, когато това може да ви е от помощ.
28+
Един от примерите е упоменат в документацията и описва ситуация, в която искате да сте сигурни, че продължително съществуващ topic клон ще се слива чисто винаги, но не желаете да имате множество междинни сливащи къмити задръстващи историята ви.
29+
С разрешен <code>rerere</code>, можете да опитате случайно сливане, да разрешите конфликтите и след това да откажете сливането.
30+
Ако правите това продължително, тогава финалното сливане би трябвало да е лесно, защото <code>rerere</code> ще свърши корекциите вместо вас.</p>
31+
</div>
32+
<div class="paragraph">
33+
<p>Същата тактика може да се използва, ако искате да пазите даден клон пребазиран и не желаете да се занимавате с едни и същи конфликти при пребазиране всеки път.
34+
Или, ако искате да вземете клон, който сте слели и в който сте разрешили много конфликти и след това пожелаете да го пребазирате — най-вероятно не искате да виждате всичките конфликти отново.</p>
35+
</div>
36+
<div class="paragraph">
37+
<p>Друго приложение на <code>rerere</code> е когато случайно сливате множество развиващи се клонове в едно за тестване както Git проекта прави например.
38+
Ако тестовете не минават успешно, можете да превъртите назад сливанията и да ги повторите без участието на topic клона, който ги проваля без да трябва да решавате конфликтите отново.</p>
39+
</div>
40+
<div class="paragraph">
41+
<p>За да активирате <code>rerere</code> функционалността, просто изпълнете:</p>
42+
</div>
43+
<div class="listingblock">
44+
<div class="content">
45+
<pre class="highlight"><code class="language-console" data-lang="console">$ git config --global rerere.enabled true</code></pre>
46+
</div>
47+
</div>
48+
<div class="paragraph">
49+
<p>Можете да я разрешите и за конкретно хранилище създавайки директорията <code>.git/rr-cache</code>, но конфигурационната опция е по-чист начин и позволява глобална настройка.</p>
50+
</div>
51+
<div class="paragraph">
52+
<p>Нека видим просто пример подобен на предишните.
53+
Имаме файл <code>hello.rb</code> със съдържание:</p>
54+
</div>
55+
<div class="listingblock">
56+
<div class="content">
57+
<pre class="highlight"><code class="language-ruby" data-lang="ruby">#! /usr/bin/env ruby
58+
59+
def hello
60+
puts 'hello world'
61+
end</code></pre>
62+
</div>
63+
</div>
64+
<div class="paragraph">
65+
<p>В един от клоновете ни сменяме думата “hello” на “hola”, след това в друг клон променяме “world” на “mundo”, точно както преди.</p>
66+
</div>
67+
<div class="imageblock">
68+
<div class="content">
69+
<img src="{{< relurl "book/bg/v2/images/rerere1.png" >}}" alt="rerere1">
70+
</div>
71+
</div>
72+
<div class="paragraph">
73+
<p>Когато сливаме двата клона в едно, получаваме конфликт по съдържание:</p>
74+
</div>
75+
<div class="listingblock">
76+
<div class="content">
77+
<pre class="highlight"><code class="language-console" data-lang="console">$ git merge i18n-world
78+
Auto-merging hello.rb
79+
CONFLICT (content): Merge conflict in hello.rb
80+
Recorded preimage for 'hello.rb'
81+
Automatic merge failed; fix conflicts and then commit the result.</code></pre>
82+
</div>
83+
</div>
84+
<div class="paragraph">
85+
<p>Забелязваме новия ред от изхода, <code>Recorded preimage for FILE</code>.
86+
Освен него, всичко си изглежда като при нормален конфликт.
87+
На този етап <code>rerere</code> може да ни каже няколко неща.
88+
Нормално, можете да пуснете <code>git status</code> за да видите какъв е конфликта:</p>
89+
</div>
90+
<div class="listingblock">
91+
<div class="content">
92+
<pre class="highlight"><code class="language-console" data-lang="console">$ git status
93+
# On branch master
94+
# Unmerged paths:
95+
# (use "git reset HEAD &lt;file&gt;..." to unstage)
96+
# (use "git add &lt;file&gt;..." to mark resolution)
97+
#
98+
# both modified: hello.rb
99+
#</code></pre>
100+
</div>
101+
</div>
102+
<div class="paragraph">
103+
<p>Обаче, командата <code>git rerere</code> в допълнение ще ви уведоми, че е запомнила статуса преди сливането:</p>
104+
</div>
105+
<div class="listingblock">
106+
<div class="content">
107+
<pre class="highlight"><code class="language-console" data-lang="console">$ git rerere status
108+
hello.rb</code></pre>
109+
</div>
110+
</div>
111+
<div class="paragraph">
112+
<p>А <code>git rerere diff</code> ще ви покаже текущия статус на корекцията на конфликта — с какво сте започнали корекцията и как сте я завършили.</p>
113+
</div>
114+
<div class="listingblock">
115+
<div class="content">
116+
<pre class="highlight"><code class="language-console" data-lang="console">$ git rerere diff
117+
--- a/hello.rb
118+
+++ b/hello.rb
119+
@@ -1,11 +1,11 @@
120+
#! /usr/bin/env ruby
121+
122+
def hello
123+
-&lt;&lt;&lt;&lt;&lt;&lt;&lt;
124+
- puts 'hello mundo'
125+
-=======
126+
+&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD
127+
puts 'hola world'
128+
-&gt;&gt;&gt;&gt;&gt;&gt;&gt;
129+
+=======
130+
+ puts 'hello mundo'
131+
+&gt;&gt;&gt;&gt;&gt;&gt;&gt; i18n-world
132+
end</code></pre>
133+
</div>
134+
</div>
135+
<div class="paragraph">
136+
<p>Също така (и това няма връзка с <code>rerere</code>), можете да използвате <code>git ls-files -u</code> за да видите конфликтните файлове и техните версии — оригинална, лява и дясна:</p>
137+
</div>
138+
<div class="listingblock">
139+
<div class="content">
140+
<pre class="highlight"><code class="language-console" data-lang="console">$ git ls-files -u
141+
100644 39804c942a9c1f2c03dc7c5ebcd7f3e3a6b97519 1 hello.rb
142+
100644 a440db6e8d1fd76ad438a49025a9ad9ce746f581 2 hello.rb
143+
100644 54336ba847c3758ab604876419607e9443848474 3 hello.rb</code></pre>
144+
</div>
145+
</div>
146+
<div class="paragraph">
147+
<p>Сега можете да разрешите конфликта, така че редът да е <code>puts 'hola mundo'</code> и да пуснете <code>git rerere diff</code> отново, за да видите какво ще бъде запомнено от rerere:</p>
148+
</div>
149+
<div class="listingblock">
150+
<div class="content">
151+
<pre class="highlight"><code class="language-console" data-lang="console">$ git rerere diff
152+
--- a/hello.rb
153+
+++ b/hello.rb
154+
@@ -1,11 +1,7 @@
155+
#! /usr/bin/env ruby
156+
157+
def hello
158+
-&lt;&lt;&lt;&lt;&lt;&lt;&lt;
159+
- puts 'hello mundo'
160+
-=======
161+
- puts 'hola world'
162+
-&gt;&gt;&gt;&gt;&gt;&gt;&gt;
163+
+ puts 'hola mundo'
164+
end</code></pre>
165+
</div>
166+
</div>
167+
<div class="paragraph">
168+
<p>Казано с други думи това означава, че когато Git намери конфликт във файла <code>hello.rb</code>, при който има “hello mundo” от едната страна и “hola world” на другата, той ще го коригира автоматично използвайки “hola mundo”.</p>
169+
</div>
170+
<div class="paragraph">
171+
<p>Сега можем да маркираме конфликта като разрешен и да къмитнем:</p>
172+
</div>
173+
<div class="listingblock">
174+
<div class="content">
175+
<pre class="highlight"><code class="language-console" data-lang="console">$ git add hello.rb
176+
$ git commit
177+
Recorded resolution for 'hello.rb'.
178+
[master 68e16e5] Merge branch 'i18n'</code></pre>
179+
</div>
180+
</div>
181+
<div class="paragraph">
182+
<p>Виждаме съобщението "Recorded resolution for FILE".</p>
183+
</div>
184+
<div class="imageblock">
185+
<div class="content">
186+
<img src="{{< relurl "book/bg/v2/images/rerere2.png" >}}" alt="rerere2">
187+
</div>
188+
</div>
189+
<div class="paragraph">
190+
<p>Сега, нека да отменим това сливане и да го пребазираме на върха на <code>master</code> клона.
191+
Можем да преместим клона назад с <code>git reset</code> както видяхме в <a href="{{< relurl "book/bg/v2/ch00/_git_reset" >}}">Мистерията на командата Reset</a>.</p>
192+
</div>
193+
<div class="listingblock">
194+
<div class="content">
195+
<pre class="highlight"><code class="language-console" data-lang="console">$ git reset --hard HEAD^
196+
HEAD is now at ad63f15 i18n the hello</code></pre>
197+
</div>
198+
</div>
199+
<div class="paragraph">
200+
<p>Сега сливането ни е отменено.
201+
Следва да пребазираме topic клона.</p>
202+
</div>
203+
<div class="listingblock">
204+
<div class="content">
205+
<pre class="highlight"><code class="language-console" data-lang="console">$ git checkout i18n-world
206+
Switched to branch 'i18n-world'
207+
208+
$ git rebase master
209+
First, rewinding head to replay your work on top of it...
210+
Applying: i18n one word
211+
Using index info to reconstruct a base tree...
212+
Falling back to patching base and 3-way merge...
213+
Auto-merging hello.rb
214+
CONFLICT (content): Merge conflict in hello.rb
215+
Resolved 'hello.rb' using previous resolution.
216+
Failed to merge in the changes.
217+
Patch failed at 0001 i18n one word</code></pre>
218+
</div>
219+
</div>
220+
<div class="paragraph">
221+
<p>Сега получихме същия конфликт, който очакваме, но обърнете внимание на реда <code>Resolved FILE using previous resolution</code> в отпечатания изход.
222+
Ако погледнем файла ще видим, че той вече е коригиран и не съдържа маркери за конфликт.</p>
223+
</div>
224+
<div class="listingblock">
225+
<div class="content">
226+
<pre class="highlight"><code class="language-ruby" data-lang="ruby">#! /usr/bin/env ruby
227+
228+
def hello
229+
puts 'hola mundo'
230+
end</code></pre>
231+
</div>
232+
</div>
233+
<div class="paragraph">
234+
<p>Също, <code>git diff</code> ще ни покаже как е направена автоматичната корекция:</p>
235+
</div>
236+
<div class="listingblock">
237+
<div class="content">
238+
<pre class="highlight"><code class="language-console" data-lang="console">$ git diff
239+
diff --cc hello.rb
240+
index a440db6,54336ba..0000000
241+
--- a/hello.rb
242+
+++ b/hello.rb
243+
@@@ -1,7 -1,7 +1,7 @@@
244+
#! /usr/bin/env ruby
245+
246+
def hello
247+
- puts 'hola world'
248+
- puts 'hello mundo'
249+
++ puts 'hola mundo'
250+
end</code></pre>
251+
</div>
252+
</div>
253+
<div class="imageblock">
254+
<div class="content">
255+
<img src="{{< relurl "book/bg/v2/images/rerere3.png" >}}" alt="rerere3">
256+
</div>
257+
</div>
258+
<div class="paragraph">
259+
<p>Можете също да пресъздадете конфликтния статус на файла с <code>git checkout</code>:</p>
260+
</div>
261+
<div class="listingblock">
262+
<div class="content">
263+
<pre class="highlight"><code class="language-console" data-lang="console">$ git checkout --conflict=merge hello.rb
264+
$ cat hello.rb
265+
#! /usr/bin/env ruby
266+
267+
def hello
268+
&lt;&lt;&lt;&lt;&lt;&lt;&lt; ours
269+
puts 'hola world'
270+
=======
271+
puts 'hello mundo'
272+
&gt;&gt;&gt;&gt;&gt;&gt;&gt; theirs
273+
end</code></pre>
274+
</div>
275+
</div>
276+
<div class="paragraph">
277+
<p>Видяхме пример за това в <a href="{{< relurl "book/bg/v2/ch00/_advanced_merging" >}}">Сливане за напреднали</a>.
278+
Засега обаче, нека да го коригираме отново като просто изпълним <code>git rerere</code> повторно:</p>
279+
</div>
280+
<div class="listingblock">
281+
<div class="content">
282+
<pre class="highlight"><code class="language-console" data-lang="console">$ git rerere
283+
Resolved 'hello.rb' using previous resolution.
284+
$ cat hello.rb
285+
#! /usr/bin/env ruby
286+
287+
def hello
288+
puts 'hola mundo'
289+
end</code></pre>
290+
</div>
291+
</div>
292+
<div class="paragraph">
293+
<p>Сега сме повторили корекцията автоматично използвайки кешираната от <code>rerere</code> информация за нея.
294+
Сега можете да добавите файла и да продължите пребазирането, за да го завършите.</p>
295+
</div>
296+
<div class="listingblock">
297+
<div class="content">
298+
<pre class="highlight"><code class="language-console" data-lang="console">$ git add hello.rb
299+
$ git rebase --continue
300+
Applying: i18n one word</code></pre>
301+
</div>
302+
</div>
303+
<div class="paragraph">
304+
<p>И така, ако правите много повтарящи се сливания или пък искате да държите topic клон в синхрон с промените на <code>master</code> клона без много излишни сливания, или пък ако често пребазирате — можете да включите <code>rerere</code>, за да си улесните работата.</p>
305+
</div>
306+
<div id="nav"><a href="{{< previous-section >}}">prev</a> | <a href="{{< next-section >}}">next</a></div>

0 commit comments

Comments
 (0)