每当我尝试将更改提交到我的github repo时,我都会收到此错误.
要git@github.com:antarr/3skeleton.git
![拒绝]主 - >主(非快进)
错误:未能将某些引用推送到'git@github.com:antarr/3skeleton.git'
为了防止您丢失历史记录,非快进更新被拒绝
在再次按下之前合并远程更改(例如'git pull').
有关详细信息,请参阅"git push --help"中的"关于快进的注意事项"部分.
如果我先做git pull,它会更改我机器上的一些文件.哪种失败的目的.
在服务器上,/ home/git/xxx/hooks/post-receive:
#!/bin/bash
cd /var/www/xxx
git pull
Run Code Online (Sandbox Code Playgroud)
在服务器上,/ var/www/xxx是这样创建的:
cd /var/www
git clone /home/git/repositories/xxx.git
Run Code Online (Sandbox Code Playgroud)
当我在客户端上运行"git push"时,收到以下消息:
remote: fatal: Not a git repository: '.'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我写了一个小脚本来自动提取/提交/推送一些个人数据.这个脚本在我的笔记本电脑上很好用(版本1.8.3.2-1),但在我的服务器上,git pull命令失败了,信号13.我运行的是1.7.9.5-1版本(这些都是ubuntu,但是服务器是12.04.4 LTS vs 13.10在笔记本电脑上),我使用ppa:git-core repo将git更新为1.9.0-1~ppa0~precision1.这仍然会给我的脚本带来同样的问题.可能的复杂性是,笔记本电脑从服务器上的裸仓库通过ssh拉出,而服务器从同一个裸仓库(到其他地方的工作副本)拉出但不使用ssh,它只有本地路径.
我可以使用以下命令在终端中重现该问题:
> git pull origin master | read msg; echo ${msg}
First, rewinding head to replay your work on top of it...
error: git-pull died of signal 13
Run Code Online (Sandbox Code Playgroud)
这似乎是获取提交并检查它,但不更新主分支并使repo离开分支:
> git status
# Not currently on any branch.
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
切换回master会发出警告:
> git checkout master
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7220b8f Commit message
If you want to …Run Code Online (Sandbox Code Playgroud) 我一直在研究不同的存储库,并注意到一种不同的行为:在一个项目中,当我将其他人的工作拉入我的工作时,我只是在我的历史记录中得到了他们的提交,另一个git在我拉动时创建了一个自动合并提交.在这两种情况下都没有冲突,并且两个存储库都是在同一台服务器上的裸存储库.
是什么原因导致git在pull上添加或不添加此自动合并提交?
我正在尝试使用SSH如下方法从命令行上的特定分支中提取:
git checkout hotfix/DEFECTS-001
git pull ssh://git@stash.****.net:7999/project/project.git
Run Code Online (Sandbox Code Playgroud)
这样做是从 repo 的“master”分支中拉取,但我想从我目前使用的名为“ DEFECTS-001”的分支中拉取,使用 ssh。据我所知,我无法使用 SSH URL 指定分支。从 ssh URL 可以看出我正在使用 stash
使用“ git pull origin hotfix/DEFECTS-001”确实可以实现这一点,但它使用 HTTP 而不是 SSH
我如何做到这一点?
假设远程br1仓库上有远程分支机构检查,master本地仓库上有分支机构.
命令1:如果我做了一个" git pull origin br1:br1"它将远程拉br1入本地br1,并显示:
9188a5d..97d4825 br1 -> br1
9188a5d..97d4825 br1 -> origin/br1
命令2:如果我只做一个" git pull",它会将远程拉br1入本地master,但它只显示以下内容:
9188a5d..97d4825 br1 -> origin/br1
我期待它也会显示" br1 -> master" 这样的东西.为什么没有表现出来?
" br1 -> br1" 是否意味着将远程拉br1入本地br1?
这是什么br1 -> origin/br1意思?
更新:在VonC的帮助下,我发现了以下内容:
git pull更新所有跟踪分支.遥控器上的br1 -> origin/br1装置br1被拉入本地跟踪分支origin/br1.
git pull origin br1:br1将远程拉br1入本地br1并进入origin/br1.然后,之后的消息意味着相同的更改集也被拉入当前签出的分支(消息是 …
"隐式非冲突合并后,Vim打开请求提交消息"似乎是一个相对常见的问题,似乎是一个相对简单的答案:git config --global core.mergeoptions --no-edit.
不幸的是,这对我或我班上其他15人中的至少8人来说似乎没有用,而且我们的教练也有点困惑(尽管公平地说他没有时间去研究它快速谷歌搜索或两个).这不是一个大问题,因为你可以轻松地逃脱:q,但我们想知道答案,我的谷歌搜索返回Stack Overflow问题--no-edit作为解决方案(通过核心或每次完成拉动).
我的.gitconfig(减去个人信息):
[mergetool "kdiff3"]
path = "/c/Program Files/KDiff3/kdiff3.exe"
[merge]
tool = kdiff3
[core]
mergeoptions = --no-edit
[mergetool]
keepBackup = false
Run Code Online (Sandbox Code Playgroud)
但是:
.
有没有人知道为什么修复不起作用(即:"雅顿在拼写'选项'"中愚蠢),或者是否有更好/更可靠的方法来解决这个问题?
通常,git标签是对提交的固定引用.但有时它们被用来纪念某些事件(last-build,base-line,等),他们经常改变.
我有一个脚本,从参考存储库刷新那种"浮动"标签.
git fetch --tags --force
Run Code Online (Sandbox Code Playgroud)
并从一个分支拉出:
git pull origin <mybranch>
Run Code Online (Sandbox Code Playgroud)
我知道很多git用户警告使用浮动标签,但我不得不处理这个问题.我的问题是:
如果分支由其中一个浮动标记标记...命令的执行顺序是否重要?
我担心git pull当它们存在于本地时不会刷新标记,并且如果它首先运行,它可能与所有标记的引用一起工作.
git pull有一个--force选项,但该选项的帮助--no-tags解释了默认行为:
默认情况下,指向从远程存储库下载的对象的标记将被提取并存储在本地.
这是否意味着应首先下载对象以便能够刷新标签?在那种情况下git pull应该先行.
哪个订单正确?
据我所知,藏匿处是本地的,并不打算被推到远程回购.
有时我的工作还没有准备好,但是我必须以某种方式与其他工作人员分享,或者我自己从不同的工作站访问.
使用git模拟某种"远程存储"或使用git进行像我刚刚描述的工作流程的最佳方法是什么?
git ×10
git-pull ×10
git-merge ×2
git-push ×2
git-remote ×2
bash ×1
git-branch ×1
git-config ×1
git-fetch ×1
git-stash ×1
githooks ×1
github ×1
shell ×1
ssh ×1
vim ×1