0

以前はいくつかのバージョン管理システムを使用していましたが、まだ git について少し混乱しています。私の質問は枝についてです。私の理解では、何らかの機能を開発しようとしていて、結果がよくわからない場合は、ブランチでそれを行うということです。これを達成するために、master からブランチ "srbac" を (私が行ったように) 作成します。次に、srbac をチェックアウトしたので、これが私の作業コピーでした。私はいくつかの変更を加えました。

同僚が私にプル リクエストを送ってきたので、「john」という名前のブランチを作成し、彼の変更をこのブランチにプルしました。そのブランチの作業コピーを作成し、それをローカル リポジトリにプルしようとしました。しかし、これは機能しませんでした。なぜなら、SourceTree アプリケーション (私は git にそれを使用しています) が言ったように、ローカル リポジトリにコミットされていない変更がいくつかあったからです。しかし、これらは「srbac」ブランチからのものでした!これらは「john」ブランチにも「master」にもありません(それらもありました)。

メッセージ (git status) には、これらの変更を「隠しておく」ことができると書かれています。だから私はしました。「ジョン」ブランチでチェックアウトしました。それらは現在、すべてのブランチからなくなっています。

私は何が欠けていますか?助けてくれてありがとう。

4

1 に答える 1

0

ブランチを変更すると、コミットされていない変更が一緒に移動します。これが望まない場合は、どこかにコミットする必要があります。スタッシュは、すべてのブランチからコミットできるこの特別な場所/ブランチです (ただし、それはすべての実際のブランチとは別のものです)。そのため、変更をスタッシュすると、それらは現在のブランチにはなくなり、ブランチを変更しても表示されません。それらはもっぱら隠し場所にあります。それらを元に戻すには、それらを持ちたいブランチに移動して実行するgit stash popと、変更が作業ディレクトリに表示され (コミットとしてではなく、変更されたファイルとして)、stash 内のエントリが削除されます。

nbstash applyは変更を取得し、スタッシュ エントリを削除しません。

于 2013-07-26T11:28:20.397 に答える