git使用经验(一)

在使用Git Push代码到数据仓库时,提示如下错误:

[remote rejected] master -> master (branch is currently checked out)

错误原型

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 ‘warn‘ in the remote repository to allow pushing into

remote: error: its current branch; however, this is not recommended unless you

remote: error: arranged to update its work tree to match what you pushed in some

remote: error: other way.

remote: error:

remote: error: To squelch this message and still keep the default behaviour, set

remote: error: ‘receive.denyCurrentBranch‘ configuration variable to ‘refuse‘.

To [email protected]:/var/git.server/.../web

! [remote rejected] master -> master (branch is currently checked out)

error: failed to push some refs to ‘[email protected]:/var/git.server/.../web‘

解决办法:

这是由于git默认拒绝了push操作,需要进行设置,修改.git/config文件后面添加如下代码:

[receive]
denyCurrentBranch = ignore

无法查看push后的git中文件的原因与解决方法

在初始化远程仓库时最好使用

git --bare init

而不要使用:git init

git init 和git --bare init 的具体区别:http://blog.haohtml.com/archives/12265

=================================================

如果使用了git init初始化,则远程仓库的目录下,也包含work tree,当本地仓库向远程仓库push时, 如果远程仓库正在push的分支上(如果当时不在push的分支,就没有问题), 那么push后的结果不会反应在work tree上,  也即在远程仓库的目录下对应的文件还是之前的内容。

解决方法:

必须得使用命令 git reset --hard 才能看到push后的内容.

研究了很久不得其解,然后找到一条命令凑合着能用了:

登录到远程的那个文件夹,使用

git config --bool core.bare true

就搞定了。

贴一段参考文章:

Create a bare GIT repository

A small rant: git is unable to create a normal bare repository by itself. Stupid git indeed.

To be precise, it is not possible to clone empty repositories. So an empty repository is a useless repository. Indeed, you normally create an empty repository and immediately fill it:

git init git add .

However, git add is not possible when you create a bare repository:

git --bare init git add .

gives an error "fatal: This operation must be run in a work tree".

You can‘t check it out either:

Initialized empty Git repository in /home/user/myrepos/.git/ fatal: http://repository.example.org/projects/myrepos.git/info/refs not found: did you run git update-server-info on the server? git --bare init git update-server-info # this creates the info/refs file chown -R <user>:<group> . # make sure others can update the repository

The solution is to create another repository elsewhere, add a file in that repository and, push it to the bare repository.

mkdir temp; cd temp git init touch .gitignore git add .gitignore git commit -m "Initial commit" git push <url or path of bare repository> master cd ..; rm -rf temp

时间: 2024-12-13 02:22:42

git使用经验(一)的相关文章

git 使用经验

1, 切换分支: git  checkout  <分支名字>: git checkout clhandle 2,查看有哪些分支: git  branch ; 查看远端有哪些分支: git branch -r 3,拉取远端分支:(本地没有该分支的时候???) git fetch origin cl_handle: clhandle; 注意: fetch  将远端拉到本地 但是 不合并: origin 表示远端, cl_handle 是远端的分支名 clhandle 如果本地没有这个分支 就会创建

Git使用经验总结

1. Git如何获得两个版本间所有变更的文件列表 用"git log"或者"git log|grep <name>"查到关注的版本的哈希值,然后 git diff dd1b3f4d24e9bc8813e0ddb68396684aa2cd684d 83ca581804524f0d271c82779b102bb20cca32ce --stat 或者 git diff dd1b3 83ca5 --stat 前4-6位就可区分 2. 典型的git checkou

GIT使用经验

不要用git pull,用git fetch和git merge代替它. git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种类型分支的区别和使用方法.当然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方.看起来git pull的用法会使你吃惊,简单看一下git的使用文档应该就能说服你. 将下载(fetch)和合并(merge)放到一个命令里的另外一个弊端是,你的本地工作目录在未经确认的情况下就会被远程分支更新.当然,除非你关闭所有的安全选项,否则gi

Git详解之三 Git分支

相关文档 — 更多 Git 基础培训.ppt GIT 使用经验.ppt GIT 介绍.pptx GIT 分支管理是一门艺术.docx Eclipse上GIT插件EGIT使用手册.docx git/github学习笔记.doc git 版本控制系统.docx Git开发管理之道.pdf Git内部培训资料.pptx Git权威指南-第5篇-第32章-Gerrit.pdf Gitolite 构建 Git 服务器.pdf 版本控制之道 - 使用Git.pdf Git使用指南(中文).pdf Git-C

贯穿Git使用

>本文总结于自己在工作中对Git使用经验的总结,重点是使用.对于Git相关理论网上很多,可与SVN作对比由此深入,这里简单指出最重要的几点,有兴趣可深入. <p>git checkout -b Lxf_Local_IPPM origin/16B_Featcher_IPPM<p>git pull -r origin 16B_Featcher_IPPM<p>git clean -fdx<p>git checkout 16B_Featcher_IPPM<

git 使用那些事儿

git使用经验总结 一.克隆项目 1.通过GitLab查询 项目  的地址 2.克隆项目(gitAddr需从gitLab中查得) git clone gitAddr 3.切分支 切到dev分支 git checkout dev 4.转换为eclipse项目 mvn eclipse:eclipse 5.导入到eclipse中 二.提交流程 1. 拉代码(dev是分支名称.本命令,在分支目录下执行) git pull origin dev begin if [正常] 2. 提交所有变化 到 暂存区

Git内部原理探索

目录 前言 Git分区 .git版本库里的文件/目录是干什么的 Git是如何存储文件信息的 当我们执行git add.git commit时,Git背后做了什么 Git分支的本质是什么 HEAD引用 参考 @ 前言 洞悉技术的本质,可以让我们在层出不穷的框架面前仍能泰然处之.用了那么久的 Git,不懂点内部原理,那可不行!懂点原理可以让我们遇到问题的时候能够更好更快的理清解决问题的思路.博客原文 要真正读懂本文可能需要以下基础: 有 Git 使用经验 对 Git 的三个分区有所了解 熟悉常用的

指导思想

告诉我,我可能转眼就忘:较我,我会牢记在心:参与其中,我会心领神会.--本杰明·富兰克林 不论读多少书,学习知识的最佳方式是将其应用于实践. 比如:阅读了<git使用经验(已读70%)>,仅需要阅读其中的一部分知识,其他的部分需要结合实践:因为是工作的需要,不能将大部分时间都用在学习上,而忽略了业务水平的提升. 教训:把工作做得尽善尽美,就得学会找到所有可能失败的原因:如果规避了大部分可能失败的行为和局面,那么你成功的概率将大大增加.比如在工作中,学会去在"事前"验证可能的

Eclipse的Git工具EGit的使用经验

由于项目需要,简单看了一下这个工具的使用.发现在最新版的Eclipse Luna中似乎已经集成这个工具了,对于旧一点版本的Eclipse,可以在:http://www.eclipse.org/egit/ 查看安装方法. 安装好并重启Eclipse之后,我们可以切换到Git视图,在这里可以将我们已经在公开或私有GIt网站上的Repository Clone到本地.基本步骤都很简单,到了"Local Destination"这一步的时候,有些设置需要注意,假设我们只使用如下图所示的默认设置