wƏKGitxۑ̉𓚂уqg

{̉ۑ̉𓚂́AWebTCgŏJ܂B{t@Cł͖|󎞓_ŌJĂeۑ̉𓚂҂̃qgȂǂ܂Ƃ߂܂BŐV̏ɂẮAWebTCg𐏎mFB
http://tech.rickumali.com/learngit

3́

yA1i҂jz
 Git̃RtBM[Viݒj́A/etc/gitconfigA$HOME/.gitconfigA.git/config3ӏɒuBɂĂ͑20͂ɏڂ񂪂邯ǁA܂̒iKł́iƂGit̏S҂ɂ́jƎv邩ȂBSȏ́Agit config helpQƁB

yA2i҂jz
 git help git

yA3i҂jz
 git rebase

yA4i҂jz
Directed Acyclic GraphiĤȂLOtjBgit help glossaryQƁB{̕ƂẮAGCzAzbvNtgAE}A`v́wf[^\ƃASYxu6.6 ĤȂLOtvQƁBOtɂẮAEBLyfBÁu؁iwjv̍QƁB

yA5i҂jz
git help tutorialQ

yA6i҂jz
\B

yA7i҂jz
less̕\1sPʂŃXN[ɂ́A㉺L[܂[J][K]̃L[gBless̓{}jAy[ẂAhttp://www.linux-cmd.com/less.html#manQƁB

4́

yA1i҂G[̗jz
fatal: bad default revision fHEAD

yA1i҂oG[jz
fatal: your current branch 'master' does not have any commits yet

yA2i҂ɂjz
̉ۑsʁAgit sdtatuśȀoB

------------------------------
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   file.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout --<file>..." to discard changes in working directory)

        modified: file.txt
------------------------------

ǁAfile.txt́A2ӏɌB

yA3i҂ɂjz
siEnd of LineFEOLj́ARs[^̐EŔY݂̎ƂȂBWindowsł́AقƂǂ̃t@C̍sCR+LFBƂ낪AUnix/Linux}Vł́iMacÂЂƂjAقƂǂ̃t@C̍sLFłB̑̏ڍׂ́AWikipediáusR[hviNewlinejQƁBȂAvbgtH[ōƂ̂ȂA̖ɑȂȂBǂGitł́AȂƂ͕ʂ̃vbgtH[gĂlƁAƂsƂɂȂ邩ȂB̖ɂāAGit̓X}[gȉ񋟂悤ƂBꂪ\ݒiconfiguration settingsj́Acore.autocrlfcore.safecrlfBGitEOL@ɂẮAڍׂȃ|XgStack Overflowɂ܂Ƃ߂Ăihttp://stackoverflow.com/q/170961/10030jB̃|Xgɂ́AEOLݒǗ@Ă邪AȂS҂Ȃ΂ǂނ̂͑BGit́Aݒ̂܂܂ŁAEOL𐳂Ǘ悤AxXgsĂB

yA3i҂jz
L̍\ݒ肪AǂȂĂ邩́ÃR}hŃ`FbNłB

------------------------------
git config --get core.safecrlf
git config --get core.autocrlf
------------------------------

҂̊iWindows 710jł́AO҂͉o͂A҂truei^jƏo͂Bł́Acore.autocrlftrueƁAǂȂ̂B_쏃wGitxpip.194jB

------------------------------
12.3.2. core.autocrlf

[Nc[̃t@C̍sLCRiCarriage ReturnjLFiLine FeedjƂ2oCg̑g킹ŕ\ĂVXeiWindowsjŁA|Wgɂ͉sLF 1oCgŋL^ƂɎg܂B
^ɐݒ肵ĂƁA[Nc[̃t@C̍sLCRLF|WgɋL^ƂɎILFɕϊAtɃ|WgɋL^ꂽe烏[Nc[ɏoƂɂ́AsLLFICRLFɕϊĂ珑o悤ɂȂ܂B
------------------------------

ȂA[Nc[iwork treejƂ́AurWɋL^ĂeWJfBNg̈viAp.18jBgit add .R}hgƁAu[Nc[ׂ̂Ẵt@C̏ԂL^vłiAp.43jB

5́

yA1i҂jz
file.txt́AGit GUI̍yCi"Unstaged Changes"jɌB

yA2i҂jz
git citooĺAgit gui citool̕ʖłiW̃GCAXjBڂgit gui --helpCOMMANDSZNVQƁB 

yA3i҂jz
file.txt́AGit GUI̍yCiStaged ChangesjɌB

yA4i҂jz
file.txt́AɌB܂AẼyCiPortions staged for commitjɂAoĂ邾낤B

yA5i҂̍ljz
CommitbZ[W͂ĂACommit{^H

yA5i҂̉𓚁jz
͂ƃgbL[ȉۑ肾Błgit addŕύXǉĂAt@Cɑ΂ʂ̕ύXǉĂBǂA̎菇ł͑1̕ύX2̕ύXŏ㏑Ă܂BƂۑŗǂ̕@́A܂git commits邱ƂBŁAt@C̑1o[WۑBR~bgŁA2̕ύXɑ΂git addgit commitsBɂāAt@C̑2o[WۑB

yA6i҂̉𓚁jz
gȂBman pagegitk(1)QƁB

yA6i҂̉𓚁jz
̏͂łgitkvOgit guiċNBǂgitḱAgit guioRAgitkƃ^Cv邾łNłBgitk--helpXCb`͂ȂAR}hCňƂĉn邩́Agit help gitkƃ^Cv邱ƂɂĒm邱ƂłB

6́

yA1i҂jz
--staged̑--cachedgBgit diff --helpQƁB

yA2i҂jz
git add -n

yA3i҂jz
cat -n <t@C>ŁAt@C̓esԍtŕ\B

yA4i҂jz
git log --format=oneline --abbrev-commit

yA5i҂jz
-all

6.4.2 gu؂蔲

y҂̃qgz
git addɂĒǉύXR}h́Agit statusĂB

y҂z
4͂̃Xg 4.4ɏoĂAiuse "git rm --cached <file>..." to unstagejƂ̂AɓB̃R}h̏ڍׂ́Ȁ͂ŊwԁB

6.4.3 ̃t@Cǉ

y҂z
Ȃ̍DȃGfB^ŁAreadme.txtƂt@CAmathfBNĝȂɍBeLXg܂łĂÂ܂܂ł悢B̌Â悤Ƀ^CvB

------------------------------
git add readme.txt
git commit -m "Adding readme.txt"
------------------------------

7́

yA1i҂jz
nŃA@@ -1.7 +1,7 @@"change here"A@@ -10,8 +10,7 @@"deleted below"A@@ -29,6 +27,7 @@"added a new line here do not be afraid added new line here do not be afraid"̍v3B

yA2i҂jz
2̃nN@@ -10,8 +10,7 @@"deleted below"܂ނ́BҏWł́ÃnNcAƂ͍폜B̕@́AXg 7.16ōsĂ悤git add -pŁAŏ̃vvgɂnA2̃vvgɂyA3̃vvgɂnœB
Xe[WOꂽύXR~bg邽߂ɁAgit commit -m "2nd hunk"ƃ^CvB

yA3i҂jz
git_status̏o͂ɂ́Â悤ɏĂ

------------------------------
use "git checkout -- <file>..." to discard changes in working directory
FuƃfBNg̕ύXjɂ́Agit checkout -- <t@C>gv
------------------------------

Agit checkout -- lorem-ipsum.txtƃ^Cv΂悢B̌Agit statusƃ^Cv΁AƃfBNgN[ȏԂŁAR~bĝׂȂƕ񍐂B

yA4i҂jz
̃Xebv̓ZbgAbv̌JԂA|Wgɓt@CĂB

yA5i҂jz
2B

yA6i҂jz
̏ꍇAnNIKv͂Ȃ̂ŁÂ悤Ƀ^CvF

------------------------------
git add lorem-ipsum.txt
git commit -m "All hunks
------------------------------

7.5.2 폜

yAi҂jz
킩ȂȂAgit guiŏԂmF悤B҂mFƂAẼyC"Staged for removal"ƂȂāA폜ꂽt@C̓e\ꂽB܂Au폜vƂύXXe[WOĂB

XN[VbgFLab_7_5_2_Win7_GUI.jpg

̂Ƃgit status̏o͂ɂ́A(use "git reset HEAD <file>..." to unstage)Ƃ̂ŁAs΃AXe[Wł͂Bgit reset HEAD lorem-ipsum.txtƑł񂾁BŃXe[WOGAɂȂ낤BxAgit statussƁAx (use "git checkout -- <file>..." to discard changes in working directory)oĂAs΁AƃfBNg̕ύXjł͂BŁA"git checkout -- lorem-ipsum.txt"Ƒł񂾂At@CB

7.5.3 ۑ}

yAi҂jz
łu`vƂ́AGit̃hLgɏĂũp^[v̂ƂB
git checkout -- math.sh́Au`FbNAEgɂă[LOc[ɖ߂v̂łA`FbNAEgt@Cw肵ĂB--́Aȍ~̕uIvVƂĉ߂Ȃ悤ɂvIvVŁȀꍇAɑ񂪃t@C̃pXł邱ƂB7.5.2Ŗ҂gAgit checkout -- lorem-ipsum.txtłB̌`́AhLgŎ̂悤ɏĂ̂F

------------------------------
git checkout [-p|--patch] [<tree-ish>] [--] <paths>... 
------------------------------

A[]̊Ԃɂ̂̓IvV̈ȗłBL̃R}hł́A[--patch][tree-ish]͎gĂȂB
IvVŵȂAgit reset math.sh́Agit add math.sh̋t̓ŁAt@CuR~bg\vOiXe[WOGA菜ĵBȂ݂ɁA҂7.5.2Ŏggit reset HEAD lorem-ipsum.txtHEAD́A8͂œoꂷB̌`́AhLgŎ̂悤ɏĂF

------------------------------
git reset [-q] [<tree-ish>] [--] <paths>...
------------------------------

AL̃R}hł́A-q[tree-ish]gĂȂB<tree-ish>Ƃ̂́ÁuR~bgA^OAc[vw肷́B

8́

yA1i҂jz
git logR}hɂ́A--reverseƂu\IvVvAw肷΋tɕ\BGit̃R~bgqXg[́AIuWFNg̃XgŊǗÃ|C^́AŐV̂́imasterjA̐eցA܂̐eւƁA[g܂ŘAĂi} 8.1ȂǂQƁjBftHg̃XǵÃ|C^ɂǂ̂AȂ̂́A炩ɁAtł͂ȂftHg̃Xg낤B

yA2i҂jz
git logɂ́AΏۃR~bg肷-<n>IvVBw肷ƁAŋ߂ñR~bgbZ[W\BƂgit log -3ƃ^Cv΁Aŋ߂3\Bgit log --reverse -3ƃ^CvA3tɕ\B

yA3i҂jz
ɂgit loǵu\IvVv̂ЂƂA--dategBɂ͕\`̂ЂƂƂāArelativeiΓIjB܂Agit log --date relativeƃ^Cv΁Au݂̎Ƃ̍vŕ\iƂ΁A"2 hours ago"A"5 days ago"ȂǁjB

yA3i҂jz
git log --relative-date

yA4i҂jz
git log --onelinéA"--pretty=oneline --abbrev-commit"2𓯎Ɏw肷ƂӖ̃V[gJbgB

8.5.3 ʂ̌`ŃR~bgw肷

yA1i҂jz
master~3́Amaster3ÕR~bgimaster̐e̐e̐ejB
master@{3}́Amaster1ԖڂƂ3Ԗڂ̃R~bgimaster̐e̐ejB
master^^^́Amaster~3ƓR~bgB
:/"Removed a and b"́ÃObZ[WR~bgB

yA2i҂jz
:/<text>i1̃ŘɁA1̃XbVǍɃeLXgj́AObZ[WAeLXgŎw肷鐳K\ƃ}b`R~bgw肷Bڂ́A}jAy[WAgitrevisions(7)QƁB

yA2i҂jz
15͂ŁÃoAgiώj܂B

yA3i҂jz
g܂Bgit rev-parse four_files_galoreƃ^Cv΁ASHA1 ID\B

yA4i҂jz
͂Bgit rev-parseŎgĂ\́A^Oɑ΂Ăg܂BƂgit rev-parse four_files_galore^^ƃ^Cv΁Afour_files_galoreOɍsꂽR~bgSHA1 IDԂB

yA4i҂jz
tɁA̋ĹAǂ^Oɂ͎gȂB^OɎgLɂ͐BXy[XAeB_i~jALbgi^jARi:j͎gȂB^╄i?jAAX^XNi*jAJpJbRi[jgȂB@{ƂV[PX܂ނƂłȂBɂBڂ́A}jAy[WAgit-check-ref-format(1)QƁB

8.5.6 qXg[i2j

yA1i҂jz
uThe very first commit. Hi!vƌĂBDatéASat Oct 31 22:28:30 2015 +0900B́Agit log --reverseŌ̂葁B

yA1i҂jz
ŏ̃R~bǵAXNvgs5O̓tɂȂĂB

yA2i҂jz
git rev-parse :/"ubiquitous"ƃ^Cv̂łB

yA3i҂jz
git log --author="rgu@freeshell.org"ŕ\R~bgB

yA3i҂jz
UNIXgrepR}hg΁Agit log | grep -B 1 rgu@freeshellƃ^Cv邾ŐoI

yA4i҂jz
git log --since=yesterday

yA5i҂jz
QlXN[VbgFLab_8_5_6_5_Tree.jpg

9́

yA1i҂jz
Branchiu`jj[Checkouti`FbNAEgjڂIƁACheckout Branchiu``FbNAEgj̉ʂɂȂB̂ƂALocal Branchi[Ju`jnew_featurêŁAIāmCheckoutni`FbNAEgj{^BA݂math.sht@C̕ύXcĂ̂ŌxoBwarningixjʂ́mOKnNbNƁȀԂɖ߂B

yA2i҂jz
̃u`yCŁAanother_fix_branchƓsɂRenaming c and d.̏ɃJ[\uăReLXgj[oBCreate new branchiVKu`jNbNBmakebranchEBhEicreate new branchFVKu`jŁANameiOjeLXg{bNXɁAVu`̖ÓB[CreateF]{^NbNBŁAVu`̖OAanother_fix_branchׂ̗ɌB

yA3i҂jz
git guiŁARepositoryi|Wgjj[Visualize All Branch HistoryiSẴu`̗jIgitkoB͓̌̏B]āAgitkĝȒPBgitk̑́AXebv2ƓBȂAgit guił́ABranchiu`jj[Create New Branchi쐬ju`쐬łB̏ꍇ́AStarting RevisionirWjŁATagi^OjIB

yA4i҂jz
i1jgit guiNABranchiu`jj[Delete Local Branchi폜jIBDelete Local Branchi[Ju`폜j̉ʂoB̃Xgō폜u`IAmDeletenNbNBJgu`͍폜łȂ̂ŒӁI ̃XgŃu`IKv邩ȂB

i2jgitkNA폜u`̏ɃJ[\uăReLXgj[oBRemove this branchĩu`jNbNB 

9.5.2 ̏^

yA1i҂jz
\Bgit branch -m [<oldbranch>] <newbranch>gB<oldbranch>w肵Ȃ΁AJgu`̖OύXBڍׂ́Agit branch --helpQƁB

yA2i҂jz
git rev-parseR}hł́Aw̕ObZ[WɊ܂ރR~bgSHA1 ID𒲂ׂ邱ƂłiFgit rev-parse :/"Renaming c and d"jB8.5.3Ŋw񂾁B

yA3i҂jz
git logƂ̂́ÃR}hB

------------------------------
git log --graph --decorate --pretty=oneline --all --abbrev-commit
------------------------------

ꂼ̃XCb`s𒲂ׂɂ́Agit log --helpR}hgB
̉ۑŏdvȂ̂́Agit log̃hLgǂނƁAƂɁÃXCb`ɂĒׂ邱ƂłBƂ--decorateXCb`ƁA̓R~bg̎QƖvĝA--decorateɑ΂XCb`݂邱ƂiƂ΁F--decorate=fulljB

yA3i҂jz
--graph̓R~bgOtiASCIIjŕ\B--decoratéAQƖR~bgɂāA̖OiHEADA^OȂǁj\B--pretty=oneline --abbrev-commit́AV[gJbg--onelineƓB[--alĺAׂẴu`̃R~bgbZ[W\B

yA4i҂jz
git branch -dR}hŃu`폜ƂA}[WĂȂu`폜悤ƂƃG[ɂȂBGit GUIŁuDelete Local BranchvsƁAG[oč폜łȂB

yA4i҂jz
𐳂sɂ́AmathfBNgɓāAnew_featureu`̍폜݂Ƃ悢iɂ́Amake_math_repo.shxsāAmathfBNg蒼̂ȒPȂjB
new_featureu`ɂ́A2̃R~bgB̃bZ[ẂA"Starting a second new file"ƁA"Adding a new file to a new branch"Bgit branch -d new_featureƃ^CvƁÃu`{ɍ폜̂AƐu邾낤B́ÃR~bg̃u`Ƀ}[WĂȂ炾B{Ƀu`폜Ƃ́Agit branch -D new_featureƃ^Cvidł͂ȂA啶DgĂ邱ƂɒځjBŁÃ|Wgɂ́Anew_featureu`݂ȂȂBÃu`ɑ΂čsR~bgAƎv邾낤BƂ낪A͂܂pł̂Bŗǂ̕@́Agit reflogR}hgB
git reflogƃ^Cv΁AɎ悤ȃXg邾낤F

------------------------------
3522453 HEAD@{0}: checkout: moving from fixing_readme to another_fix_branch
3522453 HEAD@{1}: checkout: moving from master to fixing_readme
7fb5600 HEAD@{2}: commit: A small update to readme.
b06aec0 HEAD@{3}: checkout: moving from new_feature to master
c5aab93 HEAD@{4}: commit: Starting a second new file
6851702 HEAD@{5}: commit: Adding a new file to a new branch
b06aec0 HEAD@{6}: checkout: moving from master to new_feature
b06aec0 HEAD@{7}: commit: Adding printf.
------------------------------

ɋXgƁAHEAD@{4}HEAD@{5}Ƃx́A2̃R~bgB̃xw肵ău`蒼΁A2̃R~bgA폜ꂽu`畜邱Ƃ\I@ɂ́Â悤Ƀ^CvB

------------------------------
git checkout -b recovered_branch HEAD@{4}
------------------------------

git reflogɂẮA16͂ŁAڂqׂB

9.5.3 another_fix_branchōƂ𑱂

yA1i҂jz
́u7.5.3 Ǐۑ}vɏoĂ܂B

9.5.4 ̃u`

yA1i҂jz
gitkƁAAdding four empty files.̃R~bgmasterłACommit for file_31618Ƃ[܂ŁAbranch_01LтĂB

yA2i҂jz
V[gJbggit lolŌƁAbranch_30̊Jnn_킩ɂBgitkŌƁAbranch_30four_files_galoretH[ĂB[e܂ŒHāAfour_files_galoreɂǂ蒅܂ł̃R~bg𐔂B

yA3i҂jz
gitkłAgit lolłmFłB҂git lol̏o͂XN[ĒׂB܂Abranch_40answers.txt́AgitkTreer[ŒׂB̃t@Cɐ3ĂāAꂪL̃u`ԍłB

yA4i҂jz
L̏o͂XN[ĂƂɁA͕Ă܂i҂̏ꍇAbranch_21A͗Ō܂悤jBǂsA"contains"i܂܂ĂjƂtgĂ̂ŁAgit branch --contains random_tag_on_fileR}hgBwarningrefnameambiguousƎwEꂽAbranch_21ƐoB

yA5i҂jz
--simplify-by-decorationƂXCb`́A"Commits that are referred by some branch or tag are selected."ƉBu炩̃u`܂̓^OŎQƂĂR~bgIvƂӖB
--graphXCb`ǉƁAΐɂu`̐}iXgȂ1ʂɎ܂ȂjB

10́

yA1i҂jz
git-merge(1) Manual Pageihttps://www.kernel.org/pub/software/scm/git/docs/git-merge.htmljpi}[WȂP[XɂẮAv|̂ݎjB

------------------------------
@

iconflictjAł邱Ƃ͎2łF

E}[WȂƂɂB
̏ꍇ́Agit merge --abort𗘗pł܂B

EB
Git́Aƃc[̋Ƀ}[NtĂ܂B̃t@CK؂ɕҏWAgit addindexiXe[WOGAjɒǉ܂BꂩAgit commitŌ܂B

𒲍Eɂ́AlXȃc[𗘗pł܂B

E}[Wc[gB
git mergetoolɂāAOtBJȃ}[Wc[NA̒Ń}[W𒲍E܂B

EB
git diffɂāA3ҊԂdiffithree-way diffj\܂Bł́AHEADMERGE_HEAD̗̃o[W̕ύX܂B

Eꂼ̃u`̍B
git log --merge -p <path>g΁A܂HEADo[WƂ̍AMERGE_HEADo[W̍邱Ƃł܂B

EIWiB
git show :1:filenaméAʑcithe common ancestorj\܂B
git show :2:filenaméAHEADo[W\܂B
git show :3:filenaméAMERGE_HEADo[W\܂B
------------------------------

yA2i҂jz
Ȃ͂Bmaster͖̂ɂȂBvႢA܂ȂԈႢ邩Ȃi҂̉𓚁^qg҂܂jB

yA3i҂jz
}[WԂł́Ao͂ȂBgit-diff(1) Manual PageɏڂLq邪A܂ɂڍׂŁABAu`̔rɌ΁AEXAMPLES̍ɁAComparing branchesƂ̂Aɂ́Agit-diff topic...masterƂႪB́Atopicu`̊Jnn_masteru`ɉꂽύX́AƂ̂ƁB

yA4i҂jz
ύXꂽt@C̖OƁȀԂ1ȉꍇ'A'j\B

------------------------------
$ git diff --name-status master...bugfix
A       newfile
------------------------------

ÁAAddedӖB

yA5i҂jz
git mergẽ}jAy[Wɂ΁A--ffIvVftHgłAfast-foward}[W̉Ƃău`|C^XV邾łA}[WR~bgȂB--no-ffw肷΁AƂ}[Wfast-fowardƂĉĂ}[WR~bgB҂Ă̂́A炭ꂾ낤B

11́

yA3i҂jz
\BXg 11.4 QƁB

yA4i҂jz
$ git checkout -b clone_another_fix_branch remotes/origin/another_fix_branch
Branch clone_another_fix_branch set up to track remote branch another_fix_branch from origin.
Switched to a new branch 'clone_another_fix_branch'

yA5i҂jz
Jnn_AQƂ邾ƂA݂͑Ȃ͂BA̒n_ɑ΂ĉύX鏈sƂAQƂƎԂ̂ł͂Ȃi҂̉񓚂҂jB

yA6i҂jz
̃R}ȟ`́Agit clone --origin <name> <repository> <directory>
ȂA--origin-oƗƂłB

13́

yA1i҂jz
git-push(1)̃}jAy[WY̎B

------------------------------
fast-forwardsɂ
XVɂāAR~bgAwĂu`it@XjAЂƂ̃R~bgBw悤ɕύXƂABA̎qł΁ȉꍇɌjA̍XVfast-forwardijƌĂ΂B
ABւfast-forwardXVɂāAIWĩR~bgAxĂR~bgQ́AVR~bgBxR~bgQ́AWiTuZbgjłBāAqXg[́A܂ȂB
̔΂ɁAfast-forwardł͂ȂXV́AqXg[BƂ΁AȂƁAЂƂ̐lAR~bgXN_ƂAȂ̊JqXg[̓R~bgBɒBAЂƂ肪AR~bgAɒBqXg[Ƃ悤B̃qXg[́Â悤ɐ}B

      B
     /
 ---X---A

ɁAЂƂ̐lAAɎύXÃ|WgɃvbV̂Ƒz肵悤B́AȂIWĩR~bgX擾|WgB
̐lvbVƂɂAR~bgXwĂu`́AR~bgAw悤ɍXVꂽBfast-forwardłB
Ƃ낪ÂƂȂvbV݂Ai܂͂AwĂju`R~bgBw悤ɍXV邱ƂɂȂB́Afast-forwardł͂ȂBÂ悤ɍXVAR~bgAɂēꂽύX͎ANBoƂɂȂĂ܂B
pushR}hAftHgŁAfasr-forwardł͂ȂXVȂ̂́Â悤ȃqXg[̑r\h邽߂łB
ȂA̎diXB܂ł̃qXg[jAЂƂ̎diXA܂ł̃qXg[jAȂ΁AqXg[|WgɃtFb`ifetch firstjA҂̕ύX܂ރqXg[āǍʂvbVKvB
̉\΁A"git pull"sāǍʂ"git push"łB"git pull"ɂāAR~bgAƃR~bgB̊ԂɁA}[WR~bgCB

      B---C
     /   /
 ---X---A

č}[WR~bgɂāAR~bgAXV̂́Afast-forwardÃvbV͋B
iF܂wKĂȂrebaseɊւ鍀ڂȂ̂Ŕ΂܂j
ЂƂAvbVufast-forwardł͂ȂvƂRŋ₳ʓIȏ󋵂B́AȂȊÔЂƂNvbVĂȂ|Wgɑ΂vbVł\BȂvbVR~bgAA"git commit --amend"R}hɂāAR~bgBŒuƂ悤BȂ̂ɁiłAvbVƂYājABvbV悤ƂȀ󋵂ɂȂBȂƂAɃvbVR~bgAA܂NtFb`ĂȂiƂɊJi߂ĂȂjƂmłƂɌA"git push --force"ɂāAIɏ㏑łBƁA"git push --force"́A{ɃqXg[Ƃ̂߂̎iłB
------------------------------

yA2i҂jz
ƂɂȂ

yA3i҂jz
A1ƓhLǵAOPTION̍ɋLqĂBgit pullŎgrefspecA{ł́ut@XwvƖ󂵂ĂB<src>:<dst>̃tH[}bgŁAvbVIuWFNgsrcAvbṼt@XdstłB[Ju`srcA[gu`dstŎw肷΁Ã[gu`ɁA[Ju`vbV邱ƂɂȂB<src>Ȃ́A:<dst>`ŃvbV΁A<dst>[g|Wg폜łB

yA4i҂jz
ƂɂȂiA1̎QƂĂjB

yA7i҂jz
git configgt@CɂẮAwPro Gitx2nd Edition{Łihttps://git-scm.com/book/ja/v2j́Au1.6. gn߂ - ŏGit̍\vɊȒPȋLqipush.default̐́A13.6߂̖󒍂QƂĂjB

15́

yA1i҂jz
--min-parents=2B̈Ӗ́AuȂƂ2̐eR~bg\vBނɁA--max-parrents=<number>ȂǂB

yA2i҂jz
̂悤ɕ\͂F

------------------------------
$ git log another_rename
fatal: ambiguous argument 'another_rename': both revision and filename
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
------------------------------

revisiońAł̓u`̂ƁBt@C̑OɑO󔒂ŋ؂--uƂŁAɑt@C̃pXł邱ƂAgitR}hɓ`邱ƂłB

yA3 i҂qgjz
R~bgbZ[W̕\@́A<format>IvVŃJX^}CYłBhLgŃnbVihashQƏĂ̂SHA1 IDŁA%HA%hȂǂɂĎw肷BFς̂́A%CB̓v[Xz_[iplacehokdersjƌĂ΂B

yA4i҂qgjz
phLǵAhttps://git-scm.com/docs/gitkœǂނƂłBFilesƂZNVɋLqB

yA5i҂jz
ur[ҏWviedit viewjʂŁAu܂܂t@CEfBNgsƂɓ́viEnter files and directories to include, one per linejgB

yA6i҂jz
git blameR}h̉phLǵAhttps://git-scm.com/docs/git-blameœǂ߂Bs͈̔͂w肷XCb`́A-L <start>,<end>ƁA-L:<funcname>BSPECIFYING RANGESƂZNVɗႪB

16́

yA3i҂jz
git reflog --helpŕ\}jAy[WAΉ镔̎BTuR}h"show"́AftHgłATuR}hЂƂw肳Ȃ΁A"show"ɂȂB́AR}hCŎw肳ꂽt@Xi܂́AftHgHEADj̃O\BrefloǵAŋߍsꂽׂẴANV܂łBHEADrefloǵAu`̐ؑւL^Bgit reflog shoẃAgit log -g --abbrev-commit --pretty=oneline̕ʖłB

yA5i҂jz
git rev-parse --helpŕ\}jAy[ẂASPECIFYING RANGESƂZNVɐB͈͎wŃhbg2ׂu_uhbgv́ÄӖB

------------------------------
<rev1>..<rev2>
------------------------------

<rev2>瓞B\ȃR~bg܂ނA<rev1>瓞B\ȃR~bg͏OB

ICœǂ߂wPro Gitx2nd Edition{Łihttps://git-scm.com/book/ja/v2/ju7. Git̂܂܂ȃc[v-u7.1 rW̑Iv-uR~bg͈͎̔wvQƁi_uhbgÃ|CgAgvhbg̉jB

17́

yA4i҂jz
{EBLyfBAɁuDrupalvƂڂB
https://ja.wikipedia.org/wiki/Drupal

yA5i҂jz
ICœǂ߂wPro Gitx2nd Edition̓{Łihttp://git-scm.com/book/ja/v2jł́Au5. Gitł̕UƁvɃ[Nt[KɊւLqB

20́

yA2 i҂jz
}jAy[WAgit-config(1)́AOPTIONSQƁBZNV̍폜ɂ--remove-sectionAZNV̖OύXɂ--rename-sectiongB

yA3i҂jz
git-config(1)́Ahelp.autoCorrect̍QƁBȉɎB

------------------------------
~X^CvꂽR}hAw̃fVZJhi0.1bj҂ŁAIɏCĎs܂B͂ꂽeLXgÃR}hɉ߂łƂ́As܂B̃IvV̒l̎́ACR}h𑦍Ɏs܂Bl0ȂAR}h́A\邾Ŏs܂BꂪftHgłB
------------------------------