- 投稿日:2019-02-28T23:56:42+09:00
Gig コミットの GPG 署名を既定で有効にする。
- 投稿日:2019-02-28T23:39:15+09:00
Rails開発の初期設定で参考になった記事まとめ
Railsのインストール
過去の記事をご覧ください(Railsインストール)
MySQLに変更する方法
過去の記事をご覧ください(DBをMySQLに変更)
日本語化
Rails5からは
application.rb
では設定できないので注意しよう。新しいファイルを追加して以下のように設定しよう。ja.yml
に関しては同じように設定できる。initializers/locals.rbI18n.config.available_locales = :ja I18n.default_locale = :jaRailsの基本的な概念
※viewは対応するコントローラーのアクションで定義された変数が使えてRubyが埋め込めることがわかればとりあえずいいと思うので省略。
GitHub関連
GitHubの使い方はこのあたりが良かった。ssh通信の公開鍵の登録についてはこのあたりが参考になった。また、パスワードなどの機密情報が書かれているファイルは、GitHubで公開することは避けよう(
.gitignore
をいじれば同期するものを制限できる)。Bootstrap
- 投稿日:2019-02-28T22:35:31+09:00
Gitリポジトリの内容を別のマシンに送る時にgit bundleを使う
手元のマシンでgitで管理しているファイルを別のマシンに送りたいと思ったときに、以下の3つが自分の中にはあった。
- 一旦リモートリポジトリにpushして別マシンからcloneする
git reset --hard
した後、zip圧縮して送るgit clone project-name copy-of-project-name
した後、copy-of-project-name
を圧縮して送るただ、どれも微妙な気がしていた。
そこで
git bundle
というものを知ったので試した。
ざっくりいえば、gitリポジトリのある範囲の内容を1ファイルにまとめる的な事をやってくれるらしい。手順
今回はmasterブランチの内容をまとめて持っていく感じで使う。
まず、
master
ブランチを対象にproject-name.bundle
というバンドルファイルを作る。git bundle create project-name.bundle masterこれで同ディレクトリに
project-name.bundle
というバンドルファイルができあがる。
これをリモートマシンへどうにかして送る。(scpとかftpとかUSBメモリとか)受け取ったら以下のようにして取り込む。
# バンドルファイルからcloneする git clone project-name.bundle project-name # git cloneによりディレクトリが作られるので移動 cd project-name # HEAD(masterブランチ)をorigin/masterに移動し、ワーキングツリーもreset git reset --hard origin/masterちょっと違うのが、git clone直後のHEADは何も指してない状態になっている。つまりワーキングツリーも空っぽの状態になっている。(
.git
しかない状態)
なので、git reset --hard origin/master
で無理やりワーキングツリーの状態をorigin/masterの状態にする。なお、origin(リモート)はバンドルファイルを指している。バンドルファイルの扱いは色々あるみたいで、これで良いのかはわからないけど、多分これが一番楽だと思います。
ただ、ある程度大きいプロジェクトだと辛いかもしれない。そもそも今時のプロジェクトはリモートリポジトリがあるはずですし、わざわざこんな方法は取る必要はないでしょう。
あと言うまでもないですが、信頼できるバンドルファイルに対して使いましょう。
その用途にgitはいらないのでは
「必要なファイルをコピーして送れるなら、わざわざgitを使わなくてもいいのでは」といえばそうなんですが、この方法は以下の点が良いです
- commitした時点の綺麗な状態を間違いなく作れるのが良い
- 履歴をさかのぼりたくなる時をカバーできる
逆に、もしここら辺にメリットに感じなかったら、この方法は使わなくてよいと思います。
参考にしました
7.12 Git のさまざまなツール - バンドルファイルの作成
ここではbundle create時にHEADを含めていたが、含めてもcloneした時点でワーキングツリーがmasterの時点になる事はなかった。
.git/refs/heads/master
が無いのでそれが原因なような気はする。
- 投稿日:2019-02-28T22:35:31+09:00
git bundleでGitリポジトリの内容を別のマシンに送る
手元のマシンでgitで管理しているファイルを送りたいと思ったときに、以下の3つが自分の中にはあった。
- 一旦リモートリポジトリにpushして別マシンからcloneする
git reset --hard
した後、zip圧縮して送るgit clone project-name copy-of-project-name
した後、copy-of-project-name
を圧縮して送るただ、どれも微妙な気がしていた。
そこで
git bundle
というものを知ったので試した。
ざっくりいえば、gitリポジトリのある範囲の内容を1ファイルにまとめる的な事をやってくれるらしい。手順
今回はmasterブランチの内容をまとめて持っていく感じで使う。
まず、
master
ブランチを対象にproject-name.bundle
というバンドルファイルを作る。git bundle create project-name.bundle masterこれで同ディレクトリに
project-name.bundle
というバンドルファイルができあがる。
これをリモートマシンへどうにかして送る。(scpとかftpとかUSBメモリとか)受け取ったら以下のようにして取り込む。
# バンドルファイルからcloneする git clone project-name.bundle project-name # git cloneによりディレクトリが作られるので移動 cd project-name # HEAD(masterブランチ)をorigin/masterに移動し、ワーキングツリーもreset git reset --hard origin/masterちょっと違うのが、git clone直後のHEADは何も指してない状態になっている。つまりワーキングツリーも空っぽの状態になっている。(
.git
しかない状態)
なので、git reset --hard origin/master
で無理やりワーキングツリーの状態をorigin/masterの状態にする。なお、origin(リモート)はバンドルファイルを指している。バンドルファイルの扱いは色々あるみたいで、これで良いのかはわからないけど、多分これが一番楽だと思います。
ただ、ある程度大きいプロジェクトだと辛いかもしれない。そもそも今時のプロジェクトはリモートリポジトリがあるはずですし、わざわざこんな方法は取る必要はないでしょう。
あと言うまでもないですが、信頼できるバンドルファイルに対して使いましょう。
その用途にgitはいらないのでは
「必要なファイルをコピーして送れるなら、わざわざgitを使わなくてもいいのでは」といえばそうなんですが、この方法は以下の点が良いです
- commitした時点の綺麗な状態を間違いなく作れるのが良い
- 履歴をさかのぼりたくなる時をカバーできる
逆に、もしここら辺にメリットに感じなかったら、この方法は使わなくてよいと思います。
参考にしました
7.12 Git のさまざまなツール - バンドルファイルの作成
ここではbundle create時にHEADを含めていたが、含めてもcloneした時点でワーキングツリーがmasterの時点になる事はなかった。
.git/refs/heads/master
が無いのでそれが原因なような気はする。
- 投稿日:2019-02-28T22:04:53+09:00
Gitを2.21.0にアップデートしたらcloneできなくなった話(fatal: multiple updates for ref 'refs/remotes/origin/master' not allowed)
現象
Mac用パッケージ管理ツールのHomebrew経由でGitを2.21.0(2月24日リリース)にアップデート。
GitHubからソースを落としてくるべく、git clone
を実行したら次のエラーが発生。fatal: multiple updates for ref 'refs/remotes/origin/master' not allowed解決方法
Gitのglobal設定が保持されている
~/.gitconfig
から[remote "origin"]
に関する記述を削除したら解消。##### 変更前 ###### [user] email = ***** name = ***** [http] postBuffer = 2M [core] excludesfile = /Users/atsushiosawa/.gitignore_global editor = vim [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/*##### 変更後 ###### [user] email = ***** name = ***** [http] postBuffer = 2M [core] excludesfile = /Users/atsushiosawa/.gitignore_global editor = vim最後に
[remote "origin"]
の設定が2.21.0のバージョンアップの際に追加されたのか、それとも旧来からある設定がこのバージョンアップで悪さをするようになったのかは不明。
とりあえずは問題なく動いているので良かったがモヤモヤする……
- 投稿日:2019-02-28T21:54:27+09:00
Ktlintを使って特定のディレクトリにだけフォーマッターをかける
./gradlew ktlintFormatの後に
git diff --name-only | grep -v 特定ディレクトリまでのパス | xargs git checkout
- 投稿日:2019-02-28T21:37:05+09:00
【個人用まとめ】git flowを使った開発
はじめに
コマンドラインからgit flowを使って開発をしたときにコマンドや手順を調べるのが面倒だったのでまとめます。
個人開発なので、複数人での開発とは違う部分もあるかと思います。
間違い等ありましたらご指摘お願いします。git flow のインストール
yum install git-flow
でインストールできるというのを見かけたのですが、できないっぽいので他のやり方でインストールします。$ cd /usr/local/src $ sudo bash $ wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash $ exitgit flowの初期化
管理したいリポジトリで下記コマンド実行。
$ git flow init # いろいろでてくるけどとりあえず全部EnterでOKちなみに
-d
オプションを付けると自動で初期設定をしてくれます。リモートリポジトリがあるなら初期化した後
git push --all
してもいいかも。開発手順
featureブランチ
developブランチからfeatureブランチを切って機能の追加を行います。
$ git flow feature start hogehogeこれでfeature/hogehogeブランチが作成され、チェックアウトされます。
作業が終わったら
$ git add . $ git commit -m "hoge" $ git flow feature finish hogehogeでdevelopブランチにマージされてfeature/hogehogeブランチは削除されます。
developブランチにマージされた後、developブランチをpushします。
releaseブランチ
リリース作業をする際は、developブランチからreleaseブランチを切ります。
$ git flow release start v1.0リリース作業が終わったら
$ git add . $ git commit -m "hogehoge" $ git flow release finish v1.0を実行すると、masterブランチとdevelopブランチにマージして、masterブランチにタグをつけてくれます。
タグはreleaseブランチの名前が付くようです。
また、releaseブランチは削除されます。
この作業が終わったら
git push --all
ですべてリモートリポジトリにあげます。hotfixブランチ
緊急性の高いバグなどを修正する際に利用します。
master ブランチからhotfixブランチを切ります。$ git flow hotfix start v1.1作業が終わったら
$ git add . $ git commit -m "hogehoge" $ git flow hotfix finish v1.1でmasterとdevelopブランチにマージされて、masterブランチにタグが付きます。
余談
Cmderを利用しているのですがreleaseブランチを終了させて、masterブランチにマージする際のコメント記入を何もしないで:wqとすると画面がバグります。
少し書き換えればバグらずに済むのですが、ちょっとめんどうなのでどうにかして直したいですね…参考
コマンドラインで Git Flow をインストールして使ってみる
git-flow を試す
git-flow cheatsheet
git-flow コマンド説明和訳さいごに
個人的に便利なツールだと思います。
この記事には載っていないコマンドもあり、理解するにはまだ勉強が足りないようです。
- 投稿日:2019-02-28T21:08:19+09:00
Githubによるプロジェクト進行・タスク管理(研究向け)
概要
一般的には、ソースコード管理・共同開発ツールとしてGithubは使われますが、
プロジェクト進行・タスク(チケット) 管理ツールとしても、Githubは非常に有効です。
Githubを使うことによって、研究のPDCAサイクルを行うことができます。この記事では、ソースコードの管理のためではなく、Issueを使いこなすツールとしてGithubを紹介します。昨今の研究スピードでは、タスク管理による取捨選択はMustなはずです。
メリットについて説明したのち、Githubの実際の使い方を示します。
メリット
- プロジェクトを遂行する仕事をIssueという単位のチケットで管理することによって、 タスクの小分け・具体化がされるので、
日々のタスクがわかる
。- Project機能によって、タスクの進捗を可視化できるので、個々の作業の進み具合を共有できるので
作業が重複しない
。- 開発のログ・思考プロセスが1つのツールに残せるので、
共有、引継ぎ
にかかる作業が少ない。Issueそのものについてはこちらの書籍が非常に参考になります。
使い方
初期設定
まずはリポジトリを作ります。リポジトリの作り方はその辺にドキュメントがあるでしょう。
研究のPDCAサイクル
PDCAサイクルの順で説明します。
Plan: 計画
1. Issueをつくる。
何はともあれ Issueを作ります。Issueは直訳すると課題, IssuesはTO-DOリストみたいなものです。
プロジェクトに今ある課題を全部Issueとして作りましょう。
- Issues タブからNew Issueを選択
- Title にはわかりやすい端的な名前。Descriptionには課題の内容、WhatとWhyを書きます。 他のレポジトリのIssueの書き方を参考にしたらいいと思います。
- Issue に強弱をつける。
IssueにLabelsをつけて、研究の必須度、タスクの種類に分けるのもいいですし、
Milestonesをつけて、Issueの期日を設定するのもよいです。2. プロジェクト機能を活用する
Issueを作ったら、次はどのIssueから取り組んでいくかを決めます。
- ProjectsタブからCreate new projectを選択。
- 適当なTitleをつける.
- テンプレートは個人作業ならAutomated Kanban, 複数人で開発するなら(コードレビューを行ったりする)なら Automated Kanban with reviews を選択すれば丸いです。
- 最初は何もないので、右のAdd cardsよりIssueをとってきてTo doに追加します。 (自動でカード追加するトリガーというものも設定できるみたいです.)
- 取り組むIssueが決まったら、そのIssueをIn progressに移動します。 これでPlanは完了しました。
Do: 開発する。
Issueに取り組みます。
Issueがプログロム開発に関係していて, Githubの本来の機能(ソースコード管理)を使う場合の具体的なコマンドは他を参考にしてください。ここでは概略だけ。
作業ブランチの名前に
IssueのID
をつける. ユニークなIDを使って, branchを作ります。git checkout -b #12_test
開発する。
これでDoは完了します。Check: 確認・レビューする。
Issueの内容に沿ったことができたか、振り返って確認します。
ここでもプログラムに関わるところは、概略のみ示します。
1. オリジンの作業ブランチにプッシュgit add .
git commit -m “add/implementation_hogehoge”
git push origin #12_test
// githubリモートの#12_test というブランチにpush.
- オリジンの作業ブランチをMasterブランチにマージ
- Create pull request pull requestの内容は実験ノートを書くのもいいですし、共同開発できるならちゃんとフォーマットにのって書いたほうがいいですね。何も書かないのもありですかね。
- レビューをお願いする
ReviewersにGithubのUserを設定して、レビューしてくれる人を設定します。レビュワーから認可してもらえないと、Merge Pull Requestが送れないはずです。
AssigneesはPull Requestの責任者?担当者ってイメージです。
b. Merge Pull Request
レビュワーの認可が終わったり、Masterブランチとのコンフリクトがなければ無事にMerge pull requestができるはずです。
これでCheckは終わりです。
Action: 再計画。
とりあえず ProjectのIssuesを In Progressから、Doneに移動させましょう。
また、Checkの内容を踏まえて、新しいIssueを作ったり、Issueの優先度を見直したりしてください。追記
- Slackを導入している研究室なら、SlackにGithubのアプリを導入することによって通知がSlackにいくようになります。ちょっとした議論等はその辺でやることが多いです。
- 投稿日:2019-02-28T20:56:08+09:00
Git,GitHub基礎
Git,GitHubの基礎を備忘録的にまとめてみました。
環境
virtualbox 5.2.26
vagrant 2.1.2
mac 10.14.2Gitとは
バージョン管理システム
システム開発での区切りを記録して管理出来るもの。
誰がどのような意図で、どのような変更をしたかなどが明確に分かる。
Gitを導入する事で以下のメリットが生まれる。・コードとコメントを分けられて、履歴が分かりやすく管理出来る。
・任意のバージョンを指定でき、即座にバージョンを切り替えられる。
・ローカルとリモートで管理する事で複数人での開発に役立つ。Gitを使った開発Flow
ローカルリポジトリ作成
# 任意のディレクトリで git initリモートリポジトリをclone or pull
cd [ローカルリポジトリ] git clone [リモートリポジトリのパス] or cd [ローカルリポジトリ] git pull [リモートリポジトリのパス]ローカルに開発用ブランチを追加して、チェックアウト
git checkout -b [開発用ブランチ名]開発してadd〜commit
# ファイルをインデックスに追加 git add [file_name or dir_name] # コミット git commit -m "comment"ローカルの開発用リポジトリをリモートの開発用リポジトリにプッシュ
# originという名前でリモートリポジトリを追加 git remote add origin [リモートリポジトリの開発用ブランチのパス] # 登録したリモートリポジトリにローカルリポジトリをプッシュ git push origin [開発用ブランチ名] # git push -u origin [開発用ブランチ名] で次からブランチ名省略可 # git remote rm origin で登録されているリモートリポジトリを削除プルリクエストを送る→マージorボツ
githubだとメニューからプルリクエスト選択して、リクエストを送る。
OKならマージし、新バージョン。リモートをローカルリポジトリのマスターにプル
git pull [リモートリポジトリのパス]基本コマンド
初期設定
ユーザー名、メールアドレス登録
git config --global user.name [ユーザー名] git config --global user.email [メールアドレス]エイリアス登録
コマンドからも出来るが.gitconfigを弄ったほうが楽。
.gitconfig[user] name = [name] email = [email] [alias] co = checkout br = branch st = status cm = commit sh = show cp = cherry-pick ad = add lo = log履歴関連
変更の履歴を表示
git status [オプション] #オプションにディレクトリ等を指定でそのディレクトリ内の変更表示コミットの履歴を表示
git log [オプション]# オプション --numstat # ファイル毎の追加削除行数を表示 --since="[日数] days ago" --until="[年/月/日]" # 日付指定 --graph # 見やすく表示 --merges # マージのみ --all # 全ブランチブランチ関連
ブランチ表示
git branchブランチ切り替え
git checkout [ブランチ名]ブランチ作成と共にチェックアウト
git checkout -b [ブランチ名]ブランチ削除
# HEADにマージしたブランチ削除 git branch --delete [ブランチ名] # マージしたかを問わずに削除 git branch -D [ブランチ名]タグ関連
タグ表示
# タグ一覧表示 git tag # 注釈も表示 git tag -nタグ追加
git tag [タグ名]注釈付きタグ追加
git tag -a [タグ名] -m "コメント" # 以前のコミットにタグを付ける。 git tag -a [タグ名] -m "コメント" [コミット]タグ削除
git tag -d [タグ名]タグをプッシュ
タグはブランチをプッシュした時に反映されないため、別でプッシュする。
tag push origin --tagsGitHubとSSH接続
SSH (Secure Shell) プロトコルを利用してターミナルから安全にGitHubに接続する。
SSHは秘密鍵・公開鍵を使用した鍵認証によって、
クライアントとリモートマシンの通信を暗号化し安全にコマンドを実行できる。まず、簡単なコマンドから2つの鍵を作る。
# sshのディレクトリに移動 cd ~/.ssh # 鍵を作成 ssh-keygen [オプション] ssh-keygen -t rsa -b 4096 -t rsa = 鍵の種類。他より強固。 -b 4096 = 鍵の長さ。rsaは4096bit鍵名とパスフレーズを入力し、鍵が作成される。
GitHubに公開鍵をアップする
https://github.com/settings/keys
からGitHub上に、公開鍵をアップする。configファイルに鍵情報を登録
sshディレクトリ内のコンフィグファイルに鍵情報を記載する。
※configファイルが無ければ作る。configHost github github.com HostName github.com User git IdentityFile ~/.ssh/[鍵の名前]これで、下記コマンドでGitHubとの接続を出来る。
ssh -T githubパスフレーズを入力し、
Hi [ユーザー名]! You've successfully authenticated, but GitHub does not provide shell access.と表示されればOK!
これで、ターミナルからGitHubにSSH接続出来る。
- 投稿日:2019-02-28T17:11:27+09:00
gitのリモートブランチをローカルに持ってくるコマンド〜毎回忘れるやつ〜
- 投稿日:2019-02-28T15:22:40+09:00
リポジトリのURLって?
Gitにpushしたリポジトリを他の人へ共有したい時。
リポジトリのURLを送って!と言われますね(^^)リポジトリのURLはどこで分かるのだろう??とGitをポチポチしていて
分かったのでメモです。まずは
Gitの自分のリポジトリ(your repositories)画面に移動します。
URLを知りたいリポジトリを選んでください。リポジトリをクリックすると、
「Clone or download」という緑のボタンが画面右の方に有るので
そのボタンをクリックしてください。
クリックするとなにかアドレスが出てきますが、今回はHTTPSの方のURLが欲しいので
Use HTTPSをクリックすると、
いつものhttpsから始まる見慣れたURLが出てきます(^o^)ホッ
URL右横のコピーボタンを押せばコピーできます。
その後、困ったことがありました汗
今回の操作により、gitにpushする時の使用が変わってしまっていたようで、push時にパスワード聞かれるようになってしまいました。
HTTPSに変更した方は、SSHに戻しましょう。(参考https://qiita.com/rorensu2236/items/df7d4c2cf621eeddd468)
- 投稿日:2019-02-28T14:14:23+09:00
Git 毎回パスワードを聞かれる問題について
はじめに
職場で使用していたPCが重くなってきて、新しいPCに買い替えました。
無事に移行は完了しましたが、Sourcetreeでプッシュやプルしている時に毎回パスワードを聞かれるようになっていました。前提
- SourcetreeでGitHubのログインはSSHで済んでいる。
SSHでSourceTreeにクローン済み
git@github.com:eyemovic/hoge.git
githubのsshのkey設定などは済んでいる
~/.ssh配下のpermissionなども正しい
問題
プッシュしようとすると、
gouda:hoge-branch gouda$ git push origin hoge-branch
公開鍵のパスワードを聞かれる(毎回)
Enter passphrase for key '/Users/gouda/.ssh/id_rsa
解決方法
SSHキーを追加してあげる
gouda:hoge-branch gouda$ ssh-add ~/.ssh/id_rsa
SSHキーのパスワードを聞かれるので入力してあげる
Enter passphrase for key '/Users/gouda/.ssh/id_rsa
プッシュしてみる
gouda:hoge-branch gouda$ git push origin hoge-branch
パスワードを聞かれずに、プッシュできました!
Everything up-to-date
おわりに
設定する時間がなく、とりあえず毎回パスワードを入力していたので、ようやく改善されてよかったです。
間違えているところなどあればコメントをお願いいたします。
- 投稿日:2019-02-28T13:01:44+09:00
heroku デプロイ関係のコマンド
login
$ heroku loginherokuの接続先URLを
確認
$ git remote -v登録
$ git remote add heroku https://git.heroku.com/*******.git変更
$ git remote heroku set-url https://git.heroku.com/*******.git (***はrepository名)heroku URLの確認
https://dashboard.heroku.com/apps
-> Personal/各repository/Settings/Info :Heroku Git URL
push
$ git push heroku mastermigration
$ heroku run rails db:migrateアプリ起動
$ heroku open
- 投稿日:2019-02-28T12:04:32+09:00
gitでファイルを消す方法~真っ先にgit rmを勧める奴は地獄の業火に焼かれろ~
TL;DR
git rmだと過去の履歴は消えません。git filter-branchを使いましょう。
https://qiita.com/go_astrayer/items/6e39d3ab16ae8094496cはじめに
例えばパスワードファイルなんかを間違ってcommit & pushしたときに、リポジトリから完全に消したいといった事があるかと思います。その時に「git ファイル 消す 方法」などでググると先頭の方に
git rm --cache
とか解説している記事が見つかります。しかし、コレだとダメです。どうダメなのか
gitの用語に詳しくないので解説が曖昧になります。
git rmだと、"ファイルを消した"という記録を追記します。なので最新のcommitからは見えなくなります。一方で過去の履歴には相変わらず残っています。githubならcommitというとこを見ていけば直ぐに見つかります。その為、上のURLにある通りの形で実行して行く必要があります。
間違ってコミットしないようにするには
.gitignoreというファイルに、ファイル名を書き込むことで回避できます。詳しくはgitignoreで検索してみてください。
余談
本件、"git ファイル 完全に消す 方法"とかで検索すれば先頭に上の記事が出てくるのですが、git rmを勧めるTechAc◯ademyとかいうとこの記事も出てくるんですよね。それに初心者だと検索方法もわからないでしょうし、"git ファイル 消す 方法"とかで検索して安易にgit rmだけ実行して後で大惨事になりそうです。
とりあえず"git rm"と書いてあるメディアは信用しないほうが良いと思います。
- 投稿日:2019-02-28T11:37:59+09:00
SourcetreeのGit Flowをつかった開発フロー
Git運用でGit Flowを採用することにしたので
SourcetreeのGit Flowをつかった開発フローを整理しました。実現したいこと
- Gitに慣れていないメンバーでも無理なく運用可能なこと
- Git, Git Flowの操作はSourcetreeですべて実行
- ただし、GitおよびGit Flowの概念は理解していることが前提
- Github上でコードレビューを実施
- featureからdevelopへのPull Requestをレビュー
- コードはレビューワーがマージ
SourcetreeにGit Flowが表示されていない場合
開発フロー
リポジトリの初期化
はじめてGit Flowボタンを押すとリポジトリの初期化画面が表示されます。
運用ルールに合わせてカスタマイズすることができます。
基本的にデフォルト設定のままで問題ありません。
機能開発開始
Git Flowボタンを押すと推奨するアクションが表示されます。
開発着手時は「新規フィーチャーを開始」をクリックします。
フィーチャー名を入力してOKを押すとdevelopからfeatureが作成されます。
この場合はfeature/sampleが作成されます。
レビュー
実装が完了したらfeatureをプッシュして、Github上でプルリクエストを作成します。
レビューが完了したらGithub上でマージします。
次のステップで自動的にブランチが削除されるので、ここではブランチを削除する必要はありません。機能開発終了
Git Flowボタンを押し、現在のブランチを終了ボタンをクリックします。
ブランチを削除を選択した状態でOKをクリックするとローカルとリモートのブランチが自動的に削除されます。
最後にdevelopでソースコードをpullします。
このときに「マージではなくリベースする」にチェックを入れます。
featureの変更内容はすべてdevelopに取り込まれているので、履歴はこのようになります。
リリース
Git Flowボタン押し、新規リリース開始をクリックします。
リリースバージョンを入力し、OKを押すとdevelopからreleaseが作成されます。
リリース作業が完了したらGit Flowボタンを押し、現在のブランチを終了をクリックします。
タグのメッセージを入力とブランチのプレビューの確認します。
問題ないことを確認してOKを押すとrelease は master, develop の両方にマージされます。
featureのときと同様にGithub上でマージとすることも可能です。
まとめ
- Sourcetreeを使用することで、git, git-flowのコマンドを知らなくてもGit Flowで開発をおこなうことができます。
- Github上でのコードレビューも問題なくおこなうことができます。
- ローカル/リモートのブランチの削除、タグの追加がgit-flowでされるので、オペレーションミスが少なくなります。
参考記事
- 投稿日:2019-02-28T10:24:04+09:00
GIT インストール
git コマンドのインストール
wget https://github.com/git/git/archive/v2.21.0.zip yum install gcc openssl-devel curl-devel expat-devel make make install