zoukankan      html  css  js  c++  java
  • 关于git常见的一些问题

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃

      Mark一下,最近用的比较少,担心忘记了。

      作为一个程序员,git或者SVN是必备技能,尤其是几个电脑经常切换的,用git同步代码是非常方便的一件事情。

      git代码仓库的实现主要两种方式:

      一是自己搭服务器,如果你有兴趣,完全可以自己在家里搭建一个git服务器http://www.cnblogs.com/mar-q/p/6404558.html,在服务器里部署git环境,家里放个服务器比较费电,年轻人,如果你想geek的话,可以买个树莓派,或者更geek点,找个废旧的Android手机,装个Ubuntu上去,这样就不用担心耗电了,但是如果出现三星炸弹似乎也不太好,所以你也可以租用一个阿里云的服务器,貌似学生证可以免费租用一个,而且价格也有优惠,至于怎么配置,网上很多教程,我就不演示了;

      二是使用GitHub等网站提供的远程仓库,当然代码上传到GitHub别人就能参观浏览了,如果你对自己的水平没自信,可以使用私人仓库,不过GitHub的私人仓库是收费的,肿么办呢,这里推荐大家使用国内的码云(名字起得真好),是开源中国的一个子项目,做的还是很友好的,而且支持密码登录,这样可以省去配置秘钥的步骤。

      OK,上面是我的安利,详细我就不讲了,大家可以自行百度。下面主要写给自己看的。。。

      使用git在本地创建一个项目的过程:

    $ makdir  G:python             ##创建一个项目文件夹
    $ cd G:python                  ##打开文件夹
    $ git init                        ##初始化本地git仓库
    $ git commit -m 'first commit'     ##提交更新并添加备注“first commit”

      以上为本地仓库创建提交流程

      登录码云,创建一个项目python,添加README文件,复制链接

    $ git remote add origin https://git.oschina.net/xxxxxx/python.git     ##连接远程github项目  
    $ git push -u origin master        ##将本地项目更新到github项目上去

      容易出现的问题及常用命令:

    git status                 ##查看git状态
    git pull origin master     ##pull远程仓库
    git remote                 ##查看远程仓库及其分支
    git rm origin              ##删除本地仓库            

      问题1:执行git remote add xxxx报错fatal: remote origin already exists.

      解决办法:git remote rm origin删除远程仓库的origin,然后再add添加远程仓库

      问题2:执行git push origin master报错fatal: I don't handle protocol 'git@https'

      解决办法:那是因为你用了git@github...的add方式添加了远程仓库,请通过问题1删除远程仓库再重新添加

      问题3:执行git push origin master报错error: failed to push some refs to...

      解决办法:大部分是由于github中的README.md文件不在本地代码目录中导致的, 先通过git pull --rebase origin master进行合并,再通过git push -u origin master上传

      问题4:执行git pull origin master报错fatal: refusing to merge unrelated histories

      解决办法:这是一个常见问题,要把两个不同的项目合并,需要添加一个强制命令:git pull origin master --allow-unrelated-histories

      问题5:如何添加一个.gitignore,或者如何添加一个目录(文件)到ignore中

      解决办法:一、还未添加git的项目:在项目目录下新建一个.gitignore文件(Windows无法新建命名为.gitignore,可以命名为.gitignore.,但是我更推荐使用sublime等工具来创建命名即可),在.gitignore中添加你需要过滤的文件即可。添加完成后git init即可;二、已经进行了git操作的项目,需要通过命令把相应的过滤文件缓存进行清空,清空后将代码push,同步端直接pull即可:

    git rm --cached -r [目录名]
    git commit -m 'clean ignore files'

      问题6:" refusing to update checked out branch: refs/heads/master, By default, updating the current branch in a non-bare repository is denied, because it will make the index and work tree inconsistent……"

      解决办法:这个错误是我在搭建裸仓库时碰到的,主要原因是git初始默认receive.denyCurrentBrach是拒绝接收push的,我们要向中心仓库push就需要设置它允许接收,在中心仓库输入:

    git config receive.denyCurrentBranch ignore

      关于这个bare仓库可以多谈几句,通过bare建立的.git仓库是没有工作区的,所以又称为裸仓库,通常用它作为中心仓库。


      问题7:Git add或commit出现:“ fatal: Pathspec 'xxx' is in submodule 'yyy' 异常”

      解决办法:碰到这个问题是开发某小哥自己在yyy文件夹里搞了一个git仓库,然后另一个小伙直接放到项目中了,结果两个git仓库相互作用,导致项目的git仓库无法添加xxx到项目中,OK,总之这是两个仓库,通常我们到GitHub去clone别人的代码也会碰到这类问题,需要做的很简单,删掉yyy下面的git仓库,并把当前项目git的cache中的yyy清空掉:

    git rm -rf --cached yyy
    git add .
    git commit -m 'add something'
    git push origin master

     

      一些经验分享:注意平时在多人操作同一个git仓库时候尽量用不同的分支,在合并代码的时候使用一个主分支即可,此外,如果你忘记了代码的更新状态,在push操作之前尽量先pull

  • 相关阅读:
    TCP拥塞控制机制
    C/S 与 B/S 区别
    ext4文件系统新特性
    关于TCP慢启动和拥塞避免的题
    [信息图表]移动学习 Go Study
    [时间线]Android市场的发展
    学习,只有勤奋是不够的……
    UNIX域套接字实例
    程序员的本质
    淘宝Web服务器Tengine正式开源
  • 原文地址:https://www.cnblogs.com/mar-q/p/7398267.html
Copyright © 2011-2022 走看看