今さら聞けないGit 2020年06月03日

今さら聞けないGit 2020年06月03日

開発チームの生産性・健全性を客観的に知るためにリポジトリ履歴から機械的に可視化するツールを作った

# はじめに
ソフトウェア開発のチームの生産性や健全性というものは、内部の体感的として理解できるものの、外部の人間からは見えにくいものです。こういった情報の非対称性は開発チーム外の人々との関係の中での問題の原因になってきました。

また、複数の開発チームやプロダクトを束ねるEM、CTOや、管理職にとってそれぞれの状況を客観的な数字やグラフで可視化することは、全体的な戦略を考える上でも重要な参考情報になります。ですが、アンケートやプロジェクト管理を増やすほど、どんどんと開発メンバーに負担をかけてしまうことになり、計測のし過ぎによる疲れなども誘発してしまいます。

本稿では、gitリポジトリのログ情報から、いくつかのグラフを生成し、チームの状況を可視化するためのツール“gilot“を作成したので、その目的と意図、そして使い方、注意点を解説します。

# アプローチ方法
gilotのアプローチは、git logのデータを解析して、開発チームのアウトプットがどれだけ安定しているか、どれだけの出力があるのか、何人が実質的にコミットしているのかなどを分析して、可視化します。生産性や健全性その

元記事を表示

HerokuのビルドインサーバーGit管理

#Herokuとは。
無料でWEBサービスを開発&公開できるサービスで
ApacheやPHP、データベースのインストールが不要(WEBサーバーのデフォルトはApache、DBはpostgres)。
クラウドサービスで初期費用を抑え開発可能になり、環境構築が容易である。

#初期設定

