- 投稿日:2020-09-12T12:08:08+09:00
【Git】間違えて違うブランチで作業を始めてしまったときの対処法
1. 状況
例えば新しい機能を実装しようとコードを書いていて、
「ん..?これってmasterブランチじゃね..?!」
と気づいたとき。そしてまだcommitはしてないけど、既に結構ファイルをいじってしまっている。。
..そんな状況における対処法をさくっと解説します。
結論として、全然大丈夫です!!
(実際に自分がmasterで作業していて焦ったので、情報共有します..)2. やること
簡単に流れを説明すると、
①今の作業ブランチを確認する
②変更してしまった作業分を退避させる
③本来作業したかったブランチにその変更を反映させる
です。3. 実際にやってみよう
①今の作業ブランチを確認
$git branch
で今の作業ブランチを確認します。$git branch feature/#7_add_modal_for_posting feature/#9_add_user_name_to_posts * master今回の例の場合は、本当は
feature/#9..
というブランチで作業したかったのに、masterで作業している状態になっています。(やば..)②変更してしまった作業分を退避させる
まずはmasterブランチなどで書き始めてしまったコードを退避させましょう。
イメージ的には仮置き場に移動させる、といった感じです。
これには$git stash
というコマンドを使います。$git stash Saved working directory and index state WIP on master: ○○これで間違えて書き始めてしまったmasterブランチでの作業を退避することができました。
念のため
$git status
で状態を確認してみましょう。$git status On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree cleanmasterブランチが綺麗な状態になっていることが確認できます。
ちなみにstash
は「隠して蓄える」のような意味です。③本来作業したかったブランチに変更を反映させる
stashで退避させたら、
$git checkout ブランチ名
で本来作業したかったブランチに切り替えます。$git checkout feature/#9_add_user_name_to_posts
そして先ほどstashに退避させた変更分を、切り替えたブランチに反映させます。$git stash apply
これで作業は完了です。
あとは続きからのコードを気持ちよく書いていけばOKです!
④おまけ
$git stash list
で現在のstashの状態を確認できます。$git stash list stash@{0}: WIP on master: ○○ stash@{1}: WIP on master: ×× stash@{2}: WIP on master: △△ ..そしてこのように複数のstashがあり、特定のstashをブランチに反映させたい場合は、
$git stash apply stash@{1}のようにstashを指定してapplyすればOKです。
先程のようにオプションに何も指定しなければ最後に退避させたstashがブランチに反映されます。
- 投稿日:2020-09-12T12:08:08+09:00
間違えて違うブランチで作業を始めてしまったときの対処法【Git】
1. 状況
例えば新しい機能を実装しようとコードを書いていて、
「ん..?これってmasterブランチじゃね..?!」
と気づいたとき。そしてまだcommitはしてないけど、既に結構ファイルをいじってしまっている。。
..そんな状況における対処法をさくっと解説します。
結論として、全然大丈夫です!
(実際に自分がmasterで作業していて焦ったので、情報共有します..)2. やること
簡単に流れを説明すると、
①今の作業ブランチを確認する
②変更してしまった作業分を退避させる
③本来作業したかったブランチにその変更を反映させる
です。3. 実際にやってみる
①今の作業ブランチを確認
$git branch
で今の作業ブランチを確認します。$git branch feature/#7_add_modal_for_posting feature/#9_add_user_name_to_posts * master今回の例の場合は、本当は
feature/#9..
というブランチで作業したかったのに、masterで作業している状態になっています。(やば..)②変更してしまった作業分を退避させる
まずはmasterブランチなどで書き始めてしまったコードを退避させましょう。
イメージ的には仮置き場に移動させる、といった感じです。
これには$git stash
というコマンドを使います。$git stash Saved working directory and index state WIP on master: ○○これで間違えて書き始めてしまったmasterブランチでの作業を退避することができました。
念のため
$git status
で状態を確認してみましょう。$git status On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree cleanmasterブランチが綺麗な状態になっていることが確認できます。
ちなみにstash
は「隠して蓄える」という意味です。③本来作業したかったブランチに変更を反映させる
stashで退避させたら、
$git checkout ブランチ名
で本来作業したかったブランチに切り替えます。$git checkout feature/#9_add_user_name_to_posts
そして先ほどstashに退避させた変更分を、切り替えたブランチに反映させます。$git stash apply
これで作業は完了です。
あとは続きからのコードを気持ちよく書いていけばOKです!
④おまけ
$git stash list
で現在のstashの状態を確認できます。$git stash list stash@{0}: WIP on master: ○○ stash@{1}: WIP on master: ×× stash@{2}: WIP on master: △△このように複数のstashがあり、特定のstashをブランチに反映させたい場合は、
$git stash apply stash@{1}のようにstashを指定してapplyすればOKです。
逆に先程のようにオプションに何も指定しなければ、最後に退避させたstashがブランチに反映されます。
- 投稿日:2020-09-12T12:08:08+09:00
間違えて違うブランチで作業を始めてしまったときの対処
1. 状況
例えば新しい機能を実装しようとコードを書いていて、
「ん..?これってmasterブランチじゃね..?!」
と気づいたとき。そしてまだcommitはしてないけど、既に結構ファイルをいじってしまっている。。
そんな状況における対処法をさくっと解説します。
結論として、全然大丈夫です!!
(実際に自分がmasterで作業していて焦ったので、情報共有します..)2. やること
簡単に流れを説明すると、
①今の作業ブランチを確認する
②変更してしまった作業分を退避させる
③本来作業したかったブランチにその変更を反映させる
です。3. 実際にやってみる
①今の作業ブランチを確認
$git branch
で今の作業ブランチを確認します。$git branch feature/#7_add_modal_for_posting feature/#9_add_user_name_to_posts * master今回の例の場合は、本当は
feature/#9..
というブランチで作業したかったのに、masterで作業している状態になっています。(やば..)②変更してしまった作業分を退避させる
まずはmasterブランチなどで書き始めてしまったコードを退避させましょう。
イメージ的には仮置き場に移動させる、といった感じです。
これには$git stash
というコマンドを使います。$git stash Saved working directory and index state WIP on master: ○○これで間違えて書き始めてしまったmasterブランチでの作業を退避することができました。
念のため
$git status
で状態を確認してみましょう。$git status On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree cleanmasterブランチが綺麗な状態になっていることが確認できます。
ちなみにstash
は「隠して蓄える」のような意味です。③本来作業したかったブランチに変更を反映させる
stashで退避させたら、
$git checkout ブランチ名
で本来作業したかったブランチに切り替えます。$git checkout feature/#9_add_user_name_to_posts
そして先ほどstashに退避させた変更分を、切り替えたブランチに反映させます。$git stash apply
これで作業は完了です。
あとは続きからのコードを気持ちよく書いていけばOKです!
④おまけ
$git stash list
で現在のstashの状態を確認できます。$git stash list stash@{0}: WIP on master: ○○ stash@{1}: WIP on master: ×× stash@{2}: WIP on master: △△ ..そしてこのように複数のstashがあり、特定のstashをブランチに反映させたい場合は、
$git stash apply stash@{1}のようにstashを指定してapplyすればOKです。
なお先程のようにオプションに何も指定しなければ最後に退避させたstashがブランチに反映されます。
- 投稿日:2020-09-12T11:42:03+09:00
gitwatchでファイル変更時に自動でCommmit/Pushする(mac)
gitwatchで自動コミット・自動プッシュする
目的
個人開発の場合で、コミットの履歴を詳細に書かなくて良いのに、
毎回手動でステージに上げる&コミット&プッシュをするのが面倒だったのでいい方法はないかと探しました。調べた所方法としては2つ
- 一定時間ごとにスクリプトを走らせる
- fswatch(ファイル変更を検知する)を用いて、gitを走らせる。
あったのですが、変更されたらすぐプッシュしてほしかったので、後者の方法で、
内部でfswatch使っている、gitwatchを使うのが手軽で良さそうだったので紹介します。
https://github.com/shu-pf/gitwatch導入
自分は以下の手順でインストールしました。
- bpkgのインストール(パッケージマネージャ)
- gitwatchのインストール
- 依存関係のインストールbpkgのインストール
ソースコードよりインストール
$ git clone https://github.com/bpkg/bpkg.git $ cd bpkg $ ./setup.sh # Will install bpkg in $HOME/.local/bin $ sudo ./setup.sh # Will install bpkg in /usr/local/bin. $ PREFIX=/my/custom/directory ./setup.sh # Will install bpkg in a custom directory.gitwatchのインストール
$ [sudo] bpkg install -g gitwatch/gitwatch依存関係のインストール
$ brew install fswatch $ brew install coreutils使い方
git initやリモートリポジトリが設定済みの
プロジェクトのフォルダで以下のコマンドを入力する。gitwatch -r origin -b master . &これで、ファルの変更を検知し自動ステージに上げ・自動コミット・自動プッシュが行われます。
- 投稿日:2020-09-12T02:38:31+09:00
【Git】範囲cherry-pickでmergeコミットを飛ばしたかった
TL;DR
git rebase --onto
を用いるのが良さそうです
- 参考にさせて頂いた記事(図解付きで非常に分かりやすいです): merge、rebase実行時のコミットグラフのbefore&after - Qiita
やりたかったこと
cherry-pick
で、merge
コミットを含む範囲のコミットを取ろうとしていました。
一方、この操作をやるとerror: commit ${ハッシュ} is a merge but no -m option was given.
と怒られます。
fatal: cherry-pick failed
脳死で-m
オプションを付けてもmerge
コミットは飛ばせませんでした。やり方
冒頭に書いた通り
git rebase --onto
で出来ました。