我很难理解GIT的一些东西.
我们有一个包含许多分支的存储库.我可以获取其中一个分支的本地副本(git checkout -b ...),进行一些更改,然后将它们推回.但是,如果我没有标记分支的结尾,那么其他用户如何获得分支的负责人?当他们使用git checkout获取分支时,他们会在分支点获取代码 - 而不是该分支的头部.
我在这里错过了什么?
编辑:我很晚才进入这个项目并参与了CVS到GIT的转换.我假设FOO_3_4_0001 ...标记沿着分支的所有标记点用FOO_3_4_0001_INITIAL开始.我怎么检查?
编辑2:感谢所有贡献答案的人.事实证明,标签FOO_3_4_0001不在3.4分支上,这就是我一直缺少的.我已经安排了私刑派对.
@ghoseb,没用.我试过这个:
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 $
Run Code Online (Sandbox Code Playgroud)
在这一点上,我检查了我在这个分支上所做的更改,但它不存在.如果我查看标记为FOO_3_4_0001_RC5a的代码,我的更改就在那里.
好的,有关@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 $
Run Code Online (Sandbox Code Playgroud)
如果我查看标签列表,我会看到,除其他外:
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 $
Run Code Online (Sandbox Code Playgroud)
我遇到的挑战是知道FOO_3_4_0001_INITIAL分支上的最新代码是什么.
现在在这种情况下,我碰巧知道它是FOO_3_4_0001_RC5a,但如果我不知道(对于我们的一些开发人员有时会这样),我如何查看origin_FOO_3_4_0001_INITIAL分支,知道我已经获得了最新的代码那个分支?
他们只需从远程存储库中取出即可获得远程分支的HEAD.
$ git remote update
$ git checkout <branch_name>
$ git pull origin <branch_name>
$ <edit> ...
$ git commit
$ git push origin <branch_name>
Run Code Online (Sandbox Code Playgroud)
我在这里假设远程存储库的名称为origin,您可以用实际名称替换它.
这听起来像你正在做正确的事情。分支的名称只是指向分支上最新提交的指针。您确定要来并将更改推送回每个人都从中提取的存储库吗?当您提交时,您只提交到您的本地存储库,因此要获得更改,协作必须(a)从您的本地存储库中提取,或(b)从您使用git push
.