Git ソースツリー(source tree)とは

Git操作はコマンドラインではなかなか作業が見にくいのですが、Git ソースツリーでは、今誰が、どのファイルを、どのように編集しているかを視覚化して見えやすいようにすることができます。

細かい操作はコマンドの方が早い などのデメリットもあるようです。

Git tag(タグ)って何?

ねーねー、これGit Tagらしいよ。

あー知ってる、知ってる、Git tagね。(やべ、全く知らねー。。)

ということでGit tagを学びたいと思います。

まず、gitの公式を見ます。
Git タグ
公式ページの見出しを拾うと、色々な機能や種類があることがわかります。
タグの一覧表示、タグの作成、注釈付きのタグ、署名付きのタグ、軽量版のタグ、タグの検証、後からのタグ付け、タグの共有

まず、Githubのレポジトリにファイルを作成します。適当にtest.phpとしておきます。

vagrantにgit cloneします。

[vagrant@localhost test]$ git clone https://github.com/githubix/test.git
Initialized empty Git repository in /home/vagrant/local/test/test/.git/
remote: Enumerating objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Unpacking objects: 100% (3/3), done.

1.git tagの一覧表示
コマンドラインでgit tagと打ちます。何も表示されません。タグはついていない状態です。

[vagrant@localhost test]$ git tag

git cloneしたファイルを適当に編集します。

echo "this is test<br>";
echo "addign git tag!";

2.git add .
[vagrant@localhost test]$ git add .

3.git commit -m “comment”
git commit します。
[vagrant@localhost test]$ git commit -m “tag commit”
[master a74bdba] tag commit
Committer: vagrant
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

git config –global user.name “Your Name”
git config –global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

git commit –amend –author=’Your Name

1 files changed, 2 insertions(+), 1 deletions(-)

4.git tag -a でタグ作成
git tag -a tagname -m “comment”でタグを生成します。
[vagrant@localhost test]$ git tag -a gittag -m “first tag”

5.git tagでタグ一覧表示
タグが生成されていることがわかります。
[vagrant@localhost test]$ git tag
gittag

6.リポジトリへpush
git remote set-url origin hogehogeとしてから、git pushします。
[vagrant@localhost test]$ git remote set-url origin https://githubix@github.com/githubix/test.git
[vagrant@localhost test]$ git push -u origin master
Password:
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 291 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://githubix@github.com/githubix/test.git
e44f89c..a74bdba master -> master
Branch master set up to track remote branch master from origin.

7.tag も git push
[vagrant@localhost test]$ git push origin gittag
Password:
Counting objects: 1, done.
Writing objects: 100% (1/1), 161 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To https://githubix@github.com/githubix/test.git
* [new tag] gittag -> gittag

8.githubで確認
tagもpushされているのがわかります。

お疲れ様でしたー

git checkout

git initします。
[vagrant@localhost app]$ git init
Initialized empty Git repository in /home/vagrant/local/app/.git/

[vagrant@localhost app]$ vi sample.txt
[vagrant@localhost app]$ cat sample.txt
Hello Git!

[vagrant@localhost app]$ git add sample.txt
[vagrant@localhost app]$ git commit -m “git checkout”
[master (root-commit) c4b426e] git checkout
Committer: vagrant
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

git config –global user.name “Your Name”
git config –global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

git commit –amend –author=’Your Name

1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 sample.txt

git branchを作成する。
[vagrant@localhost app]$ git branch branch1
[vagrant@localhost app]$ git branch branch2
[vagrant@localhost app]$ git branch
branch1
branch2
* master

[vagrant@localhost app]$ git checkout branch1
Switched to branch ‘branch1’
[vagrant@localhost app]$ git branch
* branch1
branch2
master
なるほど、checkoutはbranchの切り替えです。

[vagrant@localhost app]$ git checkout branch2
Switched to branch ‘branch2’
[vagrant@localhost app]$ cat sample.txt
Hello Git!

なるほど、なるほど。
最近なるほどが異常に増えた。

Github enterprise


45日freetrialを使ってみる。

Github Enterpriseとは
「GitHub Enterprise」は大手企業・大規模組織内でセキュアな環境下でのコラボレーティブコーディングを実現

なるほど~ ここは少しづつやってきましょう

gitのインストール

[root@localhost ~]# git –version
git version 1.8.3.1

gitを入れます。

yum remove git

# gitに必要なライブラリ
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

gitの最新版は?
https://mirrors.edge.kernel.org/pub/software/scm/git/
2018/10/5 2.19.1 これか!!
git-2.19.1.tar.gz 05-Oct-2018 16:56 7M

ミラーサイトを参考にwgetしてみる。 おお、俺、だんだん高度なことやってる? (やってる気分)

wget https://www.kernel.org/pub/software/scm/git/git-2.19.1.tar.gz 
ls

tar zxvf git-2.19.1.tar.gz
cd git-2.19.1

#ここからインストール
./configure --prefix=/usr/local
echo $?
make
echo $?
make install
git --version
git version 2.16.5