[Heroku](https://signup.heroku.com/jp)で無料アカウントを作成する。

“`
$ brew install heroku/brew/heroku
“`

Herokuへログインする。

“`
$ heroku login
“`

編集するディレクトリを作成し移動する。

“`
$ mkdir myapp
$ cd myapp //アップロードしたいアプリのディレクトリ
“`

gitのリポジトリとアクセスURLを作成する。
`Anyname`は任意のリポジトリ名で入力する。

“`
$ heroku create {Any}name //プロジェクトフォルダへアプリの作成
Creating ⬢ eriapptest… done
https://you

元記事を表示

【Git】新しいブランチを作成する。

メモとして残します。

#■やり方
###0.作成前にカレントブランチを確認
“`shell
git branch –contains=HEAD
“`
注)分岐させたい場所にいなかったら、ブランチまたはコミットレベルで移動する。

###1.ローカルにブランチ作成
“`shell
git branch <作成するブランチ名>
“`

###2.リモートに作成したブランチを反映
“`shell
git push -u origin <作成したブランチ名>
“`

元記事を表示

CodeCommitでプルリクエスト作成したら変更点が多すぎてマージできなくなった

タイトルにもある通り、CodeCommitのコンソール上でプルリクエストを作成し、マージができない状態に陥ったのでメモ。

今回は開発ブランチ(develop)をmasterブランチにマージしようとしたときに、コンソール上に下記のエラーが発生してマージすることができませんでした。

“`
Tips Divergence Exceeded Exception The merge cannot be completed because the divergence between the branches is too great. If you want to merge these branches, use a Git client.
“`

上記のエラーをそのまま簡単に訳すと「差分が多すぎるからマージできないよ。マージするならGitクライアント使ってね」といった感じでしょうか。

え、差分多いと(コミット数なのかな・・?)コンソール上でマージできないとかあるんですか・・・。

## 原因

この記事を見に来ていただいた方、すみません。
いろいろ調べては見てみたものの、具体的にこ

元記事を表示

大きな機能開発を細かくレビューしてもらうときに使いたいGitHubのSquash Merge

チーム開発において、大きな機能開発をいきなり大きなPRを作るとレビューが大変です。
また、レビューの段階で設計的に良くない点が見つかって大きな書き直しに迫られることもあるかと思います。
このようなことはある程度規模の大きくなってきたアプリケーションに、複数の機能を並行して開発している経験があるならイメージが付きやすいと思います。

そんな作業途中のコミットログやレビューでの指摘事項の修正が、すべてmasterブランチのコミットログに残ってしまうのは格好わるいような気がします。
そんなときに今の会社に入って運用されているマージのルールがとてもよかったのでメモしておきます。

# Squash Mergeとは
GitHubには3つのマージ方法がある、ということを意識したことがある人はどれぐらいいるでしょうか?
スクリーンショット 2020-06-03 2.16.49.pngGithubのeditばかり使う人へ送る”Squash merge workflow”

# 前書き
この記事は特にGithubEditを使い糞Commitを量産している方に見てもらいたいです。

GithubEditは本当に楽ちんなので巨大ファイルじゃない限りWebIDEとかも使う気になれませんよね。ですが、何回も何回もUpdate ***.xxxを繰り返しているのではないかと思いました。それでLocalCloneしてSoft ResetしてForce Pushしていた過去が私にはあります。

GitHubこれだけは覚えておけばOK!初級編

GitHub初心者がこれだけ覚えておけば
バージョン管理ができる手順をシンプルにまとめました。
あくまで最低限の手順です。

# Gitとは
ファイルのバージョン管理システムのことです。
![Git_image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393193/8c7c750a-08dc-59fb-8001-7e5e4039a7bb.jpeg)

# 1.GitHubの公式サイトからアカウント作成する
https://github.com/

登録メールアドレスにきたメールで認証する

これで登録完了

# 2.GitHubでリポジトリを作成する
まずはリポジトリを作成します。

GitHubにログインした状態で、「New Repository」ボタンを押下します。」ボタンを押下します。

・Repository name
 リポジトリ名を決める 

・Description
 リポジトリの説明を記載(なくてもOK)

・Public or Privateを選択
 Public – 公開リ

GitHubの初回コミットは空でするべきかもしれない

#なぜ?
さっき、初回のコミットで100MBを超えるファイルを入れてしまった。
勿論プッシュすることもできず、取り消す方法もよく分からなかった。(初回以外のコミットなら、指定のコミットまでリセットすることでキャンセルできる)
結局、PC上からローカルリポジトリごとすべて消去して、一からやり直すことで解決した。
これで3時間無駄にした。
もうこんなの御免だ。
#空でコミットするって?
私の場合、「void_file.txt」という空テキストデータを作って、それだけを何よりも先に、一度コミットするという手法を取ることにした。
まだGit初心者なので、理に適ってないやり方かもしれない。
少なくともこれでプッシュする前なら、この空コミットまでリセットしてあげることでなんとかなるだろう。

なんか頭にきたことを走り書きしているので、駄文だとは思うが、以上である。

git pull出来ないときの対処法

個人開発を進めて行く中で、git pullできないことがありました。

“`
$ git pull
“`

***
##試したこと##

git stashコマンドを入力。
(変更しているファイルすべてを別の場所に保存しておいて一時的に変更していない状態に戻す)

“`
$ git stash
“`

このコマンドを実行すると無事**git pull**できました。

***

##ちなみに

“`
$ git stash list
“`

上記のコマンドで、一時的に保存したリストを確認できます。

“`
$ git stash list
stash@{0}: WIP on follow_unfollow: 1ef591e fix users controller
“`

以下のコマンドで、退避していたスタッシュを元に戻せます。

“`
$ git stash pop
“`

終わり。

>[本番環境でpullしたらコンフリクト?解決法3パターン!【Please commit your changes or stash them before you merge】]

GITについて初歩的なところから勉強してみた

# (1)はじめに
最近、業務でGitを使うことになり、勉強をはじめたばっかりの初心者です。
そもそも、PULL!?PUSH!?リポジトリ!?みたいな状態だったので、初歩的なことから勉強してみましたので備忘録として残していこうと思います。
(基礎的なことしか書いてないです)

# (2)用語の説明
## リポジトリについて
リポジトリとは、フォルダ、ファイル、ソースなどを保存しておく場所のことを指す。
Gitでは以下の2種類存在する。
・リモートリポジトリ:サーバー上に配置され、ここでチームで共有する。
・ローカルリポジトリ:ユーザーそれぞれのPC上に配置されている。

Aさんと同じソースを共有しているとすると、リポジトリは、こんな感じ。
スクリーンショット 2020-06-02 19.29.15.png

詳細に

Gitの使い方

gitの使い方

まずはclone
ネットからローカルに落とす

“`
git clone リポジトリ
“`

ブランチ作成

“`
git branch ブランチ名
“`

ブランチ切り替え

“`
git checkout ブランチ名
“`

変更したふぁいるをadd

“`
git add 変更したファイル
“`

変更したふぁいるをcommit

“`
git commit -m 変更したファイル
“`

ローカルのものをリモートにあげる(ブランチがリモートに無いとき)

“`
git push –set-upstream origin ブランチ名
“`

この後プルリクを送る

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

メモ用です。

“`
#対象フォルダにgitをセット
git init

#今あるブランチの確認
git branch

#hogeのブランチに移る
git checkout hoge

#ブランチのマージ
git merge マージ先 マージさせるブランチ

#ブランチの削除
git branch -d 削除したいブランチ名

#gitのレポジトリに変更したファイルを追加
git add ファイル名

#新規作成、削除、変更全てを反映
git add -A

#新しく作られたファイルは反映せず、前のバージョンにあった変更のみ
git add -u

#新規作成と変更のみ反映で削除は反映しない
git add .

#現在のリモートレポジトリを確認
git remote -v

#gitのログを確認
git log

#masterブランチに戻るコマンドです。
git checkout master

#加えられたすべての変更を元に戻す新しいコミットを生成し、それを現在のブランチに適用するコマンドです。
git revert

#リモートレポジトリのmasterブランチにpushする

Rails Tutorial 第6版 学習まとめ 第2章

##概要
この記事は私の知識をより確実なものにするためにRailsチュートリアル解説記事を書くことで理解を深め
勉強の一環としています。稀にとんでもない内容や間違えた内容が書いてあるかもしれませんので
ご了承ください。
できればそれとなく教えてくれますと幸いです・・・

出典
[Railsチュートリアル第6版](https://railstutorial.jp/)

##この章でやること
toy_appの作成を通してscaffoldの強力な機能を知る
RESTアーキテクチャとは何か大まかに把握する。

##Toy_appの生成
①hello_appと同じようにRailsのバージョンを指定して生成する

“`
$ cd ~/environment
$ rails _6.0.3_ new toy_app
$ cd toy_app/
“`

②Gemfileも新しくなったのでToyアプリ用に書き換える

“`ruby:Gemfile
source ‘https://rubygems.org’
git_source(:github) { |repo| “https://github

Gitを使ったチーム開発のために【2020年6月現在】

初心者の初心者である僕が、Gitを使えるようになるためによく見た動画は以下の3つです。これらを見ながら、実際に手を動かすのがとっても効果的です!

## まずは基本を抑えよう!

## まとめ

これらを実践すればGitの基本的なことは、わかりますよ。最近はYouTubeで駆け出しエンジニア用の有益な動画がたくさんあるので、助かりますね。

とりわけプログラミングは文字よりも、図や写真、動画がぴったりです。

githubのはじめ方

メアドとユーザー名

まずgithubに登録済みのメアドとユーザー名をコマンドを用いて登録します。

“`
ユーザー名とメールアドレスを設定する
Git上で使いたい情報を入力します。下記のコマンドで【ユーザー名】と【メールアドレス】の部分を、自分の情報に置き換えてください。

$ git config –global user.name “【ユーザー名】”
$ git config –global user.email 【メールアドレス】
以下のコマンドで設定を確認できます。

$ git config –list
user.name=【ユーザー名】
user.email=【メールアドレス】

“`

【参考】

SSHキーを設定

鍵を設定します。

“`
1:鍵を作成する。
2:作成した鍵をコピーする。
3:gitghubに公開鍵を登録する。
4:configファイルを作成し直す。(接続確認)

初学者によるGitの使い方メモ2

# はじめに
この記事は、[初学者によるGitの使い方メモ1](https://qiita.com/kensho_tk/items/20cb0eb7c757318b31b6) の続きです。

# Gitコマンド

###変更内容を把握
“`:git  addする前の変更分
$ git diff
$ git diff <ファイル名>
“`
differenceの略
特定のファイルが見たい場合はファイル名を付ける。

“`:git  addした後の変更分
$ git diff –staged
“`
git addした後、つまりステージに上げた、ステージングした状態で確認すること。

###変更履歴の確認
“`:コミットログの表示
$ git log
$ git log –online #一行で表示
$ git log -p <ファイル名> #ファイルの変更差分の確認
“`
###ブランチの作成
“`:ブランチの新規追加
$ git branch <ブランチ名>
“`
複数機能を並行して開発するのがブランチである。
最後に大元の機能

git pull で、ローカルを強制上書き

git fetch origin master
git reset –hard origin/master

git remote 名前変更

# 追加
“`bash
$ git remote add new https://github.com/xxxx/xxx.git
“`

# 登録確認
“`bash
$ git remote -v
new https://github.com/xxxx/xxx.git (fetch)
new https://github.com/xxxx/xxx.git (push)
“`

# 名前変更
“`bash
$ git remote rename new upstream

$ git remote -v
upstream https://github.com/xxxx/xxx.git (fetch)
upstream https://github.com/xxxx/xxx.git (push)
“`

Windows10にGit環境を構築してみた

# Sourcetreeをインストール
 Windows10でバージョン管理が必要となったので、簡単にGitも一緒にインストール出来る
[Sourcetree](https://www.sourcetreeapp.com) をインストールしてみた。
 (いろいろ躓いたので、自分用のメモとして残したものです。)

## スタートメニューにSourcetreeがいない!
 インストールして動作確認が終わり、再度、アプリを起動しようとすると、スタートメニューにSourcetreeがいない。
Windows初心者なので、少し焦りましたが、以下の場所にありました。(隠しファイルの中です。)

“`
C:\Users\username\AppData\Local\SourceTree\SourceTree.exe
“`
 ショートカットを作って、以下に移動します。(これも隠しファイルの中です。)

“`
C:\ProgramData\Microsoft\Windows\Start Menu\Programs
“`
 ちなみに、このフォルダに直接ショートカットを作成する事は出来ません。

#

fishシェルででgitリポジトリのトップレベル ディレクトリにcdするプラグインを作った

gitリポジトリの中にいるときに、トップレベルのディレクトリに移動したくなることがよくありますよね。前にそれを1回のコマンドでできるようにする[zsh用のプラグイン](https://github.com/mollifier/cd-bookmark)を作っていました。今回それをfishシェル用に移植したので紹介します。

## このプラグインでできること
[fish-cd-gitroot](https://github.com/mollifier/fish-cd-gitroot) というプラグインを作りました。これをインストールすればcd-gitrootというコマンドが使えるようになります。fish-cd-gitrootという名前だけど入力するコマンド名はcd-gitrootであることに注意してください。

使っている様子はこんな感じです。

“`shell
# /home/mollifier/git_repoがgitリポジトリとする
# その中に次のようにディレクトリがあったとする
# doc/
# src/
# |-scripts/
# `-web/
“`

“`sh