我是Mercurial用户,我对远程分支的行为感到困惑.我有一个远程分支origin/dev,我想在本地分支上复制它dev.我想要的是:
git pull,变化origin/dev被合并到devgit push,变化dev被合并到origin/dev所以我创建了一个跟踪分支
git branch --track dev origin/dev
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该完全符合我的需要.
不过,我正在开发一个功能分支并发布了一个git pull.当我后来发出的时候,git checkout dev我收到了令人费解的消息
您的分支在2个提交后面的'origin/master_dev'后面,可以快进.
所以看来我的本地分支毕竟没有更新.每当我拉动并且我目前不在那个分支时,有没有办法让分支更新到远程分支?如果没有,我是否正确git merge分支开发(没有任何参数)足以恢复情况?
这种情况是我在远程服务器上没有存储库,只有一个帐户。然后,我在本地运行以下命令,其中x是用户名,y是仅存在于我的本地系统上的项目名称。
git init
git remote add buckety https://x@bitbucket.org/x/y.git
git add .
git commit --message "Here we go..."
git push buckety
Run Code Online (Sandbox Code Playgroud)
现在我收到错误提示我设置远程上游。我可以这样做(--set-upstream或者-u),但是根据我的 googlearching,它已被弃用。(实际上很奇怪,控制台中的建议仍然提到它。)
我想以正确的方式做到这一点,并且我已经搜索了--track和--set-upstream-to。但是,就我所见,我在 Git 上的特定场景没有示例,并且我测试的操作因错误而失败。
我应该如何在不撤回使用已弃用选项的情况下创建远程分支?我可能想在远程创建一个跟踪分支,以便:
最好,我想在推送之前配置它,但我不确定如何配置。我无法使用结帐,因为该分支尚不存在。出于同样的原因,我不能使用set-upstream-to。
好吧,我有三台不同的计算机,我现在的配置都不同,所以我必须在每个计算机上推/拉,这非常麻烦.我想要做的是有一个配置文件,我可以用于所有三个,这将允许我执行以下操作:
git push unfuddle
git pull heroku
git push unfuddle
git pull heroku
Run Code Online (Sandbox Code Playgroud)
我是git的新手,所以我知道也许我需要heroku master或者'heroku origin`或者somethign?
这是我的配置文件现在的样子:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@heroku.com:HEROKU-APP.git
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "unfuddle"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@UNFUDDLE-APP.unfuddle.com:UNFUDDLE-APP/UNFUDDLE-APP.git
Run Code Online (Sandbox Code Playgroud)
显然,改变了git网址以保护无辜者.我应该改变什么才能轻松推动和拉出这两个回购?
在Android内核中做一些工作.我对git非常熟悉,但对repo并不是特别熟悉,所以我阅读了以下文档:http://source.android.com/source/version-control.html.从我的理解,以及试验主题分支,repo start BRANCH_NAME是相同的git checkout -b BRANCH_NAME.我的理解是正确的,还是有一些我遗漏的微妙,重要的细节?
我正在使用JGit创建一个新的git存储库,以及该文件夹中已存在的所有内容,我保存为新分支.
我在用
Git.init().setDirectory(workingDir).call();
Run Code Online (Sandbox Code Playgroud)
(在上面的语句之后创建了默认的master分支,所以我将它重命名为"backupBranch").因为主人我以后从远程主人克隆.
问题是当我按下backupbranch时,它被推动但没有我能够建立的远程跟踪.
来自终端:如果我使用git branch -vv结果是
master 5f1994c [origin/master] commitmsg
backupbranch 7a4d671 taking backup of file already in MyTests Folder..
Run Code Online (Sandbox Code Playgroud)
根据链接使现有的Git分支跟踪一个远程分支?我可以使用
git branch -u upstream/foo终端指定推送backupbranch后的任何时间.
如何使用JGit实现它.
以下是我正在使用的代码
创建backupbranch
git.branchRename().setNewName(backUpName).call();
git.add().addFilepattern(".").call();
RevCommit commit = git.commit().setMessage("taking backup of file already in MyTests Folder..").call();
Run Code Online (Sandbox Code Playgroud)
然后第一次推它.
Iterable<PushResult> pushResult = git.push().call();
Run Code Online (Sandbox Code Playgroud)
请建议我为现有分支指定远程跟踪的方式.
我在github上有一个存储库,比如testrepo.现在我想建立一个本地存储库repo,它有一个分支origin-master,我希望能够从存储库编辑东西.
repo/origin-master <--------> origin/master
Run Code Online (Sandbox Code Playgroud)
克隆工作正常:
mkdir repo && cd repo && git init
# not necessary of course:
echo "master" > master && git add master && git ci -m "master"
git remote add origin git@github.com:<username>/testrepo.git
git fetch origin
git branch --set-upstream origin-master origin/master
git checkout origin-master
# create a new file:
echo "for origin-master" > orig-master && git add orig-master && git ci -m "orig-master"
Run Code Online (Sandbox Code Playgroud)
但
git push origin
To git@github.com:<username>/testrepo.git
! [rejected] master -> …Run Code Online (Sandbox Code Playgroud) 当我克隆一个远程存储库时
git clone 'repo_url'git pullgit status我收到这条消息 -
On branch master
Your branch and 'origin/master' have diverged,
and have 41 and 20 different commits each, respectively
Run Code Online (Sandbox Code Playgroud)
当我使用时,git pull -a我没有这个问题.
远程仓库上的东西是不同步的吗?与HEAD和主人?我如何解决它?
编辑1:
当我运行git branch -a:这就是它的样子......
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/clothes
remotes/origin/dunnesBranch
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
编辑2:
在我看来,origin/master并没有指向最新的代码......然后我运行'git clone'然后运行
git reset --hard origin/master
'git pull'并尝试合并因冲突而失败...
我想......远程仓库的HEAD指向最新的提交,origin/master指向另一个不同的旧提交...我可以在运行git show时验证这一点...
我有一个本地存储库,我想推送到多个远程存储库(firstremote,secondremote).这可以通过编辑.git/config和创建remote具有多个urls 的新功能来完成.
但另外我想将我的本地分支推送到不同名称的远程分支.例如,push(mybranch)到一个名为firstbranchon firstremote和secondbranchon 的分支secondremote.
为此,我不知道如何指定不同的上游分支名称.
注意:我想用单个自动进行推送git push.
我希望在更新请求时使用git在本地跟踪Github拉取请求(例如:添加更多提交)。Github提供了一种方法,您可以通过检出只读refs / pull /来处理回购请求中的请求。
换句话说,如果有人向我的仓库提交了拉取请求,我可以在本地检索该请求:
git fetch upstream pull/123/head:123
git checkout 123
Run Code Online (Sandbox Code Playgroud)
当有人随后更新该拉取请求时,就会出现问题。我无法弄清楚如何更新本地分支,因为git pull无法更新本地副本:
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=<remote>/<branch> 123
Run Code Online (Sandbox Code Playgroud)
我试过了:
git branch --set-upstream-to=upstream/refs/pull/123/head 123
git branch --set-upstream-to=upstream/refs/pull/123 123
git merge --ff-only refs/pull/123/head
merge: refs/pull/123/head - not something …Run Code Online (Sandbox Code Playgroud) 是否有任何 git 命令可以为本地存储库中的分支(完美适用于所有分支)设置远程存储库,而无需将本地提交推送到远程?
简而言之,我想要得到的所有东西都可以通过使用 flag 来完成--all:
git push --all
也可以选择设置上游-u:
git push --all -u
但我不想推动任何提交。
期望的结果只是设置本地和远程存储库之间的链接,git push因此如果您git push将来不需要指定远程,也可以跳过--all选项。