【備忘録】GitとGitHubの超基礎

Git
あくまで備忘録なんで雑に記録します

Gitとは

リーナス・トーバルズ(Linux開発者)がバージョン管理システムのライセンス切れをきっかけに

スナップショットでバージョン管理(差分保存じゃないので早い)するシステムを作った

参考:もう怖くないGit!チーム開発で必要なGitを完全マスター

https://www.udemy.com/course/unscared_git/

図1

A・B・C → A・B1・C1 → A1・B1・C2 (変更がないものはそのまま)

GitHubとは

・クリス・ワンストラスが作った、開発者を支援するWebサービス(ホスティングサービス)

・無料プランでは、クラウドにアップされたソースコード全てがGitHubの利用者に公開

・Bitbucket非公開も無料(少人数)

・プルリクエストは、変更のリクエスト

他のメンバーにレビュー依頼、レビューがOKとなったソースコードだけを反映させることができる

ざっくりした流れ

①GitHubというWebサービス(ホスティングサービス、共有や公開):登録が必要

②PCにGitというソフトウェアが必要

③ローカルでの作業台(ワークツリー)が必要

④ワークツリーから、ステージに加える

ローカルリポジトリへ引き渡す(コミットする)

リモートリポジトリへ送る(プッシュする)

図2

(図1の)バージョン1〜バージョン2で、B1・C1へ変更したら、BファイルとCファイルを「add

バージョン2を「commit

ローカルリポジトリからリモートリポジトリへ「push

どのようにデータを管理しているの?(発展)

①「add」

リポジトリに圧縮したものを配置

ステージにはその番地「index」を配置

②「commit」

・ツリー構成(index集)を登録=現在の最新状態ツリー
(図1の)バージョン2で例えると、ツリー構成は「A・B1・C1」

コミットメッセージ(誰が、いつ、どんな変更をしたの?)
現在のツリー
親ツリー
などを記録

リポジトリには3種類のデータがある(圧縮ファイルツリー構成コミット

③新しいファイルを追加したら

「add」の流れは同じで、「phsh」の時にコミットメッセージに
今のツリー構成・親コミット(ちゃんと変更履歴を辿れる様に)が記録される
変更前の「圧縮ファイル」・「ツリー構成」・「コミット」はいずれも上書きせず、保存

では、使ってみる

【①GitHubの登録】

GitHub: Let’s build from here
GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, revie...

【Mac】Gitの環境構築をしよう!

参考:Githubの登録(ユーザーネーム・メアド・PWを登録)届いたメールで認証

【②MacにGitがインストールされているか確認】

インストール確認
git –version
>git version 2.34.0(いた)

各種初期設定(ユーザー名・メアド・エディタ)
git config –global user.name “ユーザー名”
git config –global user.email “メールアドレス”
git config –global core.editor “エディタ名”
>にて、コミットしたときに誰が行なったコミットかを記録する

GitHubのユーザー名・アドレスと揃えた方が良いみたい

設定値確認
git config user.name
>ユーザー名でてくる(個別確認)
git config –list(一括確認)

(~/.gitconfig に記載されている)

【③ローカル環境を新規作成:ワークツリー】

mkdir [作業用ディレクトリ]・・・適当なディレクトリを作る

cd [作業用ディレクトリ]・・・そのディレクトリに移動

【④ローカルリポジトリ作成】

git init

hint: (抜粋)
・Using ‘master’ as the name for the initial branch. This default branch name is subject to change.〜>初期branch名は「master」にしとくよ〜
・Initialized empty Git repository in [作業用ディレクトリ]/.git/>空っぽのGitリポジトリを初期化したよ in 作業用のディレクトリ直下の[.git]という隠しフォルダに

ということで、.gitという隠しフォルダが出来ました

【.gitの中身】

・objectsフォルダ・・・リポジトリ本体(圧縮・ツリー・コミット)
・configファイル・・・設定ファイル
・indexファイル・・・ステージにあたる(圧縮ファイルを指す番地=インデックスを記載)

その他
[descriptionファイル, HEADファイル]
[hooksフォルダ, infoフォルダ, refsフォルダ]

【プッシュ先のリモートリポジトリを指定する】

登録したGitHubでリモートリポジトリのアドレスを確認
git remote add origin [https://github.com/[ユーザー名]/[リモートリポジトリ名].git]

【ローカル環境をリモートからコピー】

・リポジトリを「リモート」から「ローカル」にコピー
・ワークツリー(圧縮前の本体)もコピー

GitHubにて実際のオープンソースソフトを落としてみる(例ではAtom)

オープンソースを探す>右上の「Code」を選択して、URLをコピー

作業用ディレクトリを作りたい階層(つまり1個上)に移動(デスクトップとかでもOK)

git clone [URL](未 init のディレクトリ、デスクトップとかでOK)ちょっと時間かかる

Gitのコマンド

Gitでよく使うコマンド一覧

なんか知らんけど、間違ってたらすんません(笑)

コメント

"+r+""+h+""+">"}var c,i=n(45),u=n(74),f=n(64),s=n(53),p=n(76),l=n(41),y=(n=n(52),"prototype"),h="script",v=n("IE_PROTO"),g=function(){try{c=new ActiveXObject("htmlfile")}catch(r){}var r;g="undefined"==typeof document||document.domain&&c?function(r){r.write(a("")),r.close();var t=r.parentWindow.Object;return r=null,t}(c):((r=l("iframe")).style.display="none",p.appendChild(r),r.src=String("javascript:"),(r=r.contentWindow.document).open(),r.write(a("document.F=Object")),r.close(),r.F);for(var t=f.length;t--;)delete g[y][f[t]];return g()};s[v]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(o[y]=i(t),n=new o,o[y]=null,n[v]=t):n=g(),e===r?n:u.f(n,e)}},function(r,t,e){var n=e(5),o=e(44),a=e(43),c=e(45),i=e(11),u=e(75);t.f=n&&!o?Object.defineProperties:function(r,t){c(r);for(var e,n=i(t),o=u(t),f=o.length,s=0;s=t||56320!=(64512&i(r,e))))return!1}return!0}})},function(r,t,e){var n=e(91),o=String;r.exports=function(r){if("Symbol"===n(r))throw new TypeError("Cannot convert a Symbol value to a string");return o(r)}},function(r,t,e){var n=e(2),o=e(7),a=e(13),c=e(15),i=e(102),u=(e=e(6),Array),f=a("".charAt),s=a("".charCodeAt),p=a([].join),l="".toWellFormed,y=l&&e((function(){return"1"!==o(l,1)}));n({target:"String",proto:!0,forced:y},{toWellFormed:function(){var r=i(c(this));if(y)return o(l,r);for(var t=r.length,e=u(t),n=0;n
タイトルとURLをコピーしました