インストールするソフトウェア
- Visual Studio Code
- Hub
- https://www.sourcetreeapp.com/
ここでは書かないが環境の前提
Termina: https://www.iterm2.com/ からインストール可能
zsh: Mac OS X default (since catalina) だが、 brew install zsh
して最新版をインストールし、それを使う事を推奨。
Visual Studio Code
https://code.visualstudio.com/ からダウンロードしてインストール出来る。
起動語に、 [Command] + [Shift] + P から Install 'code' command in PATH
を選択して、code
というコマンドで起動するようにしておく。
shell で code --version
と入力すると正しくインストールが終わったことを確認できる
% code --version
1.45.1
5763d909d5f12fe19f215cbfdd29a91c0fa9208a
x64
Source Tree
https://www.sourcetreeapp.com/ ここからダウンロードしてインストールする。
※ AppStore からダウンロードしたものは、shell コマンドがインストール出来ないのでアンインストールして↑から再インストールしないといけない。
無料のユーザー登録が必要なので、しておく(今無くなった?)
左上から、[コマンドラインツールをインストール] でコマンドラインツールのインストールを完了させる
% stree --version
stree version 1.3
git / git-lfs
- git / git-lfs は brew 経由で入れれば良い
brew install git git-lfs
確認は次の hub
と同時に
hub
- hub コマンドも必要(便利)なので入れておきます。 - A command-line tool that makes git easier to use with GitHub. https://hub.github.com/
% brew install hub
hub コマンドは aliasing しておく必要があるため、以下を ~/.zshrc に記入します。
eval "$(hub alias -s)"
.zshrc を書き換えた後は、シェルの再読み込みが必要。
git / git-lfs とあわせて、以下の表示になるはずです。
% git --version
git version 2.26.2
hub version 2.14.1
% git-lfs --version
git-lfs/2.11.0 (GitHub; darwin amd64; go 1.14.2)
memo; GitHub CLI について
GitHubは米国時間2月12日、リポジトリーの管理をターミナル上のコマンドラインインターフェース(CLI)から行いたいと考えている開発者らに向け、公式のCLIツールを公開した。
https://japan.zdnet.com/article/35149382/
と鳴り物入りで作成された GitHub CLI ではあるが、2020-05 時点ではまだ GitHub Enterprise と連携できないなど、不十分な点が多い。
スグに patch されそうな気もするが、beta 期間中は対応予定が無いらしい。
While in beta, GitHub CLI is available for repos hosted on GitHub.com only. It does not currently support repositories hosted on GitHub Enterprise Server or other hosting providers. We are planning support for GitHub Enterprise Server after GitHub CLI is out of beta (likely toward the end of 2020)
https://github.com/cli/cli/tree/v0.8.0#availability
ghq
複数のリポジトリで作業する時、リポジトリを管理するためのコマンドです https://github.com/x-motemen/ghq
また、hub コマンドと組み合わせて使うため peco コマンドもインストールします
brew install ghq peco
でインストール可能です。
https://github.com/Songmu/ghq-handbook/blob/master/ja/05-ghq-list.md を参考に、 ~/.zshrc に以下の項目を記入しておきます。
移動時に使います。
peco-src () {
local repo=$(ghq list | peco --query "$LBUFFER")
if [ -n "$repo" ]; then
repo=$(ghq list --full-path --exact $repo)
BUFFER="cd ${repo}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-src
bindkey '^]' peco-src
基本的な設定
以下では、ソースコードは ~/dev/src/
に checkout するものとします。(オススメ)
まず、以下の設定は必ずやっておきます。
git config --global user.name "FIRST_NAME LAST_NAME"
git config --global user.email "MY_NAME@example.com"
user.email は、会社で使う PC の場合、会社から貸与された email address にします。
(いずれにせよ、リポジトリ・サーバー単位で変更可能です)
氏名のフォーマットは、解らなければ周りの commit ログを確認しましょう。
code を editor として利用する
以下の設定で VS Code が editor として利用できます。
$ git config --global core.editor "code --wait"
ghq
ルートディレクトリを指定します
$ git config --global ghq.root "~/dev/src/"
ここまでのテスト
ここまでの設定が旨く行けば、 github.com のリポジトリが簡単にクローンできるようになっていると思います。
試しに、 https://github.com/line/line-bot-sdk-java をクローンします
git clone
は使う必要はありません
リポジトリをクローンしたい場合、単純に URL を copy して
任意のディレクトリで
ghq get (URL を貼り付け)
コマンドを実行すれば、自動的に ~/dev/src/github.com/line/line-bot-sdk-java/
にコードがコピーされます。
このときのパスは深いのですが、 [Ctrl] + ]
で移動できますので、特に気にする必要はありません。
QUERY> sdk-java
/Users/kazuki-ma/dev/src/github.com/line/line-bot-sdk-java
GitHub enterprise に応じた設定
http://git.example.com で自社の GitHub enterprise が展開されているとします。
hub
hub コマンドに対して、サーバー git.example.com
が GitHub Enterprise server だと通知する必要がある(複数設定可能)
git config --global hub.host git.example.com
設定を変更する
git.example.com
会社用 GitHub Enterprise と github.com
のリポジトリそれぞれに対して操作する機会がある場合、サーバー名またはリポジトリ名毎のファイルを作って、条件つき include をすると良い。
以下の用に会社 mail address を global に設定している場合でも
git config --global user.email "MY_NAME@example.com"
~/.gitconfig_github.com
を作成し、
[user]
email = matsuda.kazuki@gmail.com
~/.gitconfig
に条件付き include 設定を書いておけば良い
[includeIf "gitdir:~/dev/src/github.com/"]
path = ~/.gitconfig_github.com
minor, やる必要が無いことがほとんど) この方法は、Organization / Repository 単位でも有効なので、 github.com でも更に自分の organization xxx 向けの設定が必要であれば
[includeIf "gitdir:~/dev/src/github.com/xxx/"]
path = ~/.gitconfig_github.com_xxx
としておき、 ~/.gitconfig_github.com_xxx
に自分の organization 向けの設定を書けば良い。
日常操作
リポジトリのデータを更新したいときは
ともかく PR するときは、fork することを基本だと思うのが良い。
ただし、fork してはいけない文化の所もある?(要出典)なので最終的にはリポジトリ毎のルールに従う必要がある
& 業務で GitHub の private repository を利用している場合、基本的に fork ができない。
fork したリポジトリで作業する方法
git の remote は複数登録できる、git において、リモートネーム origin は特別な意味を持つので、 origin
は fork した自分の repository を指定しておくのがよい。
ghq で checkout した場合は多少手間なのだが、fork してから checkout するか、checkout したものに対して origin を fork 先に切り替えるのかで諸説ある。。
他の人の PR を review する方法
fork すると他の人の PR が review しにくくなる、という意見があります。
- 公式の Checking out pull requests locally を確認する(めんどくさいのでオススメしない
- IntelliJ 系の IDE を使っているなら公式に従って設定をして、Manage incoming pull requests で PR 一覧を取得・Checkout できます
- VS code を使っているなら https://code.visualstudio.com/docs/editor/github
ディレクトリ移動
基本的に [Ctrl] + ]
で移動が完了するはず。
普段の更新
普段の更新であれば、今の working tree (ディレクトリの中身) をそのまま commit したいはずなので、以下のコマンドを実行すればよい
git add -A && git commit
Visual Studio Code が起動して、メッセージ編集ができる。保存して閉じれば commit 完了
fixup
些末な修正でいちいち新規 commit を作る必要は無いので merge されるまでの修正は commit 追加ではなく、 commit を修正 (amend = 修正する、(欠点などを取り除いて)改める) する場合は、専用のコマンドがある。
staging していない場合は git add -u
(or git add -A
) した後
git commit --amend --no-edit
すればよい
-
--amend
= 直前の commit を修正する -
--no-edit
= commit log は修正しない
--no-edit
を含めないと、amend したあとの commit ログを書き換える事ができる
git
には alias の機能があるので、 git config --global alias.fixup 'commit --amend --no-edit'
として、 git fixup
で commit --amend --no-edit
が呼び出せるようにしておいても良いだろう。
特定のファイルのみ commit
git add そのファイルのpath
で staging した後に commit すればよい。
(この機能を使わなければならない場合、何かおかしいことをしている可能性もある
特定の patch のみ commit
git add -p
でpatch を見つけても良いし、一般的には Sourcetree を使うのがよいだろう。
『ステージングを分割して表示』オプションを有効にするのがオススメ。
stree
コマンドを実行すると、Sourcetree が起動するので、 commit したいものを staging (下の画面から check を付けて上に移す)をすれば良い。