1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Git & GitHub (Enterprise) セットアップガイド on Mac OS X

Posted at

インストールするソフトウェア

ここでは書かないが環境の前提

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 というコマンドで起動するようにしておく。

image.png

shell で code --version と入力すると正しくインストールが終わったことを確認できる

% code --version
1.45.1
5763d909d5f12fe19f215cbfdd29a91c0fa9208a
x64

Source Tree

https://www.sourcetreeapp.com/ ここからダウンロードしてインストールする。

※ AppStore からダウンロードしたものは、shell コマンドがインストール出来ないのでアンインストールして↑から再インストールしないといけない。

無料のユーザー登録が必要なので、しておく(今無くなった?)

左上から、[コマンドラインツールをインストール] でコマンドラインツールのインストールを完了させる

image.png

% stree --version
stree version 1.3

git / git-lfs

  • git / git-lfs は brew 経由で入れれば良い brew install git git-lfs

確認は次の hub と同時に

hub

% brew install hub

hub コマンドは aliasing しておく必要があるため、以下を ~/.zshrc に記入します。

~/.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 に以下の項目を記入しておきます。
移動時に使います。

~/.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 して

image.png

任意のディレクトリで

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 を作成し、

~/.gitconfig_github.com
[user]
email = matsuda.kazuki@gmail.com

~/.gitconfig に条件付き include 設定を書いておけば良い

~/.gitconfig
[includeIf "gitdir:~/dev/src/github.com/"]
    path = ~/.gitconfig_github.com

minor, やる必要が無いことがほとんど) この方法は、Organization / Repository 単位でも有効なので、 github.com でも更に自分の organization xxx 向けの設定が必要であれば

~/.gitconfig
[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 しにくくなる、という意見があります。

ディレクトリ移動

基本的に [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 fixupcommit --amend --no-edit が呼び出せるようにしておいても良いだろう。

特定のファイルのみ commit

git add そのファイルのpath で staging した後に commit すればよい。
(この機能を使わなければならない場合、何かおかしいことをしている可能性もある

特定の patch のみ commit

git add -p でpatch を見つけても良いし、一般的には Sourcetree を使うのがよいだろう。

『ステージングを分割して表示』オプションを有効にするのがオススメ。

image.png

stree コマンドを実行すると、Sourcetree が起動するので、 commit したいものを staging (下の画面から check を付けて上に移す)をすれば良い。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?