20200802のGitに関する記事は7件です。

間違えたブランチで作業し始めてしまった時の対処法「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-79086120

stash後に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/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS7.3のRedmineとGitBucketを連携

Redmineで新しいプロジェクト

仮想マシンを起動し、「http://仮想マシンのIPアドレス/Redmine」にアクセスし、ログインしたら、「管理」をクリック。

image.png

「設定」をクリック。

image.png

「リポジトリ」を選択し、「Git」が有効になってることを確認。

image.png

「プロジェクト」を選択し、「新しいプロジェクト」を選択。

image.png

「名称」、「説明」、「識別子」を入力し、「作成」。

image.png

作成されました。

image.png

「リポジトリ」タブをクリックし、「新しいリポジトリ」をクリック。

image.png

「バージョン管理システム」で「Git」を選択。「識別子」はプロジェクトの「識別子」と同じにします。「リポジトリのパス」にGitBucketのリポジトリのURLを入力。「パスのエンコーディング」も一応「UTF-8」にし、「作成」。

image.png

作成されました。

image.png

だがしかし、エラー!

image.png

なんでも、redmine側にもGitBucketのリポジトリのcloneを作成せねばならないらしいです。

WebHookを受けて操作するためのミラーリポジトリを作成します。

ALMinium と GitBucket を連携する。 - YuG1224 blog
このリポジトリのcloneをRedmineサーバーに作成します。

ここでポイントになるのは「--bare」オプションをつけてcloneする点です。

bare(ベア)リポジトリはファイルの実体を持たず、更新情報だけを保持する
リポジトリということだそうで、このモードじゃないとエラーになります。

RedmineとGit(BitBucket)の連携方法(redmine_github_hook使用) - Symfoware

redmineのインストールディレクトリにリポジトリ用のフォルダを作成し、GitBucketのbareリポジトリをclone。

# mkdir -p /var/lib/redmine/repo
# cd repo
# git clone --bare http://192.168.33.10/gitbucket/git/root/gitBucketTest.git

image.png

「Username」「Password」はGitBucketのログイン時のものを入力。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【随時更新】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       objects

git 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 vim

git 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.md

git 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.md

git 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 README

git 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 -> README

git 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_name

git 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.5

git 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
testing

git 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 Commit

git 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 Commit

git rebase -i - 過去のコミットを改変する

  • 最新のコミットを1つ前のコミットに含める
    • 1つ前のコミットに間違えが見つかった時に、修正したコミットを使って改竄するイメージ
$ git rebase -i HEAD-2

git 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 master

git 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
* master

git 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
* test

git fetch - リモートリポジトリの最新の履歴の取得だけを行う

  • リモートリポジトリの最新の履歴の取得だけを行う
    • remote-name とは git remote -v で表示される名前でデフォルトは origin
$ git fetch [remote-name]
  • -p, -pruneでリモートに存在しないリモート追跡ブランチを削除
$ git fetch -p

git pull -

  • リモートリポジトリの内容を取得し、マージする
    • git fetch + merge

pull request の流れ

  • fork する
  • fork したリポジトリを clone する
  • clone したリポジトリでトピックブランチを作成
  • コードを修正
  • git add, commit
  • 元のリポジトリに pull request を送る

フロー

スクリーンショット 2020-05-09 9 05 30

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

git complition

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 status

Git 用語

  • リポジトリ
    • ファイルやディレクトリの状態を記録する場所で、保存された状態は、内容の変更履歴として格納される
  • リポジトリデータ
    • .git ディレクトリに存在するワークツリー以下を管理するファイルたち
  • ワークツリー(ワーキングツリー)
    • git initコマンドを実行したディレクトリ以下のこと
  • コミット
    • ワークツリーにある全てのファイルのその時点の状態を記録すること
  • ステージ(インデックス)エリア
    • コミットをする前の一時領域
  • トピックブランチ
    • 1つのトピックに集中して他の作業は一切行わないブランチ
  • 上流ブランチ
    • あるローカルブランチが、履歴を追跡するように設定したリモートブランチの事
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

gitのプロジェクトを爆速でSourceTreeで開く方法

SourceTreeにブックマークされていないgitプロジェクトをSourceTreeで開くためには手動で以下の手順を踏む必要がありとても面倒くさいと感じています。

  1. SourceTreeを起動させる
  2. ブックマークを表示させる
  3. 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

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ブランチにマージ済みのブランチを削除する

masterブランチにマージ済みのブランチを削除する場合

$ git checkout master; git branch --merged | grep -v "master" | xargs  git branch -d

hogeブランチにマージ済みのブランチを削除する場合

$ git checkout hoge; git branch --merged | grep -v "hoge" | xargs  git branch -d
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

マージ済みのブランチを一括削除するコマンド

masterブランチにマージ済みのブランチを削除する場合

$ git checkout master; git branch --merged | grep -v "master" | xargs  git branch -d

hogeブランチにマージ済みのブランチを削除する場合

$ git checkout hoge; git branch --merged | grep -v "hoge" | xargs  git branch -d
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む