2

私は git を初めて使用し、clearcase を使用しているため、次のようなことが起こる理由がわかりません。

git private dev ブランチを作成し、その中のファイルにいくつかの変更を加えたとします。

ここで、他の無関係な作業を行い、マスター ブランチをチェックアウトする必要があります。

Git は、プライベート ブランチからローカル マスターに私の変更を自動的にもたらします。

これは非常に直観に反していると思います。私がプライベート dev ブランチを持っていた理由は、準備が整うまで自分の変更を他の場所に行きたくないからです。私が言わずにgitがそれらを動かしているのはなぜですか。

はい、git stash がありますが、いくつかの開発者が並行して作業している場合や、頻繁に切り替える必要がある場合は、stash を追跡するのが面倒です。むしろ、ブランチ チェックアウトで変更が行われないようにしたいと思います。そして、熱狂的な瞬間に隠しておくのを忘れると、恐怖があなたを味方につけます。

これを回避する設定がいくつかありませんか?

どうもありがとう!

4

3 に答える 3

1

これが私がやりたいことです:

git config --global alias.temp '!git add -A && git commit -m "Temp"'
git config --global alias.pop 'reset HEAD~'

既存の作業を 1 つのブランチに残し、別のブランチに切り替えたい場合:

git temp
git checkout other_branch

また、元に戻したい場合は次のようにします。

git checkout original_branch
git pop
于 2013-06-27T20:46:11.857 に答える
1

私の推測では、変更をプライベート ブランチにコミットしていないため、git はそれらを作業ディレクトリへの追跡されていない変更と見なします。などの別のブランチをチェックアウトするmasterと、追跡されていない変更が競合を引き起こさない場合、git はそれらを変更するために何もしません。そうしないと、これまで行ってきた作業を上書きする可能性があるため、これは良いことです。

これを回避するには、必ずgit addandを実行しgit commitてから、git checkoutブランチを変更してください。git stashまたは、一時的なコミットとして変更をスタッシュするために使用できます。チェックアウトしてプライベート ブランチに戻ったら、実行git stash applyして以前の変更git stash popを取得するか、それらを取得してスタッシュ スタックから削除します。

于 2013-06-27T20:50:42.460 に答える