zoukankan      html  css  js  c++  java
  • github踩坑之git命令收集与整理(windows)

    最近开始又捡起git,第一家公司用的就是git,一直掌握的也不深刻,就知道常用的几个命令,虽然现在用svn,但是觉得git还是不能丢,遂又捡起来了。先总结一部分目前练习用到的,慢慢填补吧~

    github荒废太久了,偶尔也需要拔拔杂草什么的,而且最近学react,正好可以上传些demo。git都是新下的,而且以前用的是unix系统操作,现在用windows操作相当于重头再来了。

    首先,git安装好了就打开cmd,输入git/git --version试一下。

    接下来可以进行配置啦~(设置全局的用户名与email)

    git config --global user.name "xxx"
    git config --global user.email "xxx"
    git config --global push.default simple

    使用git需要进行推送,则最后一步一定要进行配置。git 2.0更改push.default为simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。

    我在github有新建一个库,所以直接进入本地存放git项目的目录,git init初始化下(以便git对该目录下文件进行版本控制),直接git clone xxx.git了(即把我github上的库克隆到本地,这个目录在github上的项目里可以看到~)

    把想加的文件添加到文件夹里,执行git add 文件夹/ 

    git add 主要用于把我们要提交文件的信息添加到暂存区中

    git add <path> 把<path>添加到索引库(<path>可以是文件也可以是目录)

    git add . 把工作时的所有变化提交到暂存区,包括内容修改(modified)和新文件(new),但不包括删除的文件

    git add -u 仅监控已经add的文件(即tracked文件),他会将被修改的文件存到暂存区,但不会提交新文件(untracked)

    git add -A 提交所有变化到暂存区

    git status 可以时刻看见仓库状态,有什么文件被修改被删除等等。。。

    但素,出问题了!!warning IF will be replaced by CRLF 查了下,windows中的换行符为 CRLF, 而在Linux下的换行符为LF,所以会出现提示。

    解决办法:http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf

    即:(设置换行符转换)

    git config core.autocrlf false

    问题解决啦~可以正常add啦,下一步git commit(将暂存区的内容添加到本地仓库中)

    git commit -m <message> 将添加到暂存区的内容,进行提交

    git commit -a -m <message>  能提交修改过但没有放到暂存区的内容

    我用的是git commit -m 'add react demo',but又粗错啦!! error:xxx did not match any file(s) known to git 说是不匹配呢

    解决办法:据说windows下应该换成双引号,换了试下,果然好用,提交完成。

    git push(将本地内容提交到远程),!! No configured push destination 原来是没有配置远程地址,好的,配吧(解决办法):

    git remote add origin git@github.com:xiabiande/object.git 然后git push。。。你没猜错又遇到问题了,permission denied (publickey) 没有权限

    遂查之~,(参考:http://blog.itpub.net/25851087/viewspace-1262468/)要生成密钥上传github并进行网络连通性测试  ssh-keygen -t rsa -C "xiabiande@xx.com" ,如果此时说该命令不是内部命令,就去 某盘/git/usr/bin/ 找到ssh-keygen.exe 并把该路径粘贴到配置环境变量的系统变量path的最后(别忘了前面加;)

    再使用刚才的命令后,生成两个文件id_rsa(私钥)和id_rsa.pub(公钥),将id_rsa.pub的内容上传到github的ssh-keys管理中,最好用笔记本打开,如果上传时说你没有以ssh-开头什么的就说明,公钥的文件格式被你改变了,所以最好用笔记本打开{血与泪的教训,科科} 接下来,执行ssh -T git@github.com 进行本地与网站的连接测试。嘿~我成功的连上了,连上了~并且和我打了招呼:hi~xx!You've successfully authenticated, but GitHub does not provide shell access ,呵呵,没有提供权限,好吧

    解决方法:git remote set-url origin git@github.com:xiabiande/object.git 重新加一下远程地址 (http://stackoverflow.com/questions/26953071/github-authentication-failed-github-does-not-provide-shell-access)

     ok,这时候还是不可以push的,因为提示你,要先pull才可以,git pull origin master 将远程的主分支down下来,正常这句话还可以合并本地内容,但是 !!fatal:refusing to merge unrelated histories 说是拒绝合并不相关的历史,确实本地是新加的内容还重未和线上连接过。

    解决办法:git pull origin master --allow-unrelated-histories 就是告诉系统我允许合并不相关历史的内容。

    git push 系统提示 git push --set-upstream origin master  因为是第一次push,所以按它提示的来就好啦。

    耶耶,终于可以push啦,我的小demo,我的天~hoho,我真是太棒了【此刻,想配一张陈意涵阳光灿烂的笑容脸】

    其实只要有耐心,没什么解决不了的困难嘛~

    /* 2017/01/10更 */

    补充:windows用户请注意,windows用户请注意

      1. 如果你在操作commit时遇到pathspec XXX did not match any files commit这个问题,git commit后面的提交信息要用双引号啊!!(或者你可以调一下全局的core.autocrlf false)

    git config --global core.autocrlf false

      2.如果你在add时遇到unable to stat ... Filename too long 这个问题时,windows真的挺坑的,windows的限制是不一样的啦,详情:http://stackoverflow.com/questions/22575662/filename-too-long-in-git-for-windows

    git config --system core.longpaths true
    得之我幸,不得我再努力~
  • 相关阅读:
    假期十一
    假期十
    假期九
    假期八
    假期七
    假期六
    假期五
    假期四
    2020.02.11
    2020.02.10
  • 原文地址:https://www.cnblogs.com/lulubai/p/6001334.html
Copyright © 2011-2022 走看看