git関連のメモ
ローカルでごちゃごちゃ弄ったファイルを戻す
$ git checkout <filename>
git addの取り消し
全てのファイル
git reset HEAD
特定のファイル
git reset HEAD filename
変更履歴を見る
$ git log -p
で全体の変更履歴
$ git log -p filename
でfilenameの変更履歴を表示する
ブランチ間の変更ファイル一覧を取得
$ git diff --name-only -b parent_branch -b child_branch
//履歴を見る場合
$ git diff --name-only
参考:gitの指定ブランチで変更されたファイルの一覧を取得したい - QA@IT
特定commitのファイル一覧
$ git show commit_id --name-only
GitHubで色々やる手順
参考:
- Github で Fork してから Pull Request をするまでの流れ | けーこ in サンフランシスコ
- GitHubでFork/cloneしたリポジトリを本家リポジトリに追従する - Qiita
- 明日に向かって昇龍拳: GitHubでプルリクエストがマージされた後にすること
1.準備
まずは開発に関わりたいプロジェクトのリポジトリをFork
次にローカルにクローン
$ git clone https://github.com/path/to/repository.git
$ cd repository
2.開発〜Pull Request
Pull Request用にブランチを切る
$ git checkout -b issue
コード変更後、コミット
$ git add -A
$ git commit -m "commit message"
$ git push origin issue
まだrebeseは良く分かってない。で、GitHub上でPull Requestを作成する。
3.Pull Requestが反映された後
Pull Requestに使ったブランチを削除
$ git checkout master
$ git branch -D issue
$ git push origin :issue
GitHubでForkしたリポジトリを本家に合わせる
$ git remote add honke https://github.com/honke/path/to/repository.git
リポジトリの追加は1回で良い。後は合わせたいタイミングで下のコマンドを繰り返す
$ git fetch honke
$ git merge honke/master
$ git push origin master
以下2〜3を繰り返す
別の場所に開発中のブランチをダウンロードしたい場合
参考: GlassyLamp: git でブランチを指定してダウンロードする方法
issueブランチをダウンロードしたい場合
$ git clone https://github.com/path/to/repository.git
$ git checkout -b issue-local remotes/origin/issue
masterブランチの変更を別ブランチに反映する
$ git checkout hoge
$ git merge master
mergeでコンフリクトしたファイルの一覧
$ git ls-files -u
branch名を変更する
$ git branch -m <oldname> <newname>
参考:git - How do you rename the local branch? - Stack Overflow
日本語ファイルの出力
$ git config --global core.quotepath false
と先にやっておくと日本語ファイル名もちゃんと表示される
参考:git/日本語ファイル名をgit statusなどで表示する方法 - TOBY SOFT wiki
過去リビジョンや他ブランチのファイル内容を見る
過去リビジョン
$ git show <SHA1 object name>:<path>
他ブランチ
$ git show <branch name>:<path>
参考 :gitで過去のリビジョンとか別のbranchのファイルを見る - Webtech Walker
.gitignoreを便利に作ってくれるツール
giboというツールを使うと良い
$ gibo list
でテンプレート一覧みたいなものを出して
$ gibo dump macOS >> .gitignore
で例えばmacでコミットしたくない.DStoreみたいなものをgitignoreで除外してくれるようになる。
.gitignoreを元にgit addしてしまったコミットしたくないファイルをリポジトリから除外する
git addしてしまったファイルをリポジトリから除外するには
$ git rm --cached hoge
とする。.gitignoreの設定を元にまとめて除外する場合は
$ git rm --cached `git ls-files --full-name -i --exclude-from=.gitignore`
とすると良い
全部取り消す時は
$ git reset HEAD
クローン元のURLを調べる
git remote -v
でおk
originがクローン元で、upstreamはForkしてる場合の元のリポジトリになる
git diffで改行コードや空白を無視する
$ git diff -w
でおk
ForkしたリポジトリがYour branch is behind of 'origin/master' by x commits.とか言われた時
Forkをクローン
$ git clone https://....git
Fork元のリポジトリをupstreamに追加
cd /path/to/fork
git remote add upstream https://...git
git fetch upstream
fetchは要らないかも?試してない。
反映
$ git pull upstream master #ローカル
$ git push origin master #リモート
MacでHigh Sierraにアップデートするとgitが使えなくなったことへの対処
参考:Mac OS Sierraにしたらgitコマンド、ターミナル上にエラーが出てしまった。
と同じ処理でおk
$ xcode-select --install