我试图在BitBucket上添加一个文件到我的存储库,我遇到了麻烦.
我正在使用GIT,这就是我输入的内容
$ cd lis4368/assignments
$ git remote
$ git remote -v
$ git remote rm origin
Run Code Online (Sandbox Code Playgroud)
然后我输入(这是BitBucket告诉我进入的)
$ git remote add origin https://cpb09e@bitbucket.org/cpb09e/cpb09e.git
$ git push -u origin master
Run Code Online (Sandbox Code Playgroud)
我一直收到此错误消息:
error: src refspec master does not match any.
error: failed to push some refs to 'https://cpb09e@bitbucket.org/cpb09e/cpb09e.git'
Run Code Online (Sandbox Code Playgroud)
有人请求帮助我吗?我已经尝试了从git commit到rm -rf*的所有内容,但我无法完成任何工作.
我正在使用Gerrit Code Review设置Git,并且正在寻找一种方法,为可能不熟悉Git的用户提供必要的Git命令.
我目前用于启动新功能分支的命令基本上是(假设Gerrit是origin):
git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234
Run Code Online (Sandbox Code Playgroud)
这将启动一个新的工作包work1234从一些baseline分支,最后的推动在Gerrit中创建分支并设置上游.所以.git/config看起来像:
[branch "work1234"]
remote = origin
merge = refs/heads/work1234
Run Code Online (Sandbox Code Playgroud)
现在,Gerrit希望将新的提交审查推送到特殊的refspec,refs/for/work1234例如.我可以手动执行以下操作:
git push origin work1234:refs/for/work1234
Run Code Online (Sandbox Code Playgroud)
我想要做的是找到一些设置方法,.git/config以便plain git push将当前分支推送到Gerrit所需的远程refspec.我看过以下几个git config方面:
branch.<name>.* - 似乎没有任何特定的选项来设置push refspecpush.default- 我想要upstream在这里remote.<name>.push- 我refs/heads/*:refs/for/*在这里试过但git push总是想在这种情况下推送所有本地分支,而我只想要当前的分支如果我不能让Git的本身做到这一点,我会写一个小包装脚本,完全指定refspecs.但是,如果Git能够本地推向正确的位置会更好.
这是问题所在:
每当我这样做
$ git pull 'https://github.com/username/reponame.github.io.git'
其次是网址我没有遇到任何问题,但是当我这样做时
git pull origin master 'https://github.com/username/reponame.github.io.git'
然后是它返回的url
fatal: Invalid refspec 'https://github.com/username/reponame.github.io.git'
这是什么意思,我该如何解决它?
如何通过单个命令获取关于gerrit更改的最新refspec.我需要输出为"refs/changes/11/1234/4".是否有相同的git命令
我知道ssh命令结合gerrit查询和一些脚本可以获得这个,但想知道是否有更好的方法来做同样的事情.以下是我将用于获取refspec的ssh命令.
ssh -p $ REVIEW_SERVER_PORT $ GERRIT_REVIEW_SERVER gerrit query --format = TEXT --current-patch-set $ CHANGE_SHA | grep ref.
同样,我也想获得gerrit改变的最新补丁
我在master分支中并添加了远程分支,之后我无法将数据从本地推送到远程:
$ Git remote add master https://....git
$ Git push origin master https:// ...git
Fatal: invalid refspec 'https://...git'
Run Code Online (Sandbox Code Playgroud) 嗨,我想把东西推到特定的远程分支
我做的是当地的
git clone https://~~~.Something
cd https://~~~.Something
Run Code Online (Sandbox Code Playgroud)
我可以使用访问特定分支
git checkout origin/[branch]
Run Code Online (Sandbox Code Playgroud)
我想对我的特定分支起源/ [分支]提交一些东西但是当我尝试使用by来推送一些东西时
git push origin [branch]
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误
error: src refspec [branch] does not match any.
error: failed to push some refs to 'https://github.com/kkammo/yonseitree.git'
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题,但我找不到任何解决方案...所以PLZ帮我TT
推动对Gerrit的更改需要相当深奥的命令
git push origin HEAD:refs/for/branchname
我们编写了这个脚本,但我正在寻找一种本地化的方法.使用git强大的配置,看起来我可以预先配置它的大部分[1],这样就git push足够了......差不多.我坚持参考remote.<name>.pushrefspec.
我已经可以创建一个跟踪主题分支,以便git pull(没有其他参数)将更改从上游远程转移到我的主题分支.但是对于Gerrit,push和fetch引用refspecs是不一样的:一个从中获取(合并)refs/heads/trackbranch,但是一个推送到refs/for/trackbranch[2]
我可以配置pushrefspec remote.<name>.push,但语法非常基本:如果我放
push = refs/heads/*:refs/for/*
然后,这将尝试推动我的t-foo主题分支refs/for/t-foo.但是git有t-foo跟踪的信息trackbranch.我可以定义一个refspec,以便git自动尝试将任何内容推t-foo送到它refs/for/trackbranch吗?
我们目前正在使用脚本来执行此操作,我想我可以为每个主题分支定义推送refspec(可能通过更多脚本).我希望有一种本地的git方式,这样我们就不需要为我们的团队依赖更多的自定义内部脚本了.
[1]通过git checkout origin/upstream_branch -b topic_branch在现有分支中定义跟踪分支git branch --set-upstream-to origin/upstream_branch
[2]推动refs/for/*创建变更集以供审核.有了适当的权限,人们可以推动refs/heads/*绕过审查,但这否定了Gerrit的大部分观点.
在我的情况下,我正在跟踪其他人合并和删除的远程修补程序分支。
我已经删除了本地分支,但是当我拉取时,我仍然收到上述错误,因为我的 git 配置文件中有以下几行:
[remote "origin"]
...
fetch = +refs/heads/foo/bar:refs/remotes/origin/foo/bar
push = +refs/heads/foo/bar:refs/for/foo/bar
...
Run Code Online (Sandbox Code Playgroud)
可以通过从文件中删除这些行来解决该错误,但有没有办法从命令行执行此操作?
我正在使用许多不同的Git repos,需要合并在一起.工作流程如下所示:
git remote add fork1 ...
git remote add fork2 ...
git fetch fork1
git fetch fork2
git merge fork1/master fork2/master
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我希望能够使用标签提取每个远程的特定提交:
git merge fork1/v1.0.0 fork2/v2.1.0
Run Code Online (Sandbox Code Playgroud)
永远不应该有任何合并冲突,因为每个repo都会将其更改限制在一个子文件夹中,但即使存在,章鱼合并也会导致整个事务以原子方式失败.
问题在于标签引用.正如本博文中所述(不是我的),所有标签都被莫名其妙地转储到全局命名空间中.没有办法说fork1/v1.0.0- 只是v1.0.0,如果多个存储库具有相同的标记,它们会相互挤压.
在这个答案之后,我一直在研究使用refspec来解决这个问题.到目前为止,我已经提出以下建议:
git fetch fork1 refs/tags/*:refs/tags/fork1/*
Run Code Online (Sandbox Code Playgroud)
这具有使fork1的v1.0.0标签到达的预期效果fork1/v1.0.0.不幸的是,它也以非命名空间的形式出现v1.0.0; git fetch在标记映射部分打印出两倍的行,并且git merge v1.0.0仍然与提取的标记合并.我无法在任何地方找到关于refspecs的好文档(Git关于该主题的文档非常无用).
如何防止多个存储库中的标记相互冲突?
如果我只是愚蠢地谈论这个问题,我也会接受其他工作流建议.我有一个核心仓库,它包含共享组件和结构,以及一些模块repos,它们是核心的完整克隆,只添加了代码.我目前的计划是让每个模块都有一个指向核心的远程指针(以保持共享部分的最新状态)以及它所依赖的每个其他模块.共享位将合并,因为它们是相同的,并且模块位将合并,因为它们是独立的.我应该遵循另一种模式吗?(我避免使用子模块,因为(a)我从来没有听说过有关它们的任何好处,而且(b)共享部分是项目目录结构的顶级部分,这使得repo结构非常笨拙.)