-
6. GitHub
-
7. Git ć®ćć¾ćć¾ćŖćć¼ć«
- 7.1 ćŖććøć§ć³ć®éøę
- 7.2 対話ēćŖć¹ćć¼ćøć³ć°
- 7.3 ä½ę„ć®é ććććØę¶ććć
- 7.4 ä½ę„å 容ćøć®ē½²å
- 7.5 ę¤ē“¢
- 7.6 ę“å²ć®ęøćęć
- 7.7 ćŖć»ććć³ćć³ć詳説
- 7.8 é«åŗ¦ćŖćć¼ćøęę³
- 7.9 Rerere
- 7.10 Git ć«ćććććć°
- 7.11 ćµćć¢ćøć„ć¼ć«
- 7.12 ćć³ćć«ćć”ć¤ć«ć®ä½ę
- 7.13 Git ćŖććøć§ćÆćć®ē½®ćęć
- 7.14 čŖčؼę å ±ć®äæå
- 7.15 ć¾ćØć
-
8. Git ć®ć«ć¹ćæćć¤ćŗ
- 8.1 Git ć®čØå®
- 8.2 Git ć®å±ę§
- 8.3 Git ćććÆ
- 8.4 Git ććŖć·ć¼ć®å®ę½ä¾
- 8.5 ć¾ćØć
-
9. GitćØćć®ä»ć®ć·ć¹ćć ć®é£ęŗ
-
10. Gitć®å å“
- 10.1 é ē®”ļ¼Plumbingļ¼ćØē£åØļ¼Porcelainļ¼
- 10.2 GitćŖććøć§ćÆć
- 10.3 Gitć®åē §
- 10.4 Packfile
- 10.5 Refspec
- 10.6 転éćććć³ć«
- 10.7 ć”ć³ććć³ć¹ćØćć¼ćæćŖć«ććŖ
- 10.8 ē°å¢å¤ę°
- 10.9 ć¾ćØć
-
A1. ä»é² A: ćć®ä»ć®ē°å¢ć§ć®Git
- A1.1 ć°ć©ćć£ć«ć«ć¤ć³ćæćć§ć¼ć¹
- A1.2 Visual Studioć§Gitć使ć
- A1.3 Eclipseć§Gitć使ć
- A1.4 Bashć§Gitć使ć
- A1.5 Zshć§Gitć使ć
- A1.6 Powershellć§Gitć使ć
- A1.7 ć¾ćØć
-
A2. ä»é² B: GitćććŖćć®ć¢ććŖć±ć¼ć·ć§ć³ć«ēµćæč¾¼ć
-
A3. ä»é² C: Gitć®ć³ćć³ć
- A3.1 ć»ććć¢ćććØčØå®
- A3.2 ćććøć§ćÆćć®åå¾ćØä½ę
- A3.3 åŗę¬ēćŖć¹ćććć·ć§ćć
- A3.4 ćć©ć³ććØćć¼ćø
- A3.5 ćććøć§ćÆćć®å ±ęćØć¢ćććć¼ć
- A3.6 ę¤ę»ćØęÆč¼
- A3.7 ćććć°
- A3.8 ćććć®é©ēØ
- A3.9 ć”ć¼ć«
- A3.10 å¤éØć·ć¹ćć
- A3.11 ć·ć¹ćć ē®”ē
- A3.12 é ē®”ć³ćć³ć
7.9 Git ć®ćć¾ćć¾ćŖćć¼ć« - Rerere
Rerere
git rerere
ć³ćć³ććÆćć¼ć«ć«å
ć¾ććę©č½ćØćć£ć¦ćććć§ćććććć㯠āreuse recorded resolutionā ć®ē„ć§ćććć®åć示ććØććććć®ć³ćć³ććÆćć³ć³ććŖćÆććć©ć®ććć«č§£ę¶ćććććčØé²ćć¦ććć¾ććććć¦ćåćć³ć³ććŖćÆćć«ę¬”ć«åŗćććććØćć«ćčŖåć§č§£ę¶ćć¦ćććć®ć§ćć
ććć¤ćć®å “é¢ć§ććć®ę©č½ććØć¦ćå½¹ē«ć¤ćØęćć¾ććGit ć®ććć„ć”ć³ćć§ęćććć¦ććä¾ćÆćé·ęć«ććć£ć¦éēŗćē¶ćć¦ććććććÆćć©ć³ććåé”ćŖććć¼ćøćććććć«ćć¦ććććććć©ććć®ććć®ćć¼ćøć³ććććććć¤ćēć¾ćććććŖē¶ę³ćÆéæćććććØćććć®ć§ććrerere
ćęå¹ć«ććē¶ę
ć§ććć¼ćøććØćććå®č”ććć³ć³ććŖćÆćććć®ćć³ć«č§£ę¶ććććć§ććć¼ćøćåćę¶ćć¦ćæć¦ćć ććććć®ęé ćē¶ē¶ēć«č”ć£ć¦ććć°ćęēµēćŖćć¼ćøćÆå®¹ęćŖćć®ć«ćŖććÆćć§ććrerere
ććć¹ć¦ćčŖåć§å¦ēćć¦ćććććć§ćć
ćŖćć¼ć¹ććåŗ¦ć«åćć³ć³ććŖćÆććå¦ēććććØćŖćććć©ć³ćććŖćć¼ć¹ćććē¶ę
ć«äæć£ć¦ćććØćć«ććć®ę¹ę³ć使ćć¾ććććććÆćć³ć³ććŖćÆćććć¹ć¦č§£ę¶ćć¦ććććć£ćØćć¼ćøćēµććå¾ć«ććŖćć¼ć¹ć使ćććØć«ę¹éćå¤ę“ćććØćć¾ććććrerere
ć使ćć°ćåćć³ć³ććŖćÆććååŗ¦å¦ēććć«ęøćæć¾ćć
ćć®ä»ć«ććéēŗäøć®ććććÆćć©ć³ććććć¤ćć¾ćØćć¦ćć¼ćøćć¦ććć¹ćåÆč½ćŖ HEAD ćēęćććØćļ¼Git ę¬ä½ć®ćććøć§ćÆćć§ććč”ććć¦ćć¾ćļ¼ć«ććć®ć³ćć³ćć使ćć¾ćććć¹ćć失ęćććććć¼ćøćåćę¶ććććć§å¤±ęć®åå ćØćŖć£ććć©ć³ććé¤å¤ćć¦ćććć¹ććåå®č”ććććć§ćććrerere
ć使ćć°ćć®éć«ć³ć³ććŖćÆććč§£ę¶ććåæ
č¦ććŖććŖćć®ć§ćć
rerere
ćęå¹ć«ććć«ćÆć仄äøć®čØå®ć³ćć³ććå®č”ćć¾ćććć
$ git config --global rerere.enabled true
該å½ć®ćŖććøććŖć« .git/rr-cache
ćØćććć£ć¬ćÆććŖćä½ęćć¦ć rerere
ćÆęå¹ć«ćŖćć¾ćććčØå®ććć»ććććććććć§ććććčØå®ć§ććć°ćå
ØćŖććøććŖć«é©ēØććććØćć§ćć¾ćć
ć§ćÆå®éć®ä¾ćč¦ć¦ćæć¾ćććć仄å使ć£ććććŖåē“ćŖä¾ć§ćć
hello.rb
ćØćććć”ć¤ć«åć®ć仄äøć®ćććŖćć”ć¤ć«ććć£ććØćć¾ćć
#! /usr/bin/env ruby
def hello
puts 'hello world'
end
ä»ćććć©ć³ćć§ćÆćć®ćć”ć¤ć«ć® āhelloā ćØććåčŖć āholaā ć«å¤ę“ććå„ć®ćć©ć³ćć§ćÆ āworldā ć āmundoā ć«å¤ę“ćććØćć¾ććååćØåę§ć§ććć

