ぼくのかんがえた、さいきょうじっとかつようほう
今関わっているプロジェクトでは、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
最後に、fetch
と merge
コマンドでマージします。
もし、ローカルに変更を加えていてマージできない場合は、ここで手動でのマージが必要になります
$ 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 すれば良いです。
今はこんな感じです。