Git常见问题和解决方法整理

  1. 401问题
    执行命令:
    git clone http://192.168.1.6:8081/git/haolexiang.git ./haolexiang2.com
    错误现象:
    Initialized empty Git repository in /root/haolexiang2.com/.git/
    error: The requested URL returned error: 401 while accessing http://192.168.1.6:8081/git/haolexiang.git/info/refsfatal: HTTP request failed
    错误原因:
    从http_code = 401 可以看出是因为authorization的问题。
    解决办法有二:
    一、在$HOME下创建 _netrc文件,在其中写入如下内容
    machine 192.168.1.6
    login your_username
    password your_password
    二、在执行命令式直接提供username和password,如下
    将git clone http://192.168.1.6/project 替换成
    git clone http://username:password@192.168.1.6/project
  2. 解决“Git Windows或Linux客户端保存用户名与密码”的问题
    在linux系统下如果没有名为“.netrc”的文件,直接创建一个即可:touch .netrc(命令)
    .netrc文件内容示例

    machine nb.tooqe.com
    login linmaogan
    password 123456
    

    最后再设置文件访问权限:

    chmod 600 ~/.netrc
    

    在Windows系统中的设置方法:
    1.对“我的电脑->右键->属性->高级->环境变量->Administrator 的用户变量->新建” 在Windows中添加一个HOME环境变量,值为%USERPROFILE%,如下图:

    2. 在“开始》运行”中打开%Home%,新建一个名为“_netrc”的文件。

    3. 用记事本打开_netrc文件,输入Git服务器名、用户名、密码,并保存。示例如下:

    machine git.cnblogs.com
    login cnblogs_user
    password cnblogs_pwd
  3. 用 git 保存空目录
    git 和 svn 不同,仅仅跟踪文件的变动,不跟踪目录。所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的。只跟踪文件变化,不跟踪目录,这么设计是有原因的。但这会带来一些小麻烦。有时候,确实需要在代码仓库中保留某个空目录。比如测试时需要用到的空目录。变通的解决办法是在空目录下存一个 .gitignore 文件。然后 git add 此目录后,相当于跟踪了 .gitignore 文件,产生的“副作用”就是这个“空”目录也纳入“跟踪”,最终的效果是可以 check out 出一个看起来空空的目录。如果有许多这样的空目录,可以用下面的命令自动补充 .gitignore 文件:
    $ find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec touch {}/.gitignore \;递归找寻当前目录下,类型为目录,且为空,也没有 .git 开头的文件,在其中用 touch 新建一个空的 .gitignore 文件。然后 git add . 之后即可。如果这些特殊文件会对测试带来干扰,那就只好在测试程序运行具体测试项目之前,先跑一段初始化目录结构的代码。另外可能还需要编写负责清理的代码。
  4. 测试机回滚到指定版本
    查看git的历史记录
    git log
    重置回到指定版本提交的状态
    git reset --hard d8672490dc6aa1bc27d969f70956dbabd57b8d8d
    放弃本地工作拷贝所做修改,更新到远端git服务器上的最新版本
    git checkout origin/master -- path/to/file
    参考资料:
    git 版本回滚操作:http://viking2439.iteye.com/blog/1543130
    Git 捷径--看完这个,就够用了:http://blog.csdn.net/littleshaka/article/details/6697039
  5. Git制作补丁包的方法
    首先,需要的工具是Git的windows客户端TortoiseGit,然后需要右键打开“显示日志”,然后按住ctrl选中2个版本,这样我们可以到处 这两个版本之间的补丁包。注意一定要先点小版本号,再点大版本号,否则就是降级补丁了。然后右键点击比较版本差异,然后在弹出的对话框中,全选里面的文件 列表,然后右键点击导出选中项到一个文件夹,这个文件夹里就是补丁包了。要注意的是里面的带删除颜色标记的都不可以选择,否则就乱了,或者分开导出,删除标记部分导出为对外宣布的此版本废弃的文件列表。
  6. 不能 fetch或 pull from Github with Eclipse (EGit) because wrong password is stored,提示not authorized
    NTjVm
    I think Preferences > General > Security > Secure Storage > Clear Passwords which clears everything. Or you can also selectively delete stuff from <user directory>\.eclipse\org.eclipse.equinox.security\secure_storage
    参考资料:http://stackoverflow.com/questions/11744224/cannot-fetch-or-pull-from-github-with-eclipse-egit-because-wrong-password-is-s
  7. Zend Studio 的Git插件push时,就算已经设置保存了用户名和密码,还是每次都要重新输入用户名和密码的解决方法
    Configure Push 的 Advanced项添加以下内容即可
    refs/heads/master:refs/heads/master
    QQ截图20130325234252
发表评论?

1 条评论。

  1. 靠,这还敢叫常见问题解决方法?你才说到几个啊。。。。

回复给 匿名 ¬
取消回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据