20200912のGitに関する記事は5件です。

【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 clean

masterブランチが綺麗な状態になっていることが確認できます。
ちなみに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がブランチに反映されます。

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

間違えて違うブランチで作業を始めてしまったときの対処法【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 clean

masterブランチが綺麗な状態になっていることが確認できます。
ちなみに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がブランチに反映されます。

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

間違えて違うブランチで作業を始めてしまったときの対処

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 clean

masterブランチが綺麗な状態になっていることが確認できます。
ちなみに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がブランチに反映されます。

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

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 . &

これで、ファルの変更を検知し自動ステージに上げ・自動コミット・自動プッシュが行われます。

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

【Git】範囲cherry-pickでmergeコミットを飛ばしたかった

TL;DR

やりたかったこと

cherry-pickで、mergeコミットを含む範囲のコミットを取ろうとしていました。
一方、この操作をやるとerror: commit ${ハッシュ} is a merge but no -m option was given.
fatal: cherry-pick failed
と怒られます。
脳死で-mオプションを付けてもmergeコミットは飛ばせませんでした。

やり方

冒頭に書いた通りgit rebase --ontoで出来ました。

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