「Gitコマンド備忘録」の版間の差分

提供: Eospedia
移動: 案内検索
(Kttn がページ「Gitコマンド」を「Gitコマンド備忘録」に移動しました)
(マージ系)
行19: 行19:
 
** 例えばmasterブランチからdevelブランチを作り、develブランチでコーディングし、それをmasterブランチにマージする時、fast-forwardだとmasterブランチのHEADがdevelブランチの先頭に飛んでくる形になる。
 
** 例えばmasterブランチからdevelブランチを作り、develブランチでコーディングし、それをmasterブランチにマージする時、fast-forwardだとmasterブランチのHEADがdevelブランチの先頭に飛んでくる形になる。
 
** 個人的にはffすると分岐や合流のタイミングがわかりにくいので、ff禁止の方が好き。
 
** 個人的にはffすると分岐や合流のタイミングがわかりにくいので、ff禁止の方が好き。
 +
 +
 +
=== <u>マージ元ブランチのコミット履歴なしでマージする</u> ===
 +
例えばdevelブランチでごちゃごちゃとコミットを続け、それを公開用のmasterブランチにマージしたい時、develブランチでの履歴は持ち込みたくない。
 +
 +
そんなときは、以下。
 +
<pre>
 +
$ git -c merge.ff=true merge --squash devel
 +
</pre>
 +
develでの数々のコミットがまとめて1個のコミットであるかの様にマージされ、develの履歴は残らない。
 +
 +
fast-forwardを禁止しているとsquashマージできないので、上記の様に -c merge.ff=true として一時的にコンフィグを上書きする必要あり。
  
 
== リモート系 ==
 
== リモート系 ==

2019年5月18日 (土) 08:24時点における版

  • (自分が)よく使うGitコマンドを備忘録的に書きつけていきます。
  • たまにVSCode(Visual Studio Code)の拡張機能GitLensにおける当該機能についてもメモります。

やり直し系

コミットされたものをステージング状態に戻す

コマンド

$ git reset --soft <commit>

現在のコミット状態を過去の<commit>の時点まで戻す。その間コミットされたものはステージング状態になる。

GitLens

  • "Reset to commit"に相当する。
    • GitLensで特定のコミットを右クリックし、Reset to commitすればそのコミットまでreset --softされる。

マージ系

fast-forwardマージを禁止する

$ git config --global merge.ff false
  • fast-foward(ff) マージ
    • 例えばmasterブランチからdevelブランチを作り、develブランチでコーディングし、それをmasterブランチにマージする時、fast-forwardだとmasterブランチのHEADがdevelブランチの先頭に飛んでくる形になる。
    • 個人的にはffすると分岐や合流のタイミングがわかりにくいので、ff禁止の方が好き。


マージ元ブランチのコミット履歴なしでマージする

例えばdevelブランチでごちゃごちゃとコミットを続け、それを公開用のmasterブランチにマージしたい時、develブランチでの履歴は持ち込みたくない。

そんなときは、以下。

$ git -c merge.ff=true merge --squash devel

develでの数々のコミットがまとめて1個のコミットであるかの様にマージされ、develの履歴は残らない。

fast-forwardを禁止しているとsquashマージできないので、上記の様に -c merge.ff=true として一時的にコンフィグを上書きする必要あり。

リモート系

GitHubでフォークしたリポジトリの初期設定

relion本家からフォークしたリポジトリを例にとって説明する。

まずは自分のリポジトリをクローンしてくる。

$ git clone https://github.com/kttn8769/relion
$ cd relion
$ git remote -v
origin  https://github.com/kttn8769/relion (fetch)
origin  https://github.com/kttn8769/relion (push)

現状は自分のGitHubリポジトリがリモート"origin"として設定されているのみ。

本家3dem/relionをリモートとして追加するには、

$ git remote add upstream https://github.com/3dem/relion.git

とする。

$ git remote -v
origin  https://github.com/kttn8769/relion (fetch)
origin  https://github.com/kttn8769/relion (push)
upstream        https://github.com/3dem/relion.git (fetch)
upstream        https://github.com/3dem/relion.git (push)

リモート"upstream"が追加されている。

GitHubでフォークしたリポジトリを最新にする

リモート"upstream"の情報を取ってくる。

$ git fetch upstream

自分のローカルリポジトリのmasterブランチに移動。

$ git checkout master

upstream/masterを自分のローカルリポジトリのmasterへマージする。

$ git merge upstream/master

自分のGitHubのリポジトリに反映するにはoriginへpushする。

$ git push origin master

(間違ってgit push upstream masterとかしたらどうなんだ。。)

外部ツール系

エディタをvimにする

Ubuntuだとnanoというエディタがデフォルトで設定されているので、vimに変更する。

$ git config --global core.editor "vim"


エイリアス

ワンライン・ログ

alias.lol=log --graph --oneline --all --decorate --simplify-by-decoration

出力はこれに色がついた感じ

$ git lol
* c3b3364 (HEAD, tag: 3.0.5, origin/master, origin/HEAD, master) This is 3.0.5.
* e9afc9a (tag: 3.0.4) Multibody: fix crash during initialisation (reported by Rafael Fernández Leiro). Call this 3.0.4.
* edb78c0 (tag: 3.0.3) ml_optimiser: fixed integer overflow at very fine angular sampling. Call this 3.0.3.
* f873543 (tag: 3.0.2) relion_refine_mpi: Fix buffer overflow during initialisation (solves issue #449; thanks to @Fravadona for finding this and suggesting the fix)
* 98171da (tag: 3.0.1) Call this 3.0.1 because we changed (fixed) relion_refine.
* 600499f (tag: 3.0) Merge branch 'beta-repo-3.0' into 3.0
*   decd571 Merge branch 'beta-repo-3.0' into 3.0
|\  
| *   ffb7197 Merge branch 'sjors-dev' into sjorsmerge
| |\  
| | * 12a2cd6 sjors dev-code @a7f194b (src)
| * 445e1c8 Initial commit with contributors
* ce6420a (tag: 2.1, origin/ver2.1) Use "Slower, more exhaustive search" in CTFFIND 4.1 unless --fast_search is ON. "Slower search" was OFF by default in CTFFIND 4.1.5, but turned out to be less accurate (ref: http://grigoriefflab.janelia.org/ctffind4).
* e7607a8 (tag: 2.1.b1) v.2.1-beta-1 (2.1.b1)