明日にはでっかい太陽が昇るかもしれません。

「覚悟」とは!! 暗闇の荒野に!!進むべき道を切り開く事だッ!

ぼくのかんがえた、さいきょうじっとかつようほう

今関わっているプロジェクトでは、GitHub 上にソースを置いて開発を行っています。

使い勝手の関係から Linux 上で、Git コマンドを利用しているので、備忘録も兼ねてまとめたいと思います。

いろいろ調べて入るけど、ベストプラクティスには程遠いなぁ。。。

GitHub からソースを取得する

デフォルトブランチを選択した状態でのコード取得を行う場合。

$ git clone https://user@github.com/repository [dirname]
置換候補 意味
user GitHubのユーザ名
repository リポジトリパス
dirname ローカルに作成するディレクトリ名。(省略した場合は、repositoryと同じ名前で作成されます。)

ローカルのブランチを作成する

GitHub-Flow などを運用していて、ブランチを作成する場合。 * 作成するだけで、切り替えません。*

$ git branch name
置換候補 意味
name 対象ブランチ名

ローカルのブランチを切り替える

GitHub-Flow などを運用していて、ブランチを切り替える場合。

$ git checkout name
置換候補 意味
name 対象ブランチ名

GitHub からブランチ名を指定してソースを取得する

「clone してからブランチを切り替えるなんてまどろっこしい!おれはこのブランチがほしいんだ!!」というあなたに。

$ git clone -b name https://user@github.com/repository [dirname]
置換候補 意味
name 対象ブランチ名
user GitHubのユーザ名
repository リポジトリパス
dirname ローカルに作成するディレクトリ名。(省略した場合は、repositoryと同じ名前で作成されます。)

GitHub 上で Fork したリポジトリを Fork 元に追従させたい

複数人での開発では、マスターリポジトリに対して各人が Fork しての開発になるため、他の人の修正をマスターから取り込む必要があります。

その場合は、まず自分のリポジトリからローカルに clone して、

$ git clone https://user@github.com/repository
置換候補 意味
user GitHubのユーザ名
repository リポジトリパス

remote コマンドを利用し、リモートリポジトリとしてマスターリポジトリupstream という名前で設定して、

$ git remote add upstream https://github.com/repository
置換候補 意味
repository リポジトリパス

この時点でリポジトリを確認すると、 remote/upstream/* が加わっています。

$ git remote
origin
upstream
$ git branch -r
  origin/master
  upstream/master

最後に、fetchmerge コマンドでマージします。 もし、ローカルに変更を加えていてマージできない場合は、ここで手動でのマージが必要になります

$ git fetch upstream
$ git merge upstream/name
置換候補 意味
name 対象ブランチ名

ローカルの変更を取り消す

ログを追加して、不要になったから消したい場合、手動では時間もかかるし間違う可能性があるため、変更を取り消しましょう。

$ git checkout path
置換候補 意味
path 対象ファイルパス(相対パスも可)

すべての変更を取り消したい場合は、

$ git checkout .

とするのもありです。

コンソール上で日本語ファイル名を正常に扱う場合

標準では、日本語を含むファイル名はエスケープされて正常に表示されないため、コミットなどができないです。

そのため、エスケープしないように設定を変更する必要があります。

git config --global core.quotepath false

ローカルの commit を取り消す

「なんであんな変更を commit してしまったんだ。。時間を戻したい。」そんなあなたに。

$ git reset --soft HEAD^

リモートの push を取り消す

「恥ずかしい変更を間違ってリモートに push してしまった!消えてなくなりたい。。」そんなあなたに。

ローカルの commit を取り消した後に、

$ git push -f origin HEAD^:master

GitHub 上で新たなブランチを作成して、ローカルで変更を加える

GitHub 上では、ブランチの切り替えプルダウンで新しい名称を入力すれば、新規のブランチが作成できます。

作成したブランチをローカルに反映するためには、

$ git fetch

で、ブランチの最新情報を remote/origin から取得し、

$ git checkout -b name origin/name
置換候補 意味
name 対象ブランチ名

で、リモートブランチをチェックアウトします。

この時点でブランチを確認すると、

$ git branch
* name
  master

のように、masterから切り替わっているはずです。

この状態で、通常通り変更を加えて commit -> push -> Pull Request すれば良いです。

今はこんな感じです。