我是一个Git新手.我最近将一个Rails项目从Subversion移到了Git.我按照这里的教程:http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/
我也在使用unfuddle.com来存储我的代码.我在火车上下班时使用Mac笔记本电脑进行更改,然后在使用以下命令进行网络连接时将它们推到一起:
git push unfuddle master
Run Code Online (Sandbox Code Playgroud)
我使用Capistrano进行部署,并使用master分支从unfuddle存储库中提取代码.
最近,当我在笔记本电脑上运行"git status"时,我注意到以下消息:
# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么.我以为我的笔记本电脑是原产地...但不知道我最初是从Subversion拉出来还是推送到Unfuddle,这是导致消息显示的原因.我怎么能够:
我的mac正在运行Git版本1.6.0.1.
当我git remote show origin按照dbr的建议运行时,我得到以下内容:
~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin
fatal: '/Users/brian/Projects/GeekFor/gf/.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
当我git remote -v按照Aristotle Pagaltzis的建议跑步时,我得到以下信息:
~/Projects/GeekFor/geekfor 10:33 AM $ git …Run Code Online (Sandbox Code Playgroud) 目前我有
SSH服务器repo是最新的repo(生产站点)所以我从那里做了一个Git克隆到本地.然后我试着去做git pushGitHub.
一切都很好,但后来它说了一些关于filename.gz对于GitHub来说太大了.我不需要这个文件所以我运行了几个Git命令来从Git缓存中删除它然后推回到SSH服务器.
我没有在本地看到大文件,但它仍然在SSH服务器上,即使没有git diff返回任何内容并且git push返回"Everything is latest-date" - 尽管当我尝试推送时,文件在本地仓库中不可见GitHub我仍然得到它的错误
remote:错误:文件fpss.tar.gz是135.17 MB; 这超过了GitHub的文件大小限制为100 MB
我按照GitHub帮助中列出的 "修复问题"中的步骤进行了操作,那么这应该不够吗?
当文件不在本地或在git status/diff/push中列出时,文件如何仍然在以太网中?
我想强制推送,例如,我的标签1.0.0到我的远程master分支.
我现在正在做以下事情:
git push production +1.0.0:master
Run Code Online (Sandbox Code Playgroud)
我想强制推送,因为我关心的是1.0.0标签内的代码被推送到master远程存储库的分支.
我究竟做错了什么?
当我通过SSH连接到我的Git存储库并执行的服务器时git branch -l,我也看不到master列出的分支.
git tag -l从远程Git存储库内部运行后,我看到它master已列出,这意味着当我运行以下代码时:
git push production 1.0.0:master
Run Code Online (Sandbox Code Playgroud)
它实际上推送了标签并创建了一个名为 master而不是新分支的标签.
我想基本上将标签的内容推1.0.0送到master远程Git存储库的分支.
我的git repo有问题.在我推送到服务器的最后几天,我收到这样的消息:"自动打包存储库以获得最佳性能",它似乎没有消失并返回shell.
我也尝试检查一个新的分支,然后在我以前的分支上做一个rebase,然后git gc删除未使用的历史对象,然后进行推送,但仍然显示此消息.请让我知道我的回购发生了什么.
我想更改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)
但都没有奏效.
我有一个远程裸存储库hub.我只在master分公司工作.下面这条错误消息的最后一句让我想知道:我如何找出哪个是"当前分支的默认配置遥控器"?我该怎么设置它?
[myserver]~/progs $ git remote -v
hub ~/sitehub/progs.git/ (fetch)
hub ~/sitehub/progs.git/ (push)
[myserver]~/progs $ git branch -r
hub/master
[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master
[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
Run Code Online (Sandbox Code Playgroud) 我已经解决了一些合并冲突,然后提交尝试推送我的更改并收到以下错误:
c:\Program Files (x86)\Git\bin\git.exe push --recurse-submodules=check "origin" master:master
Done
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or …Run Code Online (Sandbox Code Playgroud) 在远程服务器中,我设置了一个post-receive hook,以便对我的存储库进行git checkout:
#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f
Run Code Online (Sandbox Code Playgroud)
但是当我从本地机器推送到服务器中的git存储库时,我收到以下错误消息:
remote: error: unable to unlink old '<file>' (Permission denied)
Run Code Online (Sandbox Code Playgroud)
这出现了很多次,几乎每个文件都有一条错误消息.
但是我有一个README.txt文件,我可以使用git更改,这是它的权限:
-rw-r--r-- 1 <serverusername> <serverusername> 2939 Aug 2 10:58 README.txt
Run Code Online (Sandbox Code Playgroud)
但是具有完全相同的所有者和相同权限的其他文件会给我这个错误.
在另一个网站的另一个本地存储库中,我将本地计算机用户名作为所有者的文件,当我推送到远程服务器时,它尊重文件的远程服务器所有者,并像魅力一样工作.
显然它似乎与权限相关的错误,但我找不到修复它的方法,有什么建议吗?
我一直想知道是否有一种简单的方法来推送和拉出具有不同名称的远程分支的本地分支,而不必始终指定这两个名称.
例如:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Run Code Online (Sandbox Code Playgroud)
现在如果有人更新remote_branch_name,我可以:
$ git pull
Run Code Online (Sandbox Code Playgroud)
一切都是合并/快进的.但是,如果我在当地的"newb"中进行更改,我不能:
$ git push
Run Code Online (Sandbox Code Playgroud)
相反,我必须:
% git push origin newb:remote_branch_name
Run Code Online (Sandbox Code Playgroud)
看起来有点傻.如果git-pull用于git-config branch.newb.merge确定从何处拉出,为什么不能git-push有类似的配置选项?有没有一个很好的捷径,或者我应该继续漫长的路?
我已经接受并合并了github上的Pull Request,现在我不能再提交我的提交了.
消息是:
! [remote rejected] master -> master (push declined due to email privacy restrictions)
error: failed to push some refs to 'git@github.com:FranckFreiburger/vue-resize-sensor.git'
git did not exit cleanly (exit code 1) (3838 ms @ 12/04/2017 21:23:11)
Run Code Online (Sandbox Code Playgroud)
我现在应该怎么做 ?