我希望能够做到以下几点:
基于其他(远程或本地)分支(通过git branch或git checkout -b)创建本地分支
将本地分支推送到远程存储库(发布),但使其可跟踪,git pull并git push立即工作.
我怎么做?
我--set-upstream在Git 1.7中知道,但这是一个创作后的动作.我想找到一种方法,在将分支推送到远程存储库时进行类似的更改.
我创建了一个本地分支,我想在上游"推".Stack Overflow上有一个关于如何跟踪新创建的远程分支的类似问题.
但是,我的工作流程略有不同.首先,我想创建一个本地分支,当我满意并希望分享我的分支时,我只会将其推送到上游.
更新使用Git 2.0,我在下面写了一个更简单的答案:https://stackoverflow.com/a/27185855/109305
我在Git中创建了一个新分支:
git branch my_branch
Run Code Online (Sandbox Code Playgroud)
推它:
git push origin my_branch
Run Code Online (Sandbox Code Playgroud)
现在说有人在服务器上做了一些更改,我想从中拉出来origin/my_branch.我做:
git pull
Run Code Online (Sandbox Code Playgroud)
但我得到:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.my_branch.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.
If you often merge with the same branch, you may want to
use something like …Run Code Online (Sandbox Code Playgroud) 该central库必须建立一个新的服务器上,所以我创建了我的本地回购新的远程,并推到这一点.
但现在,当我这样做时git pull,它声称我是最新的.这是错的 - 它告诉我关于旧的远程分支,而不是新的远程分支,我知道事实上有新的提交提取.
如何更改本地分支以跟踪不同的遥控器?
我可以在git配置文件中看到这个,但我不想搞砸了.
[branch "master"]
remote = oldserver
merge = refs/heads/master
Run Code Online (Sandbox Code Playgroud) 是否有快捷方式告诉Git将当前跟踪分支推送到原点?
注意:我知道我可以更改默认的推送行为,但我正在寻找一种不会改变默认行为的临时解决方案.
例如,假设我在feature/123-sandbox-tests我将使用的分支上
git push origin feature/123-sandbox-tests
Run Code Online (Sandbox Code Playgroud)
这很乏味.我正在寻找一条捷径,比如说
git push origin current
Run Code Online (Sandbox Code Playgroud)
git知道当前是什么feature/123-sandbox-tests.
编辑:从版本2.0开始,git的默认行为已更改为更直观的行为,这是我想要实现的.有关详细信息, 请参阅此SO问题
编辑2:ceztko的答案是最佳答案,因为它允许推送当前分支,无论设置如何.
尽管我最好去理解它,但我使用git显然很糟糕.
从kernel.org为git push:
-u
--set上游
对于每个最新或成功推送的分支,添加上游(跟踪)引用,由无参数git-pull(1)和其他命令使用.有关更多信息,请参阅
branch.<name>.mergegit-config(1).
这是branch.<name>.merge来自git config:
branch.<name>.merge定义与
branch.<name>.remote给定分支的上游分支一起.它告诉git fetch/git pull合并哪个分支,也可以影响git push(参见push.default).在分支中<name>,它告诉git fetch默认的refspec被标记为在FETCH_HEAD中合并.该值的处理类似于refspec的远程部分,并且必须匹配从给定的远程提取的ref"branch.<name>.remote".git pull(首先调用git fetch)使用合并信息来查找默认分支以进行合并.如果没有此选项,git pull默认合并第一个引用的refspec.指定多个值以获得章鱼合并.如果你想设置git pull以便它<name>从本地存储库中的另一个分支合并,你可以指向branch.<name>.merge所需的分支,并使用特殊设置.(期间)branch.<name>.remote.
我成功地使用github建立了一个远程存储库,并且我成功地将我的第一次提交推送到了:
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
然后,我在不知不觉中成功地将我的第二次提交推送到我的远程存储库:
git commit -m '[...]'
Run Code Online (Sandbox Code Playgroud)
然而,错误地以为我将不得不再次推到origin从master,我跑:
# note: no -u
git push origin master
Run Code Online (Sandbox Code Playgroud)
那是做什么的?它似乎没有任何影响.我"撤消"了git push -u origin master吗?
我想更改Git默认远程分支目的地,所以我可以
git push
Run Code Online (Sandbox Code Playgroud)
代替:
git push upstream
Run Code Online (Sandbox Code Playgroud)
目前这被设置为原始远程,我想将其设置为不同的远程.
我试图删除原始(克隆自)遥控器
git remote rm origin
Run Code Online (Sandbox Code Playgroud)
哪个确实删除了原来的遥控器.但并没有解决git push问题.我还是得到:
致命:没有配置推送目的地.
从命令行指定URL 或使用...配置远程存储库
我也试过玩:
git remote set-url --push myfork origin
Run Code Online (Sandbox Code Playgroud)
和其他选项,但似乎没有工作(也许是因为我太快删除了原点遥控器?)
在这里答案后,我试图改变:
git config push.default upstream (or matching)
Run Code Online (Sandbox Code Playgroud)
但都没有奏效.
有人知道切换和跟踪远程分支这两个命令之间的区别吗?
git checkout -b branch origin/branch
git checkout --track origin/branch
Run Code Online (Sandbox Code Playgroud)
我认为两者都跟踪远程分支,所以我可以将我的更改推送到原点上的分支,对吧?
有什么实际差异吗?
谢谢!
我已经有一个本地主分支跟踪github项目的远程主分支.现在,我的一个合作者在同一个项目中创建了一个新分支,我想相应地做以下事情:
我该怎么做呢?
在git中进行高级操作时,我更像是一个新手.我使用博客框架Octopress维护我的博客.虽然Octopress自2011年以来没有任何发展,但它很好地实现了我的目的,所以到目前为止我还没想过要改变任何东西.
仅供参考,我的博客是在Github Pages上托管的.
今天,在处理新帖子时,git status显示以下消息:
On branch source
Your branch is based on 'origin/master', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
Run Code Online (Sandbox Code Playgroud)
对所有后续命令重复相同的消息,例如git add .,git commit -m 'message'和git push origin source.
如果可能的话,请指向我的pdf/web文章,在那里我可以阅读并了解它以备将来使用.
更多细节:
bash-3.2$ git branch -a
* source
remotes/octopress/2.1
remotes/octopress/HEAD -> octopress/master
remotes/octopress/gh-pages
remotes/octopress/linklog
remotes/octopress/master
remotes/octopress/refactor_with_tests
remotes/octopress/rubygemcli
remotes/octopress/site
remotes/origin/source
Run Code Online (Sandbox Code Playgroud)
如果需要更多信息,请告诉我.谢谢.
git ×10
git-branch ×6
branch ×2
git-push ×2
git-remote ×2
git-checkout ×1
github ×1
github-pages ×1
repository ×1