你如何停止跟踪Git中的远程分支?
我要求停止跟踪,因为在我的具体情况下,我想删除本地分支,但不是远程分支.删除本地删除并将删除推送到远程也将删除远程分支:
我可以这么做吗git branch -d the_branch
,以后我不会传播它git push
吗?
如果我git push origin :the_branch
以后再跑,它会传播吗?
我们正在将我们(巨大的)项目转移到git,我们正在考虑使用子模块.我们的计划是在超级项目中有三个不同的头:发布,稳定,最新.项目负责人将处理释放和稳定的分支机构.他们将根据需要移动子模块.
问题是"最新"头.我们希望超级项目"最新"头部跟踪所有子模块的主分支(自动).如果能够显示子模块的所有提交历史,那也很棒.
我看过gitslave,但它不是我们想要的.有什么建议?
我是Git的新手.我想知道什么是跟踪和未跟踪的文件?我读过"Pro Git",但仍然不太明白.
有人可以通过提供一个例子向我解释两者之间的区别吗?
谢谢,Nayan
我想创建一个独立于主分支的git分支.我希望到目前为止主机中存在的所有代码,但主机中的任何进一步更改都不应反映在分支中,并且分支中的任何更改都不应反映在主机中.
我用这个命令来创建分支:
git branch test
Run Code Online (Sandbox Code Playgroud)
但是我添加的任何文件master
,我都可以看到test
.test
我添加了任何新文件,我可以看到master
.怎么避免这个?创建分支时我没有使用任何--track选项.
直到最近,我还没有意识到--track
切换git branch
.我阅读了文档并尝试了这个命令,但对我来说没有任何意义.
--track
创建新分支时,设置
branch.<name>.remote
和branch.<name>.merge
配置条目以将起点分支标记为新分支的"上游".这个配置会告诉git显示两个分支git status
和git 之间的关系branch -v
.此外,它在git pull
没有参数的情况下指示在检出新分支时从上游拉出.当起点是远程跟踪分支时,此行为是默认行为.
false
如果需要git checkout
,将branch.autoSetupMerge配置变量设置为,并git branch
始终表现为 - 如果给出了--no-track.always
如果在起点是本地或远程跟踪分支时需要此行为,请将其设置为.
我可以看到,当人们想要创建分支跟踪上游分支时,人们会与此开关相关联
这是什么意思?是我还是这个开关描述令人困惑.当我使用term时upstream
,我指的是另一个我可以推动更改的远程仓库(fork).
当我开始跟踪远程分支时会发生什么?它在当地表现如何?
所以我运行了这个命令:
git checkout -b --track origin/RB_1.4.5
Run Code Online (Sandbox Code Playgroud)
我认为它会创建一个同名的本地分支,并将其设置为跟踪远程分支,但它创建了一个名为--track的分支.我可以发誓,省略本地分支名称通常会导致它假设您想要与远程分支相同的名称,但我想情况并非如此.
现在运行:
git branch
Run Code Online (Sandbox Code Playgroud)
给我:
* --track
master
Run Code Online (Sandbox Code Playgroud)
我试过检查主人然后运行:
git branch -D --track (as well as "--track")
Run Code Online (Sandbox Code Playgroud)
但这没有做任何事情(没有错误或任何事情).
我尝试删除.git/config中的相应行,但仍然没有骰子.
我该如何删除该分支?此外,在将来,有没有办法做我想要的,仍然不必重新键入本地分支名称?
我是git的新手,我想知道如何解决一个非常基本的场景.我在stackoverflow上读了很多关于git的帖子,但仍然无法弄清楚答案.
我们有一个每个人都在工作的origin/master远程分支.我有一个我想要实现的功能,可能需要时间来开发.同时,人们可能正在检查原始/主人的代码.
考虑到以下需求,我的工作流程会是什么样子以及如何设置我的git分支:
我希望能够将代码更改提交到我的分支并将它们推送到我们服务器上的远程分支,这样我就不会在我的计算机被炸的情况下丢失更改.
我想让我的分支与主分支保持同步.
我想最小化常规合并.我喜欢git rebase的概念,所以我想最大化它的使用,因此快进合并.
在某些时候,我们必须将我的分支FeatureA合并到origin/master中.
总结:
如何设置一个从origin/master拉出但跳到origin/MY-BRANCH的分支?
我的工作流程会是什么样子?
更新:
谢谢@ will-pragnell!您的解决方案与以下内容有何区别?
github上的这个页面建议:
https://github.com/diaspora/diaspora/wiki/Git-Workflow
为了从开发中继获取最新更新,请执行一次性设置,通过输入以下内容将主GitHub存储库建立为远程:
$ git remote add upstream git://github.com/diaspora/diaspora.git
$ git fetch upstream
$ git checkout master
$ git rebase upstream/master
$ git checkout 100-retweet-bugfix
Run Code Online (Sandbox Code Playgroud)
[确保在分支中根据需要提交所有内容]
$ git rebase master
Run Code Online (Sandbox Code Playgroud) 为什么“git remote show origin”将远程分支列为“已跟踪”,即使这些分支没有链接到本地分支以进行拉/推?在这种情况下,“跟踪”是否意味着其他?我认为这就是“跟踪”的全部含义:分支跟踪上的 git docs。
1) 克隆一个包含多个远程分支的 repo
2)运行git remote show origin
——说“testBranch”被跟踪。但是git branch -vv
正确地只显示 master 跟踪 origin/master,并且git branch -a
正确地显示只有一个本地分支 master。
3)那么:git remote show origin
将 testBranch 列为“已跟踪”是什么意思?需要明确的是:事情的设置方式没有“错误”:一切正常。我只是不明白为什么远程 testBranch 被标记为“已跟踪”。这就是我想要的答案。
hawk@Tug:~/temp/TestRepo (master)$ git remote show origin
* remote origin
Fetch URL: git@github.com:haughki/TestRepo.git
Push URL: git@github.com:haughki/TestRepo.git
HEAD branch: master
Remote branches:
master tracked
testBranch tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push': …
Run Code Online (Sandbox Code Playgroud) 我正在考虑将一些文件添加到.git
repo目录,并将push
它们添加到上游而不跟踪/提交它们.
例:
.git/information.txt
Run Code Online (Sandbox Code Playgroud)
在我做了之后commit
,我添加了文本information.txt
,然后push
.当我clone
/ fork我想仍然有这个文件.git
.
我基本上想要的是拥有未被跟踪的文件,并且在git push
发布时使用本地存储库中的现有内容更新上游中的内容.
我想这样做的方法是破解git-init
并添加我想要的任何内容,并查看git push
/ clone
/ fork对.git
文件夹做了什么,并保留新文件并将它们发送到上游.但我在想,也许还有另一种方式.
是否有我错过的配置选项?