Git 什么是跟踪分支?
有人能解释一下适用于git的“跟踪分支”吗 以下是以下定义: Git中的“跟踪分支”是本地分支 连接到远程服务器的分支 分支机构。当你推拉它的时候 分支,它会自动推送和 拉到它所在的远程分支 与…有关 如果您总是从底部拉出,请使用此选项 相同的上游分支进入新的 分支,如果您不想使用 “git pull”是显式的 不幸的是,作为git的新手,来自SVN,这个定义对我来说毫无意义 我正在阅读“”(顺便说一句,这本好书),他们似乎建议跟踪分支是件好事,在创建第一个远程(本例中为原点)之后,您应该将主分支设置为跟踪分支,但不幸的是,它没有涵盖为什么跟踪分支是件好事,或者将主分支设置为原始存储库的跟踪分支会带来什么好处 有人能(用英语)告诉我吗?有: 跟踪分支机构 从远程分支签出本地分支会自动创建所谓的跟踪分支。跟踪分支是与远程分支有直接关系的本地分支。如果您在跟踪分支上并键入Git 什么是跟踪分支?,git,version-control,branch,Git,Version Control,Branch,有人能解释一下适用于git的“跟踪分支”吗 以下是以下定义: Git中的“跟踪分支”是本地分支 连接到远程服务器的分支 分支机构。当你推拉它的时候 分支,它会自动推送和 拉到它所在的远程分支 与…有关 如果您总是从底部拉出,请使用此选项 相同的上游分支进入新的 分支,如果您不想使用 “git pull”是显式的 不幸的是,作为git的新手,来自SVN,这个定义对我来说毫无意义 我正在阅读“”(顺便说一句,这本好书),他们似乎建议跟踪分支是件好事,在创建第一个远程(本例中为原点)之后,您应该将主分
gitpush
,git会自动知道要推送到哪个服务器和分支。另外,在其中一个分支上运行git pull
会获取所有远程引用,然后自动合并到相应的远程分支中
克隆存储库时,它通常会自动创建一个跟踪源/主存储库的主分支。这就是为什么git push
和git pull
在没有其他参数的情况下开箱即用。但是,如果愿意,您可以设置其他跟踪分支,即不跟踪原始分支和不跟踪主分支的分支。这个简单的例子就是您刚才看到的例子,运行git checkout-b[branch][remotename]/[branch]
。如果您有Git版本1.6.2或更高版本,还可以使用--track
速记:
$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"
要使用与远程分支不同的名称设置本地分支,可以轻松使用具有不同本地分支名称的第一个版本:
$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "sf"
现在,您的本地分支sf
将自动推到origin/serverfix
并从中拉出
奖金:额外git状态
info
对于跟踪分支,git status
将告诉您是否落后于跟踪分支多远,这有助于提醒您尚未推进更改!看起来是这样的:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
或
:
跟踪分支是与远程分支有直接关系的本地分支
不完全是。所谓“问题”包括:
没有本地跟踪分支的概念,只有远程跟踪分支。因此
origin/master
是origin
回购中master
的远程跟踪分支
但实际上,一旦你建立了一个中间人:
- 本地分支,如
master
- 和一个远程跟踪分支,如
origin/master
他补充说: “远程跟踪分支”一词令人困惑 更确切的说法是: “本地远程跟踪分支机构”” 否则,有人可能会解释“远程跟踪分支”位于源服务器上
这就是我添加跟踪分支的方式,这样我就可以将其拉入我的新分支:
git branch --set-upstream-to origin/Development new-branch
以下是我关于GIT跟踪分支的个人学习笔记,希望对未来的访问者有所帮助:
跟踪分支和“git获取”:
跟踪分支只不过是为我们节省一些打字时间的一种方式 如果我们跟踪一个分支,我们不必总是键入
git push origin
或git pull origin
或git fetch origin
或git merge origin
鉴于我们命名了远程源站
,我们可以分别使用git push
、git pull
、git fetch
、git merge
我们在以下情况下跟踪分支机构:
-u
使其成为跟踪分支git branch-u origin/branch\u name branch\u name
TL;DR记住,所有git分支本身都用于跟踪一组文件的历史记录。因此,并不是每个分支实际上都是一个“跟踪分支”,因为这些分支就是用来跟踪文件的历史记录的。因此,我们可能应该将普通git称为“分支”,“跟踪分支”,但我们没有。相反,我们把它们的名字缩短为“分支机构” 这就是为什么“跟踪分支”这个词如此令人困惑的部分原因:对于新手来说,它很容易就意味着两种不同的东西 在git中,术语“跟踪分支”是更完整术语的简称:“远程跟踪分支” 如果你先替换更正式的术语,直到你对这些概念更熟悉,可能会更好 让我们把你的问题重新表述如下: 什么是“远程跟踪分支?”
git branch --set-upstream-to origin/Development new-branch
(older) ... <--link1-- Commit1 <--link2-- Commit2 <--link3-- Commit3 (newest)
parent children
+-- Commit <-- Commit <-- Commit (Branch named 'Tom')
/
v
(older) ... <-- Commit1 <-- Commit (Branch named 'master')
parents child
... <-- Commit
v
\
(older) ... <-- Commit1 <-- Commit2
$ mkdir mydir && cd mydir && git init # create a new git repository
$ git branch # this initially reports no branches
# (IMHO this is a bug!)
$ git status -bs # -b = branch; -s = short # master branch is empty
## No commits yet on master
# ...
$ touch foo # create a new file
$ vim foo # modify it (OPTIONAL)
$ git add foo; commit -m 'your description' # start tracking foo
$ git rm --index foo; commit -m 'your description' # stop tracking foo
$ git rm foo; commit -m 'your description' # stop tracking foo & also delete foo
$ git pull # Essentially does: get fetch; git merge # to update our clone