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
    得之我幸,不得我再努力~
  • 相关阅读:
    LeetCode 32. 最长有效括号(Longest Valid Parentheses)
    LeetCode 141. 环形链表(Linked List Cycle)
    LeetCode 160. 相交链表(Intersection of Two Linked Lists)
    LeetCode 112. 路径总和(Path Sum)
    LeetCode 124. 二叉树中的最大路径和(Binary Tree Maximum Path Sum)
    LightGBM新特性总结
    sql service 事务与锁
    C#泛型实例详解
    C# 中的委托和事件(详解)
    C# DateTime日期格式化
  • 原文地址:https://www.cnblogs.com/lulubai/p/6001334.html
Copyright © 2011-2022 走看看