2

GITブランチについての基本的な考え方が欠けていると思います。

自分のマシンにリポジトリのクローンを作成し、(ローカルの「マスター」で)作業を開始したとしましょう。

今、誰かが本番環境のバグについて教えてくれました。

私が行っているすべてのこと(修正されたファイルおよびプッシュされていないコミット)を停止し、ローカルで行った変更なしでサーバーに基づく機能ブランチを作成し、バグを修正し、コミットしてプッシュしてから、マスターに戻りたい、リベースして作業を続けます。

私は次のことがうまくいくと思いました:

$ git clone <some repo>
$ vim text.txt
$ git checkout -b bugFix

問題は、ブランチ「bugFix」に、マスターで行った変更がそのステータスに含まれていることです。

どうすればクリーンなブランチを作成できますか?

4

3 に答える 3

5

最もクリーンな方法は、現在の作業をローカルの機能ブランチにコミットし(マスターをリリース可能な状態に保つ)、マスターに切り替えてそこでバグ修正を行うことです(またはマスターに基づくブランチで)。

git checkout -b my-feature
git commit -m "add my feature"
git checkout master
git pull --rebase
git checkout -b bugFix
... do some work ...
git checkout my-feature

作業を(ローカルで)コミットする準備ができていない場合は、stashを使用して変更を隠しておくことができます。

git stash
git fetch
git checkout origin/master
git checkout -b bugFix
... do some work ...
git checkout master
git stash pop
于 2013-03-11T16:33:15.287 に答える
1

リモートの名前が「origin」であるとすると、リモートブランチの名前は「production」であり、現在マスターになっています。次のようにします。

$ git stash   # move your current uncommitted stuff out of the way
$ git checkout -b bugFix remotes/origin/production
# now fix the bug, and commit (to your bugFix branch)
$ git push origin production # back to production
$ git checkout master
$ git stash pop

この時点で、必要に応じて、次の方法でローカルのbugFixブランチを削除できます。

$ git branch -d bugFix

そして、あなたはあなたが始めたところに戻っています(そして会社のヒーローも!)

于 2013-03-11T16:45:11.930 に答える
0

まず、あなたがしていることを隠しておきます。

git stash

リポジトリには、最後にオリジンから取得したものと一致するリモート追跡ブランチがあります。そのブランチに切り替えます。

git checkout remotes/origin/master

リモートトラッキングブランチに直接コミットしたくないため、ヘッドが切り離された状態になります。したがって、リモート追跡ブランチに基づいてバグ修正ブランチを作成します。

git checkout -b bugFix

ハックアウェイ

于 2013-03-11T16:30:25.980 に答える