Git

ソースコードなどの分散型バージョン管理システム

Git[2][3]LinuxLinux (: Junio C Hamano) 20057
Git
git logo
GitのWebインターフェース、gitweb
開発元 濱野純, リーナス・トーバルズ, ほか多数
初版 2005年12月21日 (18年前) (2005-12-21)
最新版 2.45.2[1] ウィキデータを編集 - 2024年5月31日 (39日前) [±]
リポジトリ ウィキデータを編集
プログラミング
言語
C, Bourne Shell, Tcl, Perl
対応OS Unix系LinuxWindowsmacOS
種別 バージョン管理ソフトウェア
ライセンス GNU General Public License バージョン2,GNU Lesser General Public License 2.1
公式サイト git-scm.com ウィキデータを編集
テンプレートを表示

Gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。

背景および概要

編集

LinuxLinux Kernel Mailing List[1] 稿BitKeeperBitMover使BitKeeper使BitKeeper#BitKeeper#2005Git[4]

LinuxGit

作業の流れ

編集

Git使



(一) (git clone)

(二) (git commit)

(三) (git push)Git (git merge

(四) (git pull)2

 (clone, pull, push) 使[5]

[5]

SSH[5]

git[5]

HTTP/HTTPS[5]
pushgit-http-backend[6]WebDAV[7]

FTP/FTPS: 使[8]

rsync使2.8.0[9]

設計

編集

GitBitKeeperMonotone[10][11]GitCogitoStGIT[12]Git[13]

GitBitKeeper

Git1

MercurialBitKeeperDarcsBazaarSVKMonotoneGit

HTTPFTPgitssh使CVS使CVSIDEGit

git-svn使Subversionsvk

Git[14]Mozilla10100[15][16]

gitC[17]GitWindowsC[18]

Git

git-gc --prune使[19]

GitSCCSRCS

Git使[20]GitGit

調調[21]Git調調調

CVS使CVS寿inodeGit使[22][23][24]Git[25]NN-1N-1GitN-1CPU使



GitGitpack使packpackGitGitgit gc使

Git[26]

resolve

3-way使

recursive

3-way使mergepull3-waymerge treereference tree3-wayLinux2.6使[27]

octopus

3head

歴史

編集

名前の由来

編集

リーナス・トーバルズによれば[28]

僕は自己中心的な奴だから、自分のプロジェクトには自分にちなんだ名前を付けるようにしているんだ。最初はLinuxで、今度はGitだ。

GitLinux(Linux#)

GitGitGlobal Information Tracker[29]

開発初期の歴史

編集

GitLinuxBitKeeperBitKeeper# (Andrew Tridgell) BitKeeperBitKeeperBitKeeperLinux.conf.au 2005BitKeepertelnethelp[30]

BitKeeper使200547[31]

SCMbk pull1130Linux30SCM250Andrew[2] 2

BKSCMBK12Andrew[2]110-15BKBKBKSCM"" BK

SCMLinux

31: 12--



(一)CVSCVS
10tar使CVS[32]CVS7使CVSCVSSVN (Subversion) CVSSubversionSubversionCVS辿CVS[33]

(二)BitKeeper
BitKeeper使SCMBitkeeperSCM使GitBitkeeperBitkeeperGitBitkeeper[33]

(三)[34][33]

(四)

3Monotone4[33]Linux2.6.12-rc2[33][33]

Git200543[35]46[36]47[35]418[37]429LinuxGit6.7[38]66GitLinux2.6.12[39]

BitKeeperGit[40]Git2005626 (Junio C Hamano) [41]200512211.0[42]20215

ブランチモデル

編集

ソフトウェア開発におけるGitブランチの作成・更新モデルをブランチモデルと呼ぶ。

GitHub flow

編集

GitHub flow[43]GitHub flowmaster[44]masterforkpull requestmerge requestpull requestc.f. mergemaster = GitHub flowWeb

2011GitHubGitHub flowmasterGitHubCItopic branchmastermerge[45]CImasterrevert commitmaster

マージ

編集

Gitmerge

: merge commitgit merge[46][47][48]git addgit commitgit merge --continue[49]

2parentGit[50]treeparent

注釈

編集

出典

編集


(一)^  ; "[ANNOUNCE Git v2.45.2 and friends to unbreak "git lfs" and others"]; : 2024531; : 2024531.

(二)^ Tech Talk: Linus Torvalds on git. : 130. 2014721

(三)^ Git - ITe-words. 2014729

(四)^ Scott Chacon1.2 使-GitPro Githttps://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E7%95%A5%E5%8F%B2202137 

(五)^ abcdeScott Chacon. 4.1 Git  - . 2013119

(六)^ Scott Chacon; Ben Straub. Pro Git 2nd Edition 4.6 Git - Smart HTTP. 2021826

(七)^ Git - user-manual Documentation (). 2021826 (See also setup-git-server-over-http for a slightly more sophisticated setup using WebDAV which also allows pushing over HTTP.)

(八)^ git-clone(1) Manual Page (). 2017614 in addition, ftp, and ftps can be used for fetching, but this is inefficient and deprecated; do not use it

(九)^ Documentation/RelNotes/2.8.0.txt (). 2017614 The rsync:// transport has been removed.

(十)^ Linus Torvalds (5 May 2006). "Re: [ANNOUNCE] Git wiki". linux-kernel (Mailing list). 200933 Git

(11)^ Linus Torvalds (7 April 2005). "Re: Kernel SCM saga". linux-kernel (Mailing list). 200933

(12)^ Linus Torvalds (8 April 2005). "Re: Kernel SCM saga". linux-kernel (Mailing list). 2008220

(13)^ Linus Torvalds (23 March 2006). "Re: Errors GITtifying GCC and Binutils". Git (Mailing list). 200933

(14)^ Linus Torvalds (19 October 2006). "Re: VCS comparison table". Git (Mailing list). 200933

(15)^ Stenback, Johnny (2006-11-30), bzr/hg/git performance, Jst's Blog, http://weblogs.mozillazine.org/jst/archives/2006/11/vcs_performance.html 2008220 , "git diff""bzr diff"gitBazzar100

(16)^ Roland Dreier (20061113). Oh what a relief it is. 200933, "git log""svn log"100

(17)^ Linus Torvalds (18 October 2006). "Re: VCS comparison table". Git (Mailing list). 200933, Git

(18)^ iabervon (20051222). Git rocks!. 200933, Git使

(19)^ Git User's Manual (200785). 200933

(20)^ Linus Torvalds (10 April 2005). "Re: more git updates." linux-kernel (Mailing list). 200933

(21)^ Bruno Haible (11 February 2007). "how to speed up "git log"?". Git (Mailing list). 200933

(22)^ Linus Torvalds (1 March 2006). "Re: impure renames / history tracking". Git (Mailing list). 200933

(23)^ Junio C Hamano (24 March 2006). "Re: Errors GITtifying GCC and Binutils". Git (Mailing list). 200933

(24)^ Junio C Hamano (23 March 2006). "Re: Errors GITtifying GCC and Binutils". Git (Mailing list). 200933

(25)^ Linus Torvalds (28 November 2006). "Re: git and bzr". Git (Mailing list). 200933, git-blame使調

(26)^ Linus Torvalds (2007718). git-merge(1). 200934

(27)^ Linus Torvalds (2007718). CrissCrossMerge. 200934

(28)^ After controversy, Torvalds begins work on git. InfoWorld. (2005-04-19). ISSN 0199-6649. http://www.infoworld.com/article/05/04/19/HNtorvaldswork_1.html 2008220. 

(29)^ GitFaq: Why the 'git' name?. 2007321

(30)^ Jonathan Corbet (2005-04-20), How Tridge reverse engineered BitKeeper, Linux Weekly News, http://lwn.net/Articles/132938/ 2009326 

(31)^ Linus Torvalds (7 April 2005). "Re: Kernel SCM saga." linux-kernel (Mailing list). 2009326

(32)^ Linus Torvalds (31 October 2005). "Re: git versus CVS (versus bk)". Git (Mailing list). 2009326

(33)^ abcdefLinus Torvalds (3 May 2007). Google tech talk: Linus Torvalds on git. : 02:30. 2007516

(34)^ Linus Torvalds (10 June 2007). "Re: fatal: serious inflate inconsistency". Git (Mailing list). 2009326 Git

(35)^ abLinus Torvalds (27 February 2007). "Re: Trivia: When did git self-host?". Git (Mailing list). 2009326

(36)^ Linus Torvalds (6 April 2005). "Kernel SCM saga." linux-kernel (Mailing list). 2009326

(37)^ Linus Torvalds (17 April 2005). "First ever real kernel git merge!". Git (Mailing list). 2009326

(38)^ Matt Mackall (29 April 2005). "Mercurial 0.4b vs git patchbomb benchmark". Git (Mailing list). 2009326

(39)^ Linus Torvalds (17 June 2005). "Linux 2.6.12". git-commits-head (Mailing list). 2009326

(40)^ Linus Torvalds (20 October 2006). "Re: VCS comparison table". Git (Mailing list). 2009326 Git vs. BitKeeper

(41)^ Linus Torvalds (27 July 2005). "Meet the new maintainer..." Git (Mailing list). 2009326

(42)^  (Junio C Hamano) (21 December 2005). "ANNOUNCE: GIT 1.0.0". Git (Mailing list). 2009326

(43)^ abScott Chacon (2011831). GitHub Flow. 2020531

(44)^ "#1 - anything in the master branch is deployable.
This is basically the only hard rule of the system."[43]

(45)^ GitHub Guides. 2020531 With GitHub, you can deploy from a branch for final testing in production before merging to master.

(46)^ "A merged version ... is committed, and your HEAD, index, and working tree are updated to it."[git 1]

(47)^ "Paths that merged cleanly are updated both in the index file and in your working tree."[git 1]

(48)^ "When both sides made changes to the same area, however, Git cannot randomly pick one side over the other, and asks you to resolve it by leaving what both sides did to that area."[git 1]

(49)^ "Edit the files into shape and git add them to the index. Use git commit or git merge --continue to seal the deal."[git 1]

(50)^ "the branches to be merged must be tied together by a merge commit that has both of them as its parents."[git 1]

  1. ^ a b c d e git-merge - git 2020-11-01閲覧

関連項目

編集

GitHub



arch

Bazaar

BitKeeper - GitLinux使Git

Concurrent Versions System (CVS)

Mercurial - Git

Apache Subversion

外部リンク

編集