6

GITについて何かを理解するのに苦労しています。

多数のブランチを含むリポジトリがあります。これらのブランチの 1 つのローカル コピーをフェッチし (git checkout -b ...)、いくつかの変更を加えてから、プッシュ バックできます。しかし、ブランチの終わりにタグを付けるのに失敗した場合、他のユーザーはどのようにしてブランチの先頭を取得するのでしょうか? git checkout を使用してブランチを取得すると、ブランチの先頭ではなく、ブランチのポイントでコードを取得します。

ここで何が欠けていますか?

編集: 私はこのプロジェクトに遅れて参加し、CVS から GIT への変換に関与しました。FOO_3_4_0001... は、FOO_3_4_0001_INITIAL で開始された分岐に沿ったすべてのマーク ポイントにタグを付けると想定しています。どうすれば確認できますか?

編集 2: 回答を提供してくれたすべての人に感謝します。タグ FOO_3_4_0001 が 3.4 ブランチにないことが判明し、それが私がずっと見逃していたものです。私はすでにリンチパーティーを手配しました。


@goseb、うまくいきませんでした。私はこれを試しました:

16:19:29 (1) foo $ git checkout --track -b FOO_3_4_0001_INITIAL origin/FOO_3_4_0001_INITIAL
Branch FOO_3_4_0001_INITIAL set up to track remote branch refs/remotes/origin/FOO_3_4_0001_INITIAL.
Switched to a new branch "FOO_3_4_0001_INITIAL"
16:19:36 (1) foo $ git branch
* FOO_3_4_0001_INITIAL
  master
16:19:39 (1) foo $ git pull
remote: Counting objects: 68, done.
remote: Compressing objects: 100remote: % (59/59), done.
remote: Total 61 (delta 18), reused 0 (delta 0)
Unpacking objects: 100% (61/61), done.
From ssh://***
   f0c5a5f..99f6c1e  master     -> origin/master
Already up-to-date.
16:19:42 (1) foo $

この時点で、このブランチで行った変更を確認しましたが、そこにはありません。FOO_3_4_0001_RC5a とタグ付けされたコードをチェックアウトすると、私の変更がそこにあります。


OK、@Dustin と @mipadi の詳細情報。

を実行するgit branch -rと、次のように表示されます。

16:12:02 (1) foo $ git branch -r
  origin/FOO_3_3_0001_BUILT_VF_BRANCH
  origin/FOO_3_4_0001_INITIAL
  origin/FOO_3_5_0000_RC5
  origin/FOO_3_5_0001_BRANCH
  origin/HEAD
  origin/master
  origin/origin
16:12:05 (1) foo $

タグのリストを見ると、特に次のことがわかります。

16:12:05 (1) foo $ git tag -l
FOO_3_4_0000_RC1
FOO_3_4_0000_RC2
FOO_3_4_0000_RC2b
FOO_3_4_0000_RC3
FOO_3_4_0000_RC4
FOO_3_4_0000_RC4b
FOO_3_4_0000_RC5
FOO_3_4_0000_RELEASE
FOO_3_4_0000_TC1
FOO_3_4_0000_TC2
FOO_3_4_0001_RC2
FOO_3_4_0001_RC3
FOO_3_4_0001_RC4
FOO_3_4_0001_RC5
FOO_3_4_0001_RC5a
FOO_3_4_0001_TC1
16:14:33 (1) foo $

私が抱えている課題は、FOO_3_4_0001_INITIAL ブランチの最新のコードが何であるかを知ることです。

この例では、たまたまそれが FOO_3_4_0001_RC5a であることを知っていますが、そうでない場合 (一部の開発者によくあることですが)、origin_FOO_3_4_0001_INITIAL ブランチをチェックアウトして、最新のコードがあることを確認するにはどうすればよいですか?その枝?

4

5 に答える 5

8

リモート リポジトリからプルするだけで、リモート ブランチの HEAD を取得できます。

$ git remote update
$ git checkout <branch_name>
$ git pull origin <branch_name>
$ <edit> ...
$ git commit
$ git push origin <branch_name>

ここでは、リモート リポジトリの名前をオリジンとして想定していますが、実際の名前に置き換えることができます。

于 2009-01-19T05:08:43.803 に答える
5

あなたは正しいことをしているように聞こえます。ブランチの名前は、ブランチの最新のコミットへの単なるポインタです。誰もがプルしているレポに変更をプッシュして戻ってきてよろしいですか? コミットするときは、ローカル リポジトリにコミットするだけなので、変更を取得するには、コラボレーションは (a) ローカル リポジトリからプルするか、(b) を使用して変更をプッシュした他のアクセス可能なリポジトリからプルする必要がありますgit push

于 2009-01-19T04:56:43.983 に答える
1

Git のクローン、プル、およびフェッチは、リポジトリ ツリー全体で機能します。ブランチは、ローカル リポジトリ内の単なるタグです。

クローンを作成すると、オリジンにリモート リポジトリのコピーが作成されます。ローカルでチェックアウトすることで、これにアクセスできます。

git co -b origin_local_master origin

これにより、オリジン マスターの編集可能なローカル ブランチが作成されます。

ただし、このリポジトリ内のブランチにアクセスすることもできます。

git co -b origin_local_dev origin/dev

これにより、元のブランチ dev の編集可能なローカル ブランチが作成されます。

于 2009-01-19T05:51:47.380 に答える
0

明らかなことを見落としていないことを確認するためだけに:

変更を加えたら、プッシュバックする前にコミットしますか? Git ブランチはブランチの最新のコミットを指すため、変更がコミットされていない場合でも、ブランチはブランチ ポイントを指します。これは、あなたが言ったことです。

于 2009-01-19T05:48:40.773 に答える