あれ、2.19入れたと思ったけど、2.16.5だ。まあいいか。

gitでfailed to pushとなったとき

To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the ‘Note about
fast-forwards’ section of ‘git push –help’ for details.

対応方法 fetchしてmergeする
[vagrant@localhost laravel]$ git fetch
Password:
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 8 (delta 2), reused 5 (delta 1), pack-reused 0
Unpacking objects: 100% (8/8), done.
From https://github.com/hoge/hogehoge
e66ad76..bd912e1 master -> origin/master
[vagrant@localhost laravel]$ git merge origin/master
Merge made by recursive.
README.md | 2 +-
appspec.yml | 5 ++++
readme.md | 67 +———————————————————
3 files changed, 8 insertions(+), 66 deletions(-)
create mode 100644 appspec.yml

これで、git pushできるようになる。
なるほど!!

githubからec2へデプロイ

デプロイとは、ソフトウェアの分野で、開発したソフトウェアを利用できるように実際の運用環境に展開すること。

IAMからロールへ行く
CodeDeployを選択する

ec2 インスタンス
# CodeDeployエージェント
wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto

# 実行
sudo service codedeploy-agent start

appspec.ymlを編集して、githubにpush

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ec2-user/dev/

code deployからアプリケーションの作成
deployする

deploy長いな。。

git cloneからpull requestまでやってみよう

git cloneする。
[vagrant@localhost local]$ git clone https://github.com/githubix/article.git
Initialized empty Git repository in /home/vagrant/local/article/.git/
remote: Enumerating objects: 141, done.
remote: Counting objects: 100% (141/141), done.
remote: Compressing objects: 100% (109/109), done.
remote: Total 141 (delta 12), reused 141 (delta 12), pack-reused 0
Receiving objects: 100% (141/141), 197.50 KiB | 72 KiB/s, done.
Resolving deltas: 100% (12/12), done.
[vagrant@localhost local]$ ls
article
[vagrant@localhost local]$ cd article
[vagrant@localhost article]$ ls
README.md bootstrap config phpunit.xml resources storage
app composer.json database public routes tests
artisan composer.lock package.json readme.md server.php webpack.mix.js

git checkout -b 
git checkout コマンドに、パラメータでブランチ名を指定すれば、そのブランチに切り替える事ができる。
ブランチの作成と新しいブランチへの切り替えを同時に行うには、git checkout コマンドに -b スイッチをつけて実行
branch .. simply a lightweight movable pointer to one of commits.

git add ファイルやディレクトリをインデックスに登録.

developという新しいブランチを切る
[vagrant@localhost article]$ git checkout -b develop
Switched to a new branch ‘develop’

readmeを編集する。
README.md

# article
second changed

indexとの差異を見る。
[vagrant@localhost article]$ git diff
diff –git a/readme.md b/readme.md
index b0affd5..e5dca01 100644
— a/readme.md
+++ b/readme.md
@@ -1,65 +1,2 @@

[vagrant@localhost article]$ git push origin develop
Password:
error: The requested URL returned error: 403 Forbidden while accessing https://hpscript@github.com/githubix/article.git/info/refs

あれ、手順が違うか。。。forkしてないからか。。

forkして、pushする。
[vagrant@localhost article]$ git push origin develop
Password:
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 289 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
remote:
remote: Create a pull request for ‘develop’ on GitHub by visiting:
remote: https://github.com/hpscript/article/pull/new/develop
remote:
To https://hpscript@github.com/hpscript/article.git
* [new branch] develop -> develop

おおおおお、compare&prがでました。
なんかわかってきた~

pull requestのメッセージが届く。
なるほどなるほど。

margeする。

変更が保存されました。なるほど~ 変更内容をgithubから自動的にawsにデプロイするにはどうすればいいんだ?
要確認ですな。

githubでPR(pull request)をしよう2

新しいアカウントを作成します。

続いて、vagrantで新しいアカウントの作業者用のフォルダ、localを作成します。
[vagrant@localhost ~]$ mkdir local
[vagrant@localhost ~]$ cd local

ここで、git clone, add, commit, push, pullrequestをしたいとおもいます。

ところで、git commit -m の「-m」は…
「-m」オプションを指定することで、エディターを起動することなく、コミットメッセージも指定してコミットすることができる。

なるほど。
git remote add origin hogehoge
以下で、originのremoteレポジトリを指すようになる。なるほど、remoteだからね。

git push -u origin master でpushする。
ところで、git push -uの-uとは?
「-u」オプションをつければ、同名の上流ブランチを設定できる。上述の通り、git push が成功すれば、その後はパラメータを省略して push できるようになる。

[vagrant@localhost laravel]$ git push
Password:
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 274 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://githubix@github.com/githubix/article.git
e71a232..e66ad76 master -> master

なるほど、git pushだけでいけるようになりました。

では、新しいアカウントでgit cloneして、編集、add, commit, push、prまでやりたいと思います。