LoginSignup
0
0

More than 3 years have passed since last update.

gitでたまに使うコマンド

Last updated at Posted at 2020-03-05

概要

git関連でたまに使うコマンドリンクをまとめて見られるようにメモ

ブランチ一括削除

//while
git branch | grep <文字列> |  while read branch ; do git branch -d ${branch} ; done ;  
//xarges
git branch | grep <文字列> | xargs git branch -d

特定コミット抽出して反映(cherry-pick)

https://qiita.com/ta__ho/items/8204a22a53b02ee0817e
https://img.atwikiimg.com/www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/git-cherry-pick.html

//-nを付けるとstageの状態で止まる
git cherry-pick -n <コミットID>
//マージコミットを抽出したい場合
git cherry-pick -n -m 1 <コミットID>

別リモートリポジトリを同じremote内に追加

・別リモートリポジトリを追加した時点でcherry-pickで別リポジトリから抽出は可能
・チェックアウトした別リモートリポジトリのブランチをマージすることも可能

//同じ場所にリモートリポジトリを追加。ローカル名は何でもいい。origin_testとか。
git remote add <ローカル名> <url>
git fetch <ローカル名>

//追加したリモートリポジトリからブランチチェックアウト   
git checkout -b <任意のブランチ名> <ローカル名>/<抽出したいブランチ>

submodule削除・再追加

http://takaaki-kasai-tech.blogspot.com/2014/02/how-to-remove-git-submodule-using-each-version.html
https://qiita.com/kinpira/items/3309eb2e5a9a422199e9

※git バージョンが1.8.5以上の場合。

$ git submodule deinit path/to/submodule
$ git rm path/to/submodule
$ rm -rf path/to/submodule
$ git submodule add 【リポジトリURL】 【追加したいディレクトリ】
//具体例
$ git submodule deinit -f aaa/bbb
$ git rm aaa/bbb
$ git submodule add https://git.git aaa/bbb

※git バージョンが1.8.3未満は以下を個別に削除する必要がある。

//削除するサブモジュールの場所。
.git/config
.gitmodules
//git rm でサブモジュールパス削除
.git/modules/aaa/bbb
//rm -rf で直接サブモジュールパス削除

コンフリクト一方修正

//現在ブランチの修正に変更
$ git checkout --ours AAAA.txt
//マージする側ブランチの修正に変更
$ git checkout --theirs fileB.txt

//実行後はaddする
$ git add <ファイル名>

コミット打ち消し・修正・取消

https://qiita.com/kansiho/items/2bacecdb95d752cb38b7
https://qiita.com/ritukiii/items/74ee3274c3f218511a0c
https://qiita.com/chihiro/items/2fa827d0eac98109e7ee

・reset
・amend
・revert
・【危険】push -f

//ローカル上で修正残して直前コミット取消
git reset --soft HEAD^
//ローカル上で修正含めて直前コミット取消
git reset --hard HEAD^

//ローカル上でコミット直後に再度直前コミットのソース修正・コメント修正等をして、同じコミットにしたい場合
git commit --amend

//取り消した内容を残してコミットする
git revert <commit>

//戻したい位置までコミット戻してリモート強制更新
git reset --hard <commit_id>
git push origin HEAD --force

差分抽出

//[1]取得ソースの branch名/hashtag/tag名
//[2]ベースのbranch名/hashtag/tag名
//[3]変更あるbranch名/hashtag/tag名
git archive [1] `git diff --name-only [2] [3] --diff-filter=ACMR` -o [zipファイル名].zip

stage から Unmerged paths,Untracked filesに戻す・削除

https://qiita.com/rch1223/items/9377446c3d010d91399b
 ※戻す方法は上記にいろいろ載ってる
https://qiita.com/k0uh0t/items/ae885bf2d5e05614b80f

//stage から Unmerged paths
git reset <ファイル名>
git reset .

//変更前に戻す
git reset HEAD <ファイル名>

//gitから削除
git rm -rf フルパス

//Untracked filesのディレクトリ含めた削除
git clean -fd

コンフィグ関連

・文字コード設定とか
https://nekonenene.hatenablog.com/entry/2015/04/18/210706
・git logが見やすくなる
https://blog.toshimaru.net/git-log-graph/
・git for windows改行関連
https://qiita.com/uggds/items/00a1974ec4f115616580

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0