markdown 学习Git分支笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown 学习Git分支笔记相关的知识,希望对你有一定的参考价值。
# Learn Git Branching
- https://learngitbranching.js.org/
- 総覧のよいまとめ
- [私が使うGitコマンドまとめ のまとめ \- what is it, naokirin?](http://naokirin.hatenablog.com/entry/20111209/1322577154)
- [Gitの基礎知識 コマンド以外に知っておくべきこと \- what is it, naokirin?](http://naokirin.hatenablog.com/entry/20111207/1322576272)
- [私の使うGitコマンドまとめ 見る編 \- what is it, naokirin?](http://naokirin.hatenablog.com/entry/20111202/1322576420)
- [私の使うGitコマンドまとめ 歴史操作編 \- what is it, naokirin?](http://naokirin.hatenablog.com/entry/20111204/1322576320)
- `git add` についての良いまとめ
- [Gitコマンドについて調べる【git add】 \- blog @kimromi](http://kimromi.hatenablog.jp/entry/2015/08/04/082357)
- `git reset` についての良いまとめ
- [git reset についてもまとめてみる \- murankの日記](http://d.hatena.ne.jp/murank/20110327/1301224770)
- `git show HEAD~` で「現在のブランチの先頭の一つ前のコミット内容が見られる」
- `cherry-pick` は複数の引数をとることができる
- `git cherry-pick A; git cherry-pick B; git cherry-pick C` は `git cherry-pick A B C` と書くことができる
- `HEAD` を動かす方法は `checkout`
- ポインタを動かす方法は `git branch -f BRANCH_NAME COMMIT_HASH`
- `rebase` は `merge` に似た概念
- `merge` はブランチを明確に残す
- 引数にとる値は「併合されるブランチやコミット名」(自分は併合する側である)
- `rebase` はブランチを残さない((消すわけではなく不可視になる))
- `git rebase` には引数の取り方(省略の仕方)がいくつかある
- `git rebase ブランチ名` の場合
- これは `git rebase 併合先のブランチ名 (併合元のブランチ名)`
- 併合先のブランチに自分のブランチを併合する(併合元が省略されると今いる自分のブランチ名が併合元になる)
- `git rebase 相手先のブランチ名 併合元のブランチ名`
- 前項の場合で「併合元のブランチ名」が省略されていなければ、文字通りの併合が行われる
- `git rebase` した後は「併合したブランチの先頭に、併合元ブランチの `HEAD` が来る」
- `checkout` と `branch -f`
- `HEAD` の移動は `checkout`
- 相対リファレンス
- `HEAD^2`
- `^` の場合で後ろに数字が付く場合は「マージコミットからどの親を選択するかを指定」する
- `^` の後ろの数字は「親の生成順」になり、例えば `HEAD^1` の場合は最初の親になる
- `HEAD~3`
- `~` の後ろの数字が省略された場合は `~1` と同義
- `^` と `~` は連結が可能
- 例: `HEAD~^3~2`
- ブランチの先頭の移動は `branch -f master commit_hash` が一つの方法
- `git branch -f master HEAD~3`
- `branch` コマンドであることに注意する
- ブランチの先頭の移動は `git rebase 移動先のブランチ名` が一つの方法
- `git rebase development`
- ただしこれだと、先頭のコミットにしか移動できない
- コマンドとしては `rebase` なので、意図しない結果を招くことがある((と思う))
- `reset` と `revert`
- 引数はどちらも `HEAD` や `HEAD^` や `HEAD~3`
- `reset` の引数は、「戻る場所(コミット)が `HEAD` からどこにあるか」を指す
- `revert` の引数は、「どのコミットを打ち消すかを `HEAD` からの相対位置で」指す((おそらくコミットハッシュを示しても指定可能だと思う))
- 現在 `development` ブランチにいて `git rebase master` を実行した場合
- `master` ブランチの先頭に `development` ブランチがくっつく
- `development` ブランチが先行する
- このとき `master` ブランチは `development` ブランチより遅れている
- `master` ブランチを追いつかせるためには、カレントのブランチを `master` にしてから以下のコマンドを実行する
- `git rebase development`
- これがベストプラクティスなのかは分からない
- リモートのことは考えてはいけないのでこれでいいとは思う
- `amend`
- `amend` は `git commit` のオプションであり、`git commit --amend` のように用いる
- 実行した結果、直前のコミットの内容を上書き(修正)する
- `revert` のように新しいコミットが生産されるということはない
- 「直前のコミットに、現在の変更内容を併合させる」
- 単に `git commit --amend` と実行するとエディタが開いてコミットメッセージを含め、直前のコミット内容を変更する
- `--no-edit` オプションをつけることでエディタが開かなくなり、コミットメッセージはそのままで、変更内容が併合される
- `tag`
- `git tag タグ名称 コミット名`
- コミット名が省略されたときは `HEAD` が対象になる
- タグ名称 を使って `checkout` することができる
- `describe`
- `tag` の親戚
- `git describe ブランチ名` として実行する
- 「そのブランチ名の先頭から見て、タグがついている直近のコミットが基準となり、以下の書式で返り値が得られる」
- `<タグ>_<コミット数>_g<ハッシュ>`
- 例: `ver1_3_gfoobar`
- 上記の例は、指定したブランチにおいて、そのブランチの先頭から見た直近のタグ付きコミットのタグが `ver1` という名称で、そのコミットから見て先頭のコミットは 3コミット 進んでいて、先頭のコミットのハッシュは `foobar` であるということ
- `git bisect` というコマンドもあるらしい((初めて聞いた))
- `git branch` コマンドでブランチを作成する際に、第二引数の値でそのブランチのポインタを指定できる
- 例: `git branch bugWork master^^2^`
- `bugWork` というブランチを作る
- `bugWork` ブランチのポインタは、「`master` ブランチの `HEAD` の1つ前のコミット→2つ目の親コミット→1つ前のコミット」になる
- cf. `-f` オプションは?
- 既存のブランチのポインタを移動するためのオプション
- `git fetch` はすべてのブランチを `fetch` する
- 手元に持ってきているが、反映されていない状態
- `git pull`
- `git pull` は `git fetch` + `git merge` のこと
- `git pull --rebase` は `git fetch` + `git rebase` のこと
#### 追跡ブランチ
```
git checkout -b totallyNotMaster o/master
これはtotallyNotMasterという名前のブランチを新しく作り、o/masterへの追跡プロパティを設定します。
- 二番目の方法
ブランチのリモートトラッキングを設定するもう一つの方法は、単にgit branch -uオプションを使うというものです。例えば以下のようにです
git branch -u o/master foo
これは、fooブランチをo/masterを追跡するように設定します。もし、fooが現在チェックアウトしているブランチだった場合、以下のように省略することができます:
git branch -u o/master
```
- `reset` の `HARD` と `SOFT` と `mixed`
- `blame`
- `grep`
#### コントリビューション
https://github.com/pcottle/learnGitBranching
- `src/levels/*/*.js`
以上是关于markdown 学习Git分支笔记的主要内容,如果未能解决你的问题,请参考以下文章