ććć2ć¤ć®ćć©ć³ćććć¼ćøććććØćććØćć³ć³ććŖćÆććēŗēćć¾ćć
$ git merge i18n-world
Auto-merging hello.rb
CONFLICT (content): Merge conflict in hello.rb
Recorded preimage for 'hello.rb'
Automatic merge failed; fix conflicts and then commit the result.
ć³ćć³ćåŗåć« Recorded preimage for FILE
ćØććč¦ę
£ććŖćč”ćććć®ć«ę°ć„ćććć§ććććä»ć®éØåćÆćććććć³ć³ććŖćÆćć®ć”ćć»ć¼ćøćØå¤ććććć¾ććććć®ęē¹ć§ćrerere
ćććććććØćććć¤ćććć¾ćććććć£ćå “åććć¤ćć§ććć°ä»„äøć®ććć« git status
ćå®č”ććä½ćć³ć³ććŖćÆććć¦ććć®ćć確čŖćććć®ć§ćć
$ git status
# On branch master
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add <file>..." to mark resolution)
#
# both modified: hello.rb
#
ć§ćććććć§ git rerere status
ćå®č”ćććØćć©ć®ćć”ć¤ć«ć®ćć¼ćøåć®ē¶ę
ć git rerere
ć«ćć£ć¦äæåććććććććć¾ćć
$ git rerere status
hello.rb
ę“ć«ćgit rerere diff
ćå®č”ćććØćć³ć³ććŖćÆćč§£ę¶ć®ē¶ę³ććććć¾ććå
·ä½ēć«ćÆćēęåćć©ćććē¶ę
ć§ćć£ćććć©ććć風ć«č§£ę¶ććć®ććććććć¾ćć
$ git rerere diff
--- a/hello.rb
+++ b/hello.rb
@@ -1,11 +1,11 @@
#! /usr/bin/env ruby
def hello
-<<<<<<<
- puts 'hello mundo'
-=======
+<<<<<<< HEAD
puts 'hola world'
->>>>>>>
+=======
+ puts 'hello mundo'
+>>>>>>> i18n-world
end
ć¾ćļ¼rerere
ē¹ęć®č©±ć§ćÆććć¾ćććļ¼ćć³ć³ććŖćÆććć¦ćććć”ć¤ć«ćØććć®ćć”ć¤ć«ć®3ćć¼ćøć§ć³ļ¼ćć¼ćøåć»ć³ć³ććŖćÆććć¼ć«ć¼å·¦åćć»ć³ć³ććŖćÆććć¼ć«ć¼å³åćļ¼ć ls-files -u
ć使ććØćććć¾ćć
$ git ls-files -u
100644 39804c942a9c1f2c03dc7c5ebcd7f3e3a6b97519 1 hello.rb
100644 a440db6e8d1fd76ad438a49025a9ad9ce746f581 2 hello.rb
100644 54336ba847c3758ab604876419607e9443848474 3 hello.rb
ćć¦ććć®ć³ć³ććŖćÆć㯠puts 'hola mundo'
ćØäæ®ę£ćć¦ććć¾ććććć¦ć ććäøåŗ¦ rerere diff
ć³ćć³ććå®č”ćććØćrerere ćčØé²ććå
容ć確čŖć§ćć¾ćć
$ git rerere diff
--- a/hello.rb
+++ b/hello.rb
@@ -1,11 +1,7 @@
#! /usr/bin/env ruby
def hello
-<<<<<<<
- puts 'hello mundo'
-=======
- puts 'hola world'
->>>>>>>
+ puts 'hola mundo'
end
ćććčØé²ćććØććććØćÆćhello.rb
ć«åćć³ć³ććŖćÆćļ¼äøę¹ćÆ āhello mundoā ć§ććäøę¹ć āhola worldāļ¼ćč¦ć¤ćć£ćå “åćčŖåēć« āhola mundoā ć«äæ®ę£ććććØććććØć«ćŖćć¾ćć
ć§ćÆććć®å¤ę“å 容ćć³ććććć¾ćććć
$ git add hello.rb
$ git commit
Recorded resolution for 'hello.rb'.
[master 68e16e5] Merge branch 'i18n'
ć³ćć³ćåŗåćććGit ćć³ć³ććŖćÆćč§£ę¶ę¹ę³ćčØé²ććļ¼"Recorded resolution for FILE"ļ¼ććØććććć¾ćć

