Date Modified Tags git / memo

git関連のメモ

ローカルでごちゃごちゃ弄ったファイルを戻す

$ git checkout <filename>

参考:git ローカルの変更を元に戻す方法

git addの取り消し

全てのファイル

git reset HEAD

特定のファイル

git reset HEAD filename

参考:git add を取り消す

変更履歴を見る

$ 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

参考:gitで特定commitのファイル一覧を見る方法

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というツールを使うと良い

.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`

とすると良い

参考:あとからまとめて.gitignoreする方法

全部取り消す時は

$ git reset HEAD

クローン元のURLを調べる

git remote -v

でおk

originがクローン元で、upstreamはForkしてる場合の元のリポジトリになる

参考:gitリポジトリのoriginのURLを確認する

git diffで改行コードや空白を無視する

$ git diff -w

でおk

参考:忘れやすい人のための git diff チートシート

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 #リモート

参考:Keeping a fork up to date

MacでHigh Sierraにアップデートするとgitが使えなくなったことへの対処

参考:Mac OS Sierraにしたらgitコマンド、ターミナル上にエラーが出てしまった。

と同じ処理でおk

$ xcode-select --install