3

私は Git の初心者で、何が起こっているのかよくわかりません。私の相棒と私は一緒にプロジェクトに取り組んでいます。

リモートサーバーからすべてのファイルを取得したgit fetchので、今ではたくさんのファイルがあります。

  • 私はそれらのいくつかを編集し、彼はそれらのいくつかを編集します。

  • 私は毎日フェッチを続けており、彼はいくつかのファイルを変更して更新したと言い始めましたが、これらの変更は私の側には表示されません。

  • Windows で Git GUI を開くと、左側に 2 つのパネルがあります。

    1 つはUnstaged Changes、これは、私が変更したものであり、変更しない限りローカル リポジトリに更新されないことを意味すると解釈していaddます。

    もう一人は言うStaged Changes (Will Commit)。このウィンドウ内でいくつかのファイルをクリックすると、編集中のファイルには表示されていない、友人が行った更新が表示されます。また、自分が行った変更も表示されていると思います。

  • git add .ディレクトリにすべてのファイルを追加します

  • Git GUI でボタンを押すと、2 つのサイド パネル noと no のcommitいずれにもファイルがなくなりました。Unstaged ChangesStaged Changes (Will Commit)

  • すべてのファイルを確認しましたが、私の側と友人の側の両方からの変更が 1 つのファイルにマージされているようです。

何が起こったのか、まだ100%確信が持てません。

  • 質問 1: 私はこれを正しく行いましたか?

  • 質問 2: 具体的には何をしmergeますか?

私はマージを続けておりgit merge origin/master、マージは気の毒なことをしていないようです。commit現在のバージョンの記録をいくつかのハッシュコードに書き留めるだけだと思っていましたが、実際には私が思っていたことをやっているようですcommit-mergeそれは変更をマージしています.

非常に混乱しているだけで、長々とした質問で申し訳ありません。

4

3 に答える 3

6

あなたは誤解していると思いますgit fetch

あなたの場合はリポジトリのmasterブランチであるリモートリポジトリに加えられた変更のみをフェッチしますが、ツリーには適用しoriginませ(ディレクトリにローカルに保存するだけ.gitです)。git merge一方、リモートの変更をリポジトリに適用します。

git pull origin master友人の変更をプルして作業ツリーにマージするには、 を使用する必要があります。基本的に、aの後に が続くgit pullのと同じです。git fetchgit merge

これをチェックしてください:Git Fetch vs Pull


代わりに

あなたの友人/あなたはpush元のリポジトリにアクセスしていません。あなたの友人は、git push origin master彼がコミットした後、何をしていますか? コミットはローカルであり、それを世界中の人々と「共有」するには、git push.

唯一の例外は、originがリポジトリで直接作業している場合です。その後、すべてのコミットがすでにoriginブランチにあるため、プッシュする必要はありません。

于 2011-09-17T02:21:46.463 に答える
1

それを説明するには長い時間がかかるでしょう、そして私はすでに一連のブログ記事でそれをしました。それらを見てください。初心者の視点から、このような基本的なことを説明します。

于 2011-09-17T02:31:07.687 に答える
0

よく読むことを重視する場合は、Git の知識を強化するためにGit を使用したバージョン管理という本をお勧めします。記事は確かに即時的で安価ですが、Git はかなり複雑な獣であり、優れた基盤は長期的には報われると私は信じています。

私の2セント。

于 2011-09-18T12:32:12.383 に答える