ć§ćÆććć§ććć®ćć¼ćøćåćę¶ć㦠master ćć©ć³ćć«ćŖćć¼ć¹ćć¦ćæć¾ćććććŖć»ććć³ćć³ć詳説 ć§ē“¹ä»ćććØććććć©ć³ććå·»ćę»ćć«ćÆ reset
ć使ćć¾ćć
$ git reset --hard HEAD^
HEAD is now at ad63f15 i18n the hello
ćć¼ćøćåćę¶ććć¾ćććē¶ćć¦ććććÆćć©ć³ćććŖćć¼ć¹ćć¦ćæć¾ćć
$ git checkout i18n-world
Switched to branch 'i18n-world'
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: i18n one word
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging hello.rb
CONFLICT (content): Merge conflict in hello.rb
Resolved 'hello.rb' using previous resolution.
Failed to merge in the changes.
Patch failed at 0001 i18n one word
äŗę³ć©ććććć¼ćøć³ć³ććŖćÆććēŗēćć¾ćććäøę¹ćResolved FILE using previous resolution
ćØććć”ćć»ć¼ćøćåŗåććć¦ćć¾ćć該å½ć®ćć”ć¤ć«ć確čŖćć¦ćæć¦ćć ćććć³ć³ććŖćÆććÆćć§ć«č§£ę¶ććć¦ćć¦ćć³ć³ććŖćÆćć示ććć¼ć«ć¼ćÆęæå
„ććć¦ććŖććÆćć§ćć
#! /usr/bin/env ruby
def hello
puts 'hola mundo'
end
ć¾ććććć§ git diff
ćå®č”ćććØćć³ć³ććŖćÆćć®åč§£ę¶ćć©ć®ććć«čŖåå¦ēććććććććć¾ćć
$ git diff
diff --cc hello.rb
index a440db6,54336ba..0000000
--- a/hello.rb
+++ b/hello.rb
@@@ -1,7 -1,7 +1,7 @@@
#! /usr/bin/env ruby
def hello
- puts 'hola world'
- puts 'hello mundo'
++ puts 'hola mundo'
end

