1

Emacs/Magit を使用して、最初は別のプロジェクトで非常にスムーズな git 体験をしましたが、実際のプロジェクトでは、すべてのブランチに混乱し、常にポップアップする追跡されていない #file.ext# に悩まされています。これがどのように見えるかです:

a4cc383 master [remotes//master]
e08a624 origin-master [remotes/origin/master]
6a64828 tj-branch
a4cc383 remotes/origin/master

私が計画していたことは、個人のブランチ (tj-branch) で作業し、コミットしてから master とマージし、リモート リポジトリにプッシュすることです。しかし、マスター ブランチが多すぎて、私の好みではありません。オリジン マスターが追跡ブランチであり、そのローカル コピーをマスターすることを期待します。しかし、プッシュする前に2回のマージが必要になります.tj-branchは冗長ではありませんか?

どうですか

a4cc383 remotes/origin/master

それも枝?なぜそれが存在するのか、なぜそれが必要なのか?

私の質問:

  1. どのブランチが本当に必要で、どれを削除できますか?

  2. ローカル ブランチから - 変更をプッシュするには、どのマスターをチェックアウトしてからマージする必要がありますか: master または origin-master?

  3. ブランチを変更しようとすると、開いている emacs バッファを保存するように求められることが多く、「ディスク上でファイルが変更されました。本当に変更しますか」と言われます。新しいバージョン - ディスクまたはバッファ上。この問題はどこから来ているのですか?

やや初心者の質問で申し訳ありませんが、git に関するいくつかの優れたチュートリアルを読みましたが、マスター ブランチについてはまだ理解できていません。

4

1 に答える 1

1

Pls は次のように答えを見つける:

どのブランチが本当に必要で、どれを削除できますか?

これで、ログから次のブランチが表示されます。

  1. a4cc383 master [remotes//master] (?? なぜこのブランチを持っているのかわかりませんが、どのような操作をしたのですか?)
  2. e08a624 origin-master [remotes/origin/master]// このブランチは問題ありません。リモート マスターを表します。git fetch を使用すると、このブランチの最新の変更を取得できます。
  3. 6a64828 tj-branch //大丈夫です、あなたのブランチ。
  4. a4cc383 remotes/origin/master //remote/origin/master が 2 つあるのに、sha 値が異なる理由がわかりません。

実際には、.git フォルダーと cd refs に移動できます。このフォルダーでは、ローカル ブランチは refs/heads/..... にあり、リモート ブランチは次の場所にあります: refs/remotes/origin/xxx

ローカル ブランチから - 変更をプッシュするには、どのマスターをチェックアウトしてからマージする必要がありますか: master または origin-master?

マスターからトピックをチェックアウトし、変更を加えてコミットし、マスターを git チェックアウトして、変更を git マージします。その後、このように変更をプッシュします。git push origin[リモート リポジトリのデフォルト名] master[ローカル ブランチ]:master[リモート ブランチ]// git はとても賢いです。

ブランチを変更しようとすると、開いている emacs バッファを保存するように求められることが多く、「ディスク上でファイルが変更されました。本当に変更しますか」と言われます。新しいバージョン - ディスクまたはバッファ上。この問題はどこから来ているのですか?

チェックアウトの前にローカルの変更をコミットする必要があります。コミットしたくない場合は、git stash を使用できます //これにより、変更が保持されます。復元したい場合は、git stash apply を使用できます

これがお役に立てば幸いです。

ブラ、ティム

于 2012-03-16T08:47:57.893 に答える