git
・セットアップ
1.Gitをのインストーラをダウンロードしてきてインストールします。
http://git-scm.com/
2.インストールしたら、スタートメニュー > すべてのプログラム > Git > Git Bashを起動します。
3.インストールしたら、アプリケーション/ユーティリティの中にあるター ミナルを起動します。確認のためにversionコマンドを実行してみましょう。Gitのバージョンが表示されればインストールは成功です。出力される文字列はインストールした環境やバージョンによって異なる場合があります。
$ git --version
git version 1.7.7.5 (Apple Git-26)
Gtiの基本 (Gitを使ったバージョン管理)
1.Gitとは、分散型バージョン管理システムの一つで、もともとLinuxのソースコードを効果的に管理するために開発されました。
2. Gitでは、ファイルの状態を好きなときに更新履歴として保存しておくことができます。そのため、一度編集したファイルを過去の状態に戻したり、編集箇所の差分を表示したりすることができます。
3. また、古いファイルを元に編集したファイルで、他人の編集した最新ファイルを上書きしようとすると、サーバにアップロードした時に警告が出ます。そのため、知らず知らずのうちに他人の編集内容を上書きしてしまうといった失敗は起こりません。
初期設定(チュートリアル1 Gitの基本)
・gitの設定はユーザのホームディレクトリに作成される.gitconfigファイルに記録されています。直接ファイルを編集することもできますが、ここでは、configコマンドを使って設定を行います。
$ git config --global user.name "<ユーザ名>"
$ git config --global user.email "<メールアドレス>"
______________________________________
初期設定(チュートリアル1 Gitの基本)
次のコマンドで、gitの出力をカラーリングすることができます。
______________________________________
$ git config --global color.ui auto
初期設定(チュートリアル1 Gitの基本)
gitのコマンドにはエイリアスを設定することが出来ます。
次のコマンドでは、「checkout」を「co」と省略しても実行できるようになります。
$ git config --global alias.co checkout(coに略セル!!!)
セットアップは終了
新しいリポジトリを作成する(チュートリアル1 Gitの基本)
例:空のデイレクトリ名「tutorial」
・まずはtutorialディレクトリを好きな所に作成してください。
tutorialディレクトリをGitの管理下にするには、そのディレクトリに移動してinitコマンドを使用します。$ git init
・ここでは、新しく作成したtutorialディレクトリをGitリポジトリに設定しました。
$ mkdir tutorial
$ cd tutorial
$ git init
Initialized empty Git repository
in /Users/yourname/Desktop/tutorial/.git/
ファイルをコミットする(チュートリアル1Gitの基本)
tutorialディレクトリに新しいファイルを追加して、リポジトリにファイルを登録してみましょう。
...........................................................................................................................
(例)「sample.txt」テキストファイル名
※.1statusコマンド:Gitの管理下にあるディレクトリの、ワークツリーとインデックス
の状態を確認 する
※.2statusコマンドを実行してtutorialディレクトリの状態を確認します。
※.3ファイルをインデックスに登録するにはaddコマンドを使用します。
※.4<file>はインデックスに登録するファイルを指定します。
※.5スペース区切りで複数指定することもできます。
※.6パラメータに「.」を指定すると、すべてのファイルをインデックスに登録することができます。
※.7sample.txtをインデックスに追加して確認
..........................................................................................................................
______________________________________
$ git status※.1
$ git status※.2
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
sample.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git add※3 <file>..※.4.5
$ git add .※.6
$ git add sample.txt(サンプルテキストを追加)※.7
$ git status※.1
On branch master
Initial commit(空のコミット)
Changes to be committed:(コミットを変更する)
(use "git rm --cached <file>..." to unstage)
new file: sample.txt(追加完了)
______________________________________
インデックスにsample.txtが追加され、コミットの準備が整いました。
次はcommitコマンドを実行してコミットします。
$ git add sample.txt
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: sample.txt
$ git commit -m "<コメント>"
//commitコマンドを実行してから状態を確認します。
$ git commit -m "first commit"
[master (root-commit) 116a286] first commit
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 sample.txt
//インデックスにsample.txtが追加され、コミットの準備が整いました。 次はcommitコマンドを実行してコミットします。commitコマンドのフォーマットは次のとおりです。
$ git status
On branch master
nothing to commit (working directory clean)
//コメント履歴表示
$ git log
commit ac56e474afbbe1eab9ebce5b3ab48ac4c73ad60e
Author: eguchi eguchi@nulab.co.jp
Date: Thu Jul 12 18:00:21 2012 +0900
first commit
リモートリポジトリにプッシュする(リポジトリの共有)
Push=アップロード
リモートリポジトリで自分の手元のローカルリポジトリの変更履歴を共有するには、ローカルリポジトリ内の変更履歴をアップロードする必要があります。
そのために、Gitではプッシュ(Push)という操作を行います。 Pushを実行すると、リモートリポジトリに自分の変更履歴がアップロードされて、リモートリポジトリ内の変更履歴がローカルリポジトリの変更履歴と同じ状態になります。
リモートリポジトリをクローンする(リポジトリの共有)
リモートリポジトリからプルす())
____________________________________________________
誰かの変更履歴の入ったリモートリポジトリがあれば、それをまるごと複製して自分の手元で作業をすることができます。
Clone
リモートリポジトリを複製するには、クローン(Clone)という操作を行います。
クローンを実行すると、リモートリポジトリの内容をまるまるダウンロードしてきて、別のマシンにローカルリポジトリとして作成できます。
Pull
リモートリポジトリからローカルリポジトリを更新するにはプル(Pull)という操作を行います。
Pullを実行すると、リモートリポジトリから最新の変更履歴をダウンロードしてきて、自分のローカルリポジトリにその内容を取り込みます。
Note
クローンしたローカルリポジトリは変更履歴も複製されているので、元々のリポジトリと全く同じように履歴の参照やコミットをすることができます。
____________________________________________________
リモートリポジトリをBacklog上に作成する (チュートリアル2 リポジトリの共有)
_____________________________________
1.Backlogにログインし、リポジトリを作成するプロジェクトのメニューから「Git」をクリックします。プロジェクトがまだ一つもない場合はプロジェクトを作成してください。(Gitの項目が表示されていない場合は、Git機能を有効にする)。
2.「プロジェクト設定」 > 「Gitの設定」で、Git機能を有効にします。
3.Git機能を有効にしたら、同じくGitの設定画面より「リポジトリを追加する」をクリックします。
4. 「リポジトリ名」と「説明」を入力して「リポジトリを作成する」ボタンをクリックします
新しいリポジトリが追加されました。
______________________________
リモートリポジトリにプッシュする(チュートリアル2 リポジトリの共有)
............................................................................................
コンソール
※1モートリポジトリにローカルリポジトリの履歴をpushしましょう
リモートリポジトリのアドレスは名前を付けて記録しておくことができます。記録しておくと、pushするときには毎回長いリモートリポジトリのアドレスを入力する必要がなくなります。
まずは「origin」という名前でリモートリポジトリを登録してからpushを行います。
リモートリポジトリを追加するには、remoteコマンドを使用します。<name>は登録名、<url>はリモートリポジトリのURLを指定します。
※2次のコマンドを実行して、前のページで作成したリモートリポジトリのURLをoriginという名前で登録します。
※3リポジトリをプッシュするには、pushコマンドを使用します。<repository>はプッシュ先のアドレス、<refspec>はプッシュするブランチを指定します。ブランチについては発展編で詳しく説明します。
※4次のコマンドを実行してリモートリポジトリoriginにコミットをpushします。実行オプションで-uを指定すると、次回以降はそのブランチ名の指定を省略できます。ただし、一番最初、空のリモートリポジトリにpushするときはリモートリポジトリ名やブランチ名を省略できません。
途中でユーザ名とパスワードを求められるので、Backlogのユーザ名(メールアドレス)とパスワードを入力してください。
............................................................................................
※1:$ git remote add <name> <url>
※2:$ git remote add origin
https://[your_space_id].backlog.jp/git/[your_project_key]/tutorial.gi
※3$ git push <repository> <refspec>...
※4$ git push -u origin master
Username: <メールアドレス>
Password: <パスワード>
Counting objects: 3, done.
Writing objects: 100% (3/3), 245 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://nulab.backlog.jp/git/BLG/tutorial.git
- [new branch] master -> master
リポジトリを複製するにはcloneコマンドを使用します。<repository>はリモートリポジトリのURL、<directory>は複製先のディレクトリ名を指定します。
$ git clone <repository> <directory>
次のコマンドを実行すると、カレントディレクトリにtutorial2という名前のディレクトリ名でリモートリポジトリが複製されます。
$ git clone https://nulab.backlog.jp/git/BLG/tutorial.git tutorial2
Cloning into 'tutorial2'...
Username: <メールアドレス>
Password: <パスワード>
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
変更履歴のマージ(変更履歴の統合)
........................................................................................................................................
最後にpullを実行してから次のpushをするまでの間に、ほかの人がpushをしてリモートリポジトリを更新してしまっていた場合には、自分のpushが拒否されてしまいます。
この場合、マージという作業を行なって他の履歴での変更を取り込むまで自分のpushは拒否されます。これは、マージを行わないまま履歴を上書きしてしまうと、ほかの人がpushした変更(図中のコミットC)が失われてしまうからです。
........................................................................................................................................
競合の解決
......................................................................................................................................
マージを行うとGitが変更箇所を自動的に統合します。しかし、自動で統合できない場合もあります。
それは、リモートリポジトリとローカルリポジトリでファイル内の同じ箇所を変更していた場合です。この場合、どちらの変更を取り込むか自動では判断できないのでエラーが発生します。
競合が発生した箇所は、Gitがファイルの内容を手動で修正する必要があります。
次の図のように、すべての競合箇所を修正してから、コミットを行うと変更を統合したコミットが作成されます。
.....................................................................................................................................
競合を解決する(チュートリアル3 変更履歴の統合)
_____________________________________
1.まずはpullを実行して、リモートリポジトリから最新の変更履歴を取得しましょう。
..........................................................................................................
tutorialでの作業
$ git pull origin master
Username: <メールアドレス>
Password: <パスワード>
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://nulab.backlog.jp/git/BLG/tutorial
- branch master -> FETCH_HEAD
Auto-merging sample.txt
CONFLICT (content): Merge conflict in sample.txt
Automatic merge failed; fix conflicts and then commit the result.
..........................................................................................................
マージ中に競合が発生したことを表すメッセージが表示されてしまいました。
Gitが自動でマージできなかった部分(※)を次のように変更しています。
..........................................................................................................
tutorialでの作業
サル先生のGitコマンド
add 変更をインデックスに登録する
<<<<<<< HEAD
commit インデックスの状態を記録する(※)
2.「Merge conflict in sample.txt」と表示されているのでsample.txtファイル開いて確認してみます。pull リモートリポジトリの内容を取得する(※)
4c0182374230cd6eaa93b30049ef2386264fe12a
.........................................................................................................
3.ここでは、両方の変更を取り入れることにして、余計なマーカ行は削除します。
.........................................................................................................
tutorialでの作業
サル先生のGitコマンド
add 変更をインデックスに登録する
commit インデックスの状態を記録する
pull リモートリポジトリの内容を取得する
.........................................................................................................
4.ファイルの内容を修正し終わったらコミットする必要があるので、コミットします。
..........................................................................................................
tutorialでの作業
$ git add sample.txt
$ git commit -m "マージ"
[master d845b81] マージ
..........................................................................................................
これでリモートリポジトリから最新の変更内容の取り込みが完了しました。
5.logコマンドで履歴を確認してみましょう。 --graphオプションを指定するとテキストで履歴の流れを表示することができます。--onelineオプションを指定するとコミットの情報を一行で表示します。
...........................................................................................................
$ git log --graph --oneline
- d845b81 マージ
|
| * 4c01823 pullの説明を追加 - | 95f15c9 commitの説明を追加
|/ - 3da09c1 addの説明を追加
- ac56e47 first commit
...........................................................................................................
この表示から、二つの変更を統合したことがわかります。
これで、前のページでは拒否されたプッシュができるようになりました。プッシュして確認してみましょう。
プルリクエストやり方
1.Githaveにいきプルリクエストを開く
2.ベース、比較を合わせる
3.htmlでpushする(git add . コミットメッセージを残す)
4. レビューを待つ
5. 指摘が入ったら修正し再度commit, push します。
・Python コメント
なろう小説api: Na
なろう小説apiaランキング:NaRanking
しょぼいカレンダー番組表: Syo
しょぼいカレンダ予約ランキング:SyoRanking
AnimumemoMADBAPI春アニメ2021年:AnimeSpring
AnimumemoMADBAPI冬アニメ2021年:AnimeWinter
AnimumemoMADBAPI 秋アニメ2021年:AnimeAutumn
AnimumemoMADBAPI 夏アニメ2021年:AnimeSummer