ćŖććcheckout
ć³ćć³ćć使ććØććć”ć¤ć«ćć³ć³ććŖćÆćććē¶ę
ćåē¾ć§ćć¾ćć
$ git checkout --conflict=merge hello.rb
$ cat hello.rb
#! /usr/bin/env ruby
def hello
<<<<<<< ours
puts 'hola world'
=======
puts 'hello mundo'
>>>>>>> theirs
end
ćć㯠é«åŗ¦ćŖćć¼ćøęę³ ć§ä½æēØććä¾ćØåćå
容ć§ćććććć§ćÆ rerere
ć使ć£ć¦ć³ć³ććŖćÆććććäøåŗ¦č§£ę¶ćć¦ćæć¾ćććć
$ git rerere
Resolved 'hello.rb' using previous resolution.
$ cat hello.rb
#! /usr/bin/env ruby
def hello
puts 'hola mundo'
end
rerere
ććć£ćć·ć„ććč§£ę¶ę¹ę³ć§ćåå¦ēćčŖåēć«č”ćććććć§ććēµęćć¤ć³ćććÆć¹ć«čæ½å ćć¦ććŖćć¼ć¹ćå
ć«é²ćć¾ćććć
$ git add hello.rb
$ git rebase --continue
Applying: i18n one word
ćć¼ćøć®åå®č”ćä½åŗ¦ćč”ćććØććććé »ē¹ć« master ćć©ć³ćććć¼ćøććć«ććććÆćć©ć³ććęę°ć®ē¶ę
ć«äæć”ććććŖćć¼ć¹ćććč”ćā¦ā¦ććććć«å½ć¦ćÆć¾ćå “å㯠rerere
ćęå¹ć«ćć¦ććć¾ććććę„ć
ć®ēę“»ćć”ćć£ćØć ć愽ć«ćŖććØęćć¾ćć