分类: 项目管理
2014-06-08 16:06:49
Git: push 出错的解决 master-> master (branch is currently checkedout)
在使用GitPush代码到数据仓库时,提示如下错误:
[remote rejected]master -> master (branch is currently checkedout)
remote: error: refusing to update checked out branch:refs/heads/master
remote: error: By default, updating the current branch in anon-bare repository
remote: error: is denied, because it will make the index and worktree inconsistent
remote: error: with what you pushed, and will require 'git reset--hard' to match
remote: error: the work tree to HEAD.
remote: error:
...
这是由于git默认拒绝了push操作,需要进行设置,修改.git/config添加如下代码:
[receive]
denyCurrentBranch = ignore
或执行:git config receive.denyCurrentBranch ignore 达到相同作用。
在初始化远程仓库时最好使用 git--bare init 而不要使用:gitinit
如果使用了gitinit初始化,则远程仓库的目录下,也包含worktree,当本地仓库向远程仓库push时,
如果远程仓库正在push的分支上(如果当时不在push的分支,就没有问题), 那么push后的结果不会反应在worktree上, 也即在远程仓库的目录下对应的文件还是之前的内容,必须得使用git reset--hard才能看到push后的内容.
2. git pull出现如下错误:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.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
See git-pull(1) for details.
If you often merge with the same branch, you may want to
use something like the following in your configuration file:
[branch "master"]
remote =
merge =
[remote "
url =
fetch =
See git-config(1) for details.
解决:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
git diff这个命令能比较两个提交之间的差异,使用–name-only参数可以只显示文件名。例如:
$ git diff 608e120 4abe32e --name-only
git stauts 其中modify显示的就是当前本地修改的内容
untracked表示新文件
$ git checkout .
这条命令把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子.
注意:在使用git checkout 时,如果其对应的文件被修改过,那么该修改会被覆盖掉。