- 投稿日:2020-08-02T18:30:00+09:00
間違えたブランチで作業し始めてしまった時の対処法「git stash」。又、git stashやcheckoutができなくなった時の対処法。
間違えたブランチで作業し始めてしまった時の対処法「$git stash」。
又、git stashやcheckoutができなくなった時の対処法。本記事の狙い
gitで躓いたことを自分用に記録してゆきます。
問題
間違えて統合ブランチで作業を始めちゃった。。。
ブランチを切り替えようと
$git stash
すると
app/views/layouts/application.html.erb: needs merge
と言われstashできなかった。解決方法
git stashで一時保存する。
以下で$git stashとはなんぞやを説明しています。
知っている方は下記手順まで。
$git stash
を実行することでステージングされている・いないデータを
別の場所でそれぞれ一時保管しておける。ただし、以下は stash されない。
・まだステージングされていない作業コピー内の新しいファイル
・無視されたファイル(gitignoreに記述されたファイル)▼参考:作業コピーの位置づけ(スライド15p)
https://www.slideshare.net/yoshinoriyamanouchi12/git-79086120stash後にcheckoutやその他git操作が行える。
checkoutして本来居たかったブランチに移り
$git stash pop
でstash から変更が削除され、現在のにブランチに再適用される。又
$git stash apply
を使用してその変更を stash に維持することも可能。※stash は作業しているローカルの Git リポジトリにのみ適用される。
プッシュ時にサーバーには転送されない。▼参考:stashについて
https://www.atlassian.com/ja/git/tutorials/saving-changes/git-stash
▼参考:リモート追跡ブランチについて
https://qiita.com/uasi/items/69368c17c79e99aaddbf手順
$git status
で問題を特定します。Unmerged paths:
(use "git add ..." to mark resolution)
both modified: (コンフリクトが起きているファイル)=>エディターでコンフリクト箇所を修正し、保存。
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
(変更されているがステージング($git add (ファイル名))されていないファイル)=>コンフリクト修正したファイルもろともステージング
この状態で
$git stash $git checkout (行きたいファイル)git stashの使い方
$git stash
一時的に作業した内容を保存。
$git checkout (branch名)
お望みのブランチ(branch名)へ移動。
$git stash pop
stash前の状態に戻す。
$git stash $git checkout $git popを行うとcheckout前の状態をcheckout後のブランチへ反映させるため、
コンフリクトが起きます。またコンフリクトを解消し、ステージング($git add (ファイル名))すれば
checkout、もしくはstash等操作ができる状態になります。$git stash apply
お望みのブランチ(branch名)にstashした内容を反映。
因みに…
$git stash list
stash 中の内容が見れる。
$ git stash list --date=localとすることで作成日時を表示できる。
$git stash apply stash@{2}
で望んだstashのみ反映させられる。
▼参考
https://gist.github.com/koudaiii/526707492ebc5915596e
https://ccbaxy.xyz/blog/2020/03/20/ruby33/
- 投稿日:2020-08-02T15:19:30+09:00
ALMinium と GitBucket を連携する。
今までは Git リポジトリだけ用意して開発をしていたのだけど、もっと効率的に管理したいと思うようになってきたので、ALMinium と GitBucket を導入することにしました。ついでにそれぞれを WebHook で連携もしてみました。
プラグインをインストール
ALMinium を WebHook に対応させるためにプラグインをインストールします。Redmine と GitHub を連携させるプラグインですが、ALMinium と GitBucket の構成でも使えました。
$ sudo gem install json $ cd /opt/alminium/plugins/ $ sudo git clone https://github.com/koppen/redmine_github_hook.git
- 投稿日:2020-08-02T15:12:19+09:00
CentOS7.3のRedmineとGitBucketを連携
Redmineで新しいプロジェクト
仮想マシンを起動し、「http://仮想マシンのIPアドレス/Redmine」にアクセスし、ログインしたら、「管理」をクリック。
「設定」をクリック。
「リポジトリ」を選択し、「Git」が有効になってることを確認。
「プロジェクト」を選択し、「新しいプロジェクト」を選択。
「名称」、「説明」、「識別子」を入力し、「作成」。
作成されました。
「リポジトリ」タブをクリックし、「新しいリポジトリ」をクリック。
「バージョン管理システム」で「Git」を選択。「識別子」はプロジェクトの「識別子」と同じにします。「リポジトリのパス」にGitBucketのリポジトリのURLを入力。「パスのエンコーディング」も一応「UTF-8」にし、「作成」。
作成されました。
だがしかし、エラー!
なんでも、redmine側にもGitBucketのリポジトリのcloneを作成せねばならないらしいです。
WebHookを受けて操作するためのミラーリポジトリを作成します。
ALMinium と GitBucket を連携する。 - YuG1224 blog
このリポジトリのcloneをRedmineサーバーに作成します。
ここでポイントになるのは「--bare」オプションをつけてcloneする点です。
bare(ベア)リポジトリはファイルの実体を持たず、更新情報だけを保持する
リポジトリということだそうで、このモードじゃないとエラーになります。
RedmineとGit(BitBucket)の連携方法(redmine_github_hook使用) - Symfowareredmineのインストールディレクトリにリポジトリ用のフォルダを作成し、GitBucketのbareリポジトリをclone。
# mkdir -p /var/lib/redmine/repo # cd repo # git clone --bare http://192.168.33.10/gitbucket/git/root/gitBucketTest.git「Username」「Password」はGitBucketのログイン時のものを入力。
- 投稿日:2020-08-02T11:11:08+09:00
【随時更新】Git コマンドのまとめ
はじめに
Git コマンドのまとめです。基本的に Pro Git や、GitHub実践入門 ~Pull Requestによる開発の変革 をベースに作成しています。
コマンド
git init - リポジトリ初期化
$ mkdir git $ cd git/ $ git init Initialized empty Git repository in /Users/XXXXXXX/projects/git/.git/ $ ls .git/ HEAD description info refs config hooks objectsgit config
- git config
- /etc/gitconfig ファイル: システム上の全てのユーザーと全てのリポジトリに対する設定値を保持
- ~/.gitconfig か ~/.config/git/config ファイル: 特定のユーザーに対する設定値を保持
- --global オプションを指定することで、Gitに、明確にこのファイルに読み書きを行なわせることができる
- 現在使っているリポジトリのGitディレクトリにある
config
ファイル(.git/config
のことです): 特定の 単一リポジトリに対する設定$ git config --global user.name "xxxxxxx" $ git config --global user.email xxxxxxx@xxxxx.xxx $ git config --global core.editor vimgit status - リポジトリ の状態を確認
- master ブランチにいて、コミット対象が存在しない
$ git status On branch master Initial commit nothing to commit (create/copy files and use "git add" to track)
- master ブランチにて、ファイルは存在するが追跡されていない
- ワーキングツリーでファイルを作成しただけでは、Gitリポジトリのバージョン管理の対象としてファイルは登録されていない
$ ls $ touch README.md $ git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) README.md nothing added to commit but untracked files present (use "git add" to track)git add
いくつかの機能がある
- 新しいファイルの追跡開始
- ステージ領域へファイルを追加
- コマンドを実行した時点の状態のファイルをステージする
- マージ時に衝突が発生したファイルに対する「解決済み」マーク付け
ファイルを Gitリポジトリの管理対象とするために
git add
コマンドを利用してステージ領域と呼ばれる場所にファイルを登録
Changes to be committed:
以下がステージ領域にされているファイル$ git add README.md $ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README.mdgit diff - 変更したけどまだステージしていない変更を確認
$ git diff
- ステージされている変更と直近のコミットの内容を比較する場合
$ git diff --staged
- tool で確認する
$ git difftool
git commit - リポジトリの歴史を記録
git commit
コマンドはステージ領域に登録されている時点のファイル群を実際にリポジトリの歴史として記録する$ git commit -m "First Commit" [master (root-commit) 9b7066c] First Commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 README.mdgit rm - ファイルの削除をステージする
- ファイルの削除をステージする
$ git rm PROJECTS.md rm 'PROJECTS.md' $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: PROJECTS.md普通に rm すると、not updated” (つまり ステージされていない) 欄に表示される
$ rm PROJECTS.md $ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) deleted: PROJECTS.md no changes added to commit (use "git add" and/or "git commit -a")
- ファイル自体は作業ツリーに残しつ つステージングエリアからの削除だけを行う
$ git rm --cached READMEgit mv - ファイル名を変更してステージする
$ git mv README.md README $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) renamed: README.md -> READMEgit log - コミットログを確認
- リポジトリにコミットされたログを確認
$ git log commit 6e8a1e7b11668f66c60b45c5ce955ccb165cf761 (HEAD -> master) Author: xxxxxxxxx <xxxxxxxxx@xxxxxx.xxx> Date: Mon May 11 08:06:14 2020 +0900 test
--graph
でブランチの分岐を視覚的に表現する$ git log --graph * commit b1ef120598526f44d60c618edfcb29532905aaed (HEAD -> master) |\ Merge: 6e8a1e7 30ae9ad | | Author: xxxxxxxxx <xxxxxxxxx@xxxxxxxxx.xxx> | | Date: Tue May 12 07:53:47 2020 +0900 | | | | Merge branch 'test' | | | * commit 30ae9adf05acda9f9be221eb61104daa89ea8708 (test) |/ Author: xxxxxxxxx <xxxxxxxxx@xxxxxxxxx.xxx> | Date: Tue May 12 07:44:35 2020 +0900 | | add test to test | * commit 6e8a1e7b11668f66c60b45c5ce955ccb165cf761 | Author: xxxxxxxxx <xxxxxxxxx@xxxxxxxxx.xxx> | Date: Mon May 11 08:06:14 2020 +0900 | | test |
--stat
:各コミットエントリに続けて変更されたファイルの一覧と変更されたフ ァイルの数、追加・削除された行数が表示$ git log --stat commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 16:40:33 2008 -0700 removed unnecessary test lib/simplegit.rb | 5 ----- 1 file changed, 5 deletions(-) commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 10:31:28 2008 -0700 first commit README | 6 ++++++ Rakefile | 23 +++++++++++++++++++++++ lib/simplegit.rb | 25 +++++++++++++++++++++++++ 3 files changed, 54 insertions(+)
--pretty
: 独自のログ出力フォーマットを指定$ git log --pretty=format:"%h - %an, %ar : %s" ca82a6d - Scott Chacon, 6 years ago : changed the version number 085bb3b - Scott Chacon, 6 years ago : removed unnecessary test a11bef0 - Scott Chacon, 6 years ago : first commit
--since
: 時間制限のオプション$ git log --since=2.weeks
-S
:任意の文字列を引数にでき、その文字列が追加・削除されたコミットのみを抜き出す$ git log -Sfunction_namegit remote - リモート Git リポジトリにアクセスしやすいような名前をつけて追加
- 新しいリモート Git リポジトリにアクセスしやすいような名前をつけて追加する
- どういう時に使うのかはわからん
$ git remote origin $ git remote add pb https://github.com/paulboone/ticgit $ git remote -v origin https://github.com/schacon/ticgit (fetch) origin https://github.com/schacon/ticgit (push) pb https://github.com/paulboone/ticgit (fetch) pb https://github.com/paulboone/ticgit (push)git tag - 歴史上の重要なポイントに印をつける
- 既存のタグの一覧を表示
$ git tag v0.1 v1.3
タグの作成
- タグには軽量 (lightweight) 版と注釈付き (annotated) 版の二通りがある
現在のHEADが指しているコミットに注釈付きタグを付与する
$ git tag -a v1.4 -m "my version 1.4" $ git show v1.4 tag v1.4 Tagger: Ben Straub <ben@straub.cc> Date: Sat May 3 20:19:12 2014 -0700 my version 1.4 commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number
- 現在のHEADが指しているコミットに軽量タグを付与する
$ git tag v1.4-lw $ git tag v0.1 v1.3 v1.4 v1.4-lw v1.5 $ git show v1.4-lw commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number
- 後から tag を付与する
$ git log --pretty=oneline 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment' a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support 0d52aaab4479697da7686c15f77a3d64d9165190 one more thing 6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment' 0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function 4682c3261057305bdd616e23b64b0857d832627b added a todo file 166ae0c4d3f420721acbb115cc33848dfcc2121a started write support 9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile 964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo 8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme $ git tag -a v1.2 9fceb02
- tag をリモートに push
- デフォルトでは、git push コマンドはタグ情報をリモートに送らないため、タグを作ったら、タグをリモートサーバーにプッシュするよう明示する必要がある
- git push origin [tagname]
$ git push origin v1.5 Counting objects: 14, done. Delta compression using up to 8 threads. Compressing objects: 100% (12/12), done. Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done. Total 14 (delta 3), reused 0 (delta 0) To git@github.com:schacon/simplegit.git * [new tag] v1.5 -> v1.5git checkout - ブランチの切り替え
- オプションなし
- 作業ディレクトリやステージングエリアに未コミットの変更が残っている場合、それがもしチェックアウト先のブランチと衝突する内容ならブランチの切り替えはできない
$ git branch * master $ git branch new_branch $ git branch * master new_branch $ git checkout new_branch Switched to branch 'new_branch'
-b
: リモート分析ブランチをもとにローカルブランチを作成しつつ切り替える$ git checkout -b serverfix origin/serverfix Branch serverfix set up to track remote branch serverfix from origin. Switched to a new branch 'serverfix'git branch - ブランチを表示、作成、削除
- オプションなし
$ git branch * master dev
-d
: ブランチを削除$ git branch -d test
-vv
: ブランチ名 コミット番号 [追跡ブランチ名] コミットメッセージ を確認$ git branch -vv iss53 7e424c3 [origin/iss53: ahead 2] forgot the brackets master 1ae2a45 [origin/master] deploying index fix * serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it testing 5ea463a trying something new
- iss53 ブランチが origin/iss53 を追跡していて、リモートより二つぶん「先行している (ahead)」
- master ブランチは origin/master を追跡しており、最新の状態である
- serverfix ブランチは teamone サーバー上の server-fix-good ブランチを追跡しており、 三つ先行していると同時に一つ遅れている
- testing ブランチは、リモートブランチを追跡していない
git merge - ブランチをマージ
--no-ff
でマージコミットメッセージを記入するためのエディタが立ち上がる$ git checkout master Switched to branch 'master'* master $ git merge --no-ff test Merge made by the 'recursive' strategy. test | 4 ++++ 1 file changed, 4 insertions(+)
--merged
or--no-merged
: 現在作業中のブランチに マージ済みのもの (あるいはそうでないもの) だけを表示$ git branch iss53 * master testing $ git branch --merged iss53 * masterこのリストにあがって いるブランチのうち先頭に
*
がついていないものは、通常はgit branch -d
で削除してしまって問題ない$ git branch --no-merged testinggit reset --hard コミットハッシュ - コミットを元に戻す
$ git log commit 90db068cbac100ba6249e9e6f49045128536fe23 (HEAD -> master) Author: xxxxxxxxx <xxxxxxxxx@xxxxxxxxx.xxx> Date: Tue May 12 08:03:55 2020 +0900 add test commit 9b7066ce13139b01c4b0062da33eb0ae85c0bc64 Author: xxxxxxxxx <xxxxxxxxx@xxxxxxxxx.xxx> Date: Sat May 9 08:57:05 2020 +0900 First Commit $ git reset --hard 9b7066ce13139b01c4b0062da33eb0ae85c0bc64 HEAD is now at 9b7066c First Commit $ git log commit 9b7066ce13139b01c4b0062da33eb0ae85c0bc64 (HEAD -> master) Author: xxxxxxxxx <xxxxxxxxx@xxxxxxxxx.xxx> Date: Sat May 9 08:57:05 2020 +0900 First Commitgit refrog - リポジトリで行われた作業のログを確認
git log
だと今の状態から過去のログしか見れないgit reflog 9b7066c (HEAD -> master) HEAD@{0}: reset: moving to 9b7066ce13139b01c4b0062da33eb0ae85c0bc64 90db068 HEAD@{1}: commit: add test 9b7066c (HEAD -> master) HEAD@{2}: reset: moving to 9b7066ce13139b01c4b0062da33eb0ae85c0bc64 b1ef120 HEAD@{3}: checkout: moving from test to master 30ae9ad (test) HEAD@{4}: checkout: moving from master to test b1ef120 HEAD@{5}: checkout: moving from master to master b1ef120 HEAD@{6}: merge test: Merge made by the 'recursive' strategy. 6e8a1e7 HEAD@{7}: checkout: moving from test to master 30ae9ad (test) HEAD@{8}: commit: add test to test 6e8a1e7 HEAD@{9}: checkout: moving from master to test 6e8a1e7 HEAD@{10}: commit: test 3fad247 HEAD@{11}: commit: test 4b420e0 HEAD@{12}: commit: test 9b7066c (HEAD -> master) HEAD@{13}: commit (initial): First Commitgit rebase -i - 過去のコミットを改変する
- 最新のコミットを1つ前のコミットに含める
- 1つ前のコミットに間違えが見つかった時に、修正したコミットを使って改竄するイメージ
$ git rebase -i HEAD-2git remote add - リモートリポジトリを登録
- origin という識別子で
https://github.com/XXXXXXX/git-test.git
を指すようになる$ git remote add origin https://github.com/XXXXXXX/git-test.git $ cat .git/config [remote "origin"] url = https://github.com/XXXXXXX/git-test.git fetch = +refs/heads/*:refs/remotes/origin/*git push - リモートリポジトリへ送信
- 初めてブランチを Push するときに
-u
オプションをつけることを推奨- origin の master ブランチに現在のブランチの内容を送信
- git push [remote-name] [branch-name]
$ git push -u origin mastergit clone - リモートリポジトリを取得
- git clone 直後は master ブランチにいる
$ git clone https://github.com/XXXXXXX/git-test.git Cloning into 'git-test'... remote: Enumerating objects: 21, done. remote: Counting objects: 100% (21/21), done. remote: Compressing objects: 100% (6/6), done. remote: Total 21 (delta 5), reused 19 (delta 3), pack-reused 0 Unpacking objects: 100% (21/21), done. $ cd git-test/ $ git branch * mastergit branch - 現在のブランチを表示
-a
オプションでリモートリポジトリのブランチも表示$ git branch * master $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/testリモートリポジトリのブランチをチェックアウト
$ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/test $ git checkout -b test origin/test Branch rebase set up to track remote branch rebase from origin. Switched to a new branch 'test' $ git branch master * testgit fetch - リモートリポジトリの最新の履歴の取得だけを行う
- リモートリポジトリの最新の履歴の取得だけを行う
- remote-name とは
git remote -v
で表示される名前でデフォルトはorigin
$ git fetch [remote-name]
-p, -prune
でリモートに存在しないリモート追跡ブランチを削除$ git fetch -pgit pull -
- リモートリポジトリの内容を取得し、マージする
- git fetch + merge
pull request の流れ
- fork する
- fork したリポジトリを clone する
- clone したリポジトリでトピックブランチを作成
- コードを修正
- git add, commit
- 元のリポジトリに pull request を送る
フロー
git flow
- master ブランチは常にデプロイできる状態とする
- 新しい作業をするときは、masterブランチから記述的な名前のブランチを作成する
- 記述的とはブランチの特性を明確に著した
- 同名のブランチを GitHub のリポジトリに定期的に push する
- Pull Request を送り、レビューをしてもらう
- master ブランチにマージし、直ちにデプロイする
コミットのやり直し
- ステージングエリアの内容をコミットに使用する
- 直近のコミット以降に何も変更をし ていない場合 (たとえば、コミットの直後にこのコマンドを実行したような場合)、 スナップショットの内容 はまったく同じでありコミットメッセージを変更することになる
- 最終的にできあがるのはひとつのコミット。二番目のコミットが、最初のコミットの結果を上書きする
$ git commit --amendコンフリクト時
$ git pull error: Pulling is not possible because you have unmerged files. hint: Fix them up in the work tree, and then use 'git add/rm <file>' hint: as appropriate to mark resolution and make a commit. fatal: Exiting because of an unresolved conflict. $ vim conflict_file $ git add conflict_file $ git commit -m "resolve conflict"利用すると便利なリンク
.gitignore
- Python.gitignore
- Python でよく使う .gitignore 例
git complition
- 「Git補完をしらない」「git statusを1日100回は使う」そんなあなたに朗報【git-completionとgit-prompt】
- gitコマンドの補完スクリプト
- プロンプトに各種追加情報を表示可能にするスクリプト
git alias
- git コマンドの別名をつけて簡略化する
$ git config --global alias.co checkout $ git config --global alias.br branch $ git config --global alias.ci commit $ git config --global alias.st statusGit 用語
- リポジトリ
- ファイルやディレクトリの状態を記録する場所で、保存された状態は、内容の変更履歴として格納される
- リポジトリデータ
.git
ディレクトリに存在するワークツリー以下を管理するファイルたち- ワークツリー(ワーキングツリー)
git init
コマンドを実行したディレクトリ以下のこと- コミット
- ワークツリーにある全てのファイルのその時点の状態を記録すること
- ステージ(インデックス)エリア
- コミットをする前の一時領域
- トピックブランチ
- 1つのトピックに集中して他の作業は一切行わないブランチ
- 上流ブランチ
- あるローカルブランチが、履歴を追跡するように設定したリモートブランチの事
- 投稿日:2020-08-02T01:38:23+09:00
gitのプロジェクトを爆速でSourceTreeで開く方法
SourceTreeにブックマークされていないgitプロジェクトをSourceTreeで開くためには手動で以下の手順を踏む必要がありとても面倒くさいと感じています。
- SourceTreeを起動させる
- ブックマークを表示させる
- gitプロジェクトをブックマークにD&Dする
しかし、SourceTreeのコマンドラインツールをインストールすることで爆速化させることが可能です。
SourceTreeコマンドラインツールのインストール
SourceTree > コマンドラインツールをインストール
をクリックします。
1秒かからずインストールが完了し、streeというコマンドが使えるようになります。streeコマンドでSourceTreeを開く
SourceTreeで開きたいプロジェクトのパスを指定してstreeコマンドを実行します。
$ stree SourceTreeで開きたいプロジェクトのパス
すると指定したプロジェクトを開いた状態でSourceTreeが開きます。
※SourceTreeが起動していなければ、起動後にプロジェクトを開いてくれます。SourceTree管理外の場合はブックマーク登録可
SourceTree管理外(ブックマーク未登録)の場合は、上記のようなダイアログが表示され、そのままブックマークに登録できます。
最後に
日常的にコマンドラインを使い、gitはSourceTreeを採用しているエンジニアはノーリスクで爆速を手に入れられるので必ずインストールしておくべきツールだと思います。
環境
Mac版 SourceTree 4.0.1
- 投稿日:2020-08-02T00:24:36+09:00
ブランチにマージ済みのブランチを削除する
masterブランチにマージ済みのブランチを削除する場合
$ git checkout master; git branch --merged | grep -v "master" | xargs git branch -dhogeブランチにマージ済みのブランチを削除する場合
$ git checkout hoge; git branch --merged | grep -v "hoge" | xargs git branch -d
- 投稿日:2020-08-02T00:24:36+09:00
マージ済みのブランチを一括削除するコマンド
masterブランチにマージ済みのブランチを削除する場合
$ git checkout master; git branch --merged | grep -v "master" | xargs git branch -dhogeブランチにマージ済みのブランチを削除する場合
$ git checkout hoge; git branch --merged | grep -v "hoge" | xargs git branch -d