zoukankan      html  css  js  c++  java
  • git学习再记录

    ##################################
    git学习再记录
    ##################################
    # windows 下的git
    ## msysgit

    ## git安装
    版本: msysgit 2.8.1-x64
    安装选择:install bash only
    ## 配置
    $git config -global user.name "Alison"
    $git config -global user.email "921757697@qq.com"
    这两句配置系统的全局变量
    会根据环境变量的HOME值建立.gitconfig文件
    比如HOME: D:project
    那么就会在D:project下建立一个.gitconfig文件,记录所写入的数据
    [user]
    name = alison
    email = 921757697@qq.com
    有时又会在该文件下建立.bash_history文件,记录操作的命令


    如果没有设置HOME的值,那么默认是在当前用户下的,如C:UsersAdministrator.gitconfig
    C:UsersAdministrator.bash_history

    如果install cmd模式的话,那么以git bash进入命令窗口的话,git config --global user.name "xxxx"
    提示could not lock config file,原因是在环境变量中没有找到HOME对应值(文件夹)下对应的.gitconfig文件


    ## linux下vi命令部分
    vi --进入编辑模式
    i --插入
    esc --进入command
    :wq --保存退出

    :q! -- 不保存退出



    过年时光机穿梭
    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743858312764dca7ad6d0754f76aa562e3789478044000


    # git 下的三个配置文件

    1.版本库级配置文件 .git/config
    当前git仓库下
    git config --local -读取这个文件
    2.全局配置文件 ~/.gitconfig
    当前用户下 注意:这个在环境变量中需要有HOME
    git config --global 读取这个文件
    3.系统配置文件 /etc/gitconfig ,其实是c:projectDatagitconfig
    git config --system 读取这个文件

    写于 2017-01-17 23:13


    #####################################################
    git----2
    ################################################
    git init
    ```
    git add file1.txt
    git add file2.txt
    git add file3.txt
    git commit -m "add n commit 1"
    ```
    git diff readme.txt

    >修改readme.txt之后,可以使用git diff readme.txt查看那些地方修改了

    git status

    >显示工作区的状态

    git log

    >显示提交的历史

    git log --pretty=oneline
    显示一行

    head^ 回退上一个版本号
    head^^ 回退上上一个版本号
    hea~100 回退上100个版本号
    实际使用命令是
    git reset --hard head^ 或者 git reset --hard commit_id

    cat readme.txt 查看文件的信息

    git reflog 记录每一次命令,查看命令历史


    工作区 暂存区 当前分支master 指针head

    git 管理的修改

    文件修改了
    退回之前的文件
    git checkout -- readme.txt

    文件修改了,并add了
    先回退stage区的文件, git reset head readme.txt
    在回退工作区的文件, git checkout -- readme

    文件修改, 并add、commit了
    版本回退


    github 上不要存放敏感信息 涉密的文件不要上传
    可以上传一些练习的项目和笔记

    创建远程库

    $ssh-keygen -t rsa -C "921757697@qq.com"
    创建SSH
    在github上add ssh key
    如果添加了readme.md

    把已有的本地仓库与远程的库进行关联
    git remote add origin git@server-name:path/repo-name.git      

    origin表示远程仓库的别名。
    git remote add origin git@github.com:GavinAlison/gittest.git

    出现git errorL failed to push some refs to
    解决方法:git pull --rebase origin master
    原因:pull= fetch+merge

    把本地的内容推送到远程, 用git push
    git push -u origin master
    注意:-u 是第一次使用,是把本地的master与远程的master进行关联
    以后就可以直接使用git push origin master

    判断本机是否生成了git ssh key的方法
    cd ~/.ssh

    克隆远程git
    git clone git@github.com:GavinAlison/valison.git

    查看分支 git branch
    创建分支 git branch name
    切换分支 git checkout name
    创建+切换分支 git checkout -b name
    合并某分支name到当前分支 git merge name
    删除分支 git branch -d name

    .gitignore


    #############################
    ###3
    ##########################

    出现错误:not-fast-forward
    原因:git仓库已经有一部分代码,所以他不允许直接把你的代码覆盖上去,
    解决:1. 强推 git push -f
    2. git pull (等价于 git fetch 和 git merge)

    出现错误:up-to-date
    git 服务器仓库是空的,不包含任何一个分支,因此刚开始push时需要指定一个。
    git remote -v //查看自己remote端名称为

    建议:不适用

    错误:$ git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git
    提示出错信息:fatal: remote origin already exists.
    解决办法如下:
    1、先输入$ git remote rm origin
    2、再输入$ git remote add origin git@github.com:GavinAlison/gitdemo.git 就不会报错了!
    3、如果输入$ git remote rm origin 还是报错的话,
    error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件的内容
    4、找到你的github的安装路径etc
    5、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!


    如果输入$ ssh -T git@github.com
    出现错误提示:Permission denied (publickey).
    因为新生成的key不能加入ssh就会导致连接不上github。
    解决办法如下:
    1、先输入$ ssh-agent,再输入$ ssh-add ~/.ssh/id_key,这样就可以了。
    2、如果还是不行的话,输入ssh-add ~/.ssh/id_key 命令后出现报错
    Could not open a connection to your authentication agent.

    解决方法是key用Git Gui的ssh工具生成,这样生成的时候key就直接保存在ssh中了,不需要再ssh-add命令加入了,
    其它的user,token等配置都用命令行来做。
    3、最好检查一下在你复制id_rsa.pub文件的内容时有没有产生多余的空格或空行,
    有些编辑器会帮你添加这些的。
    4、把你生成的id_key.pub添加到github上

    如果输入$ git push origin master
    提示出错信息:error:failed to push som refs to .......
    解决办法如下:
    1、先输入$ git pull origin master //先把远程服务器github上面的文件拉下来
    2、再输入$ git push origin master
    3、如果出现报错 fatal: Couldn't find remote ref master或者fatal: 'origin' does not appear to be a git repository以及fatal: Could not read from remote repository.
    4、则需要重新输入$ git remote add origingit@github.com:GavinAlison/gitdemo.git


    使用git在本地创建一个项目的过程
    $ makdir ~/hello-world //创建一个项目hello-world
    $ cd ~/hello-world //打开这个项目
    $ git init //初始化
    $ touch README
    $ git add README //更新README文件
    $ git commit -m 'first commit' //提交更新,并注释信息“first commit”
    $ git remote add origin git@github.com:GavinAlison/hello-world.git //连接远程github项目
    $ git push -u origin master //将本地项目更新到github项目上去

    gitconfig配置文件
    Git有一个工具被称为git config,它允许你获得和设置配置变量;
    这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置:
    1./etc/gitconfig 文件:
    包含了适用于系统所有用户和所有库的值。
    如果你传递参数选项’--system’ 给 git config,它将明确的读和写这个文件。

    2.~/.gitconfig 文件 :
    具体到你的用户。你可以通过传递--global 选项使Git 读或写这个特定的文件。

    3.位于git目录的config文件 (也就是 .git/config):
    无论你当前在用的库是什么,特定指向该单一的库。
    每个级别重写前一个级别的值。
    因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。

    在Windows系统中,Git在$HOME目录中查找.gitconfig文件
    (对大多数人来说,位于C:Documents and Settings$USER下)。它也会查找/etc/gitconfig,尽管它是相对于Msys 根目录的。
    这可能是你在Windows中运行安装程序时决定安装Git的任何地方。


    配置相关信息:
    2.1 当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。
    这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:
      $ git config --global user.name "John Doe"
      $ git config --global user.email johndoe@example.com

    2.2 你的编辑器(Your Editor)
      现在,你的标识已经设置,你可以配置你的缺省文本编辑器,Git在需要你输入一些消息时会使用该文本编辑器。
    缺省情况下,Git使用你的系统的缺省编辑器,这通常可能是vi 或者 vim。
    如果你想使用一个不同的文本编辑器,例如Emacs,你可以做如下操作:
      $ git config --global core.editor emacs

    2.3 检查你的设置(Checking Your Settings)
      如果你想检查你的设置,你可以使用 git config --list 命令来列出Git可以在该处找到的所有的设置:
      $ git config --list
    你也可以查看Git认为的一个特定的关键字目前的值,使用如下命令 git config {key}:
      $ git config user.name

    2.4 获取帮助(Getting help)
      如果当你在使用Git时需要帮助,有三种方法可以获得任何git命令的手册页(manpage)帮助信息:
      $ git help <verb>
      $ git <verb> --help
      $ man git-<verb>
      例如,你可以运行如下命令获取对config命令的手册页帮助:
      $ git help config

    提示信息:
    Cannot push to github, ssh: Could not resolve hostname
    解决方法:
    1. rm -rf .git //删除.git仓库
    2. git init . //注意.号
    3. git remote add origin git@github:GavinAlison/valison.git
    //本地仓库关联远程仓库,就是在本地添加remote "origin" ,在.git/config 文件中
    4. git commit -m --allow-empty -m "first commit" //允许为空的提交
    5. git push origin master //把本地文件传递到远程 branch "master"--> remote "origin"

    注意,如果有不同的,先从远程fetch下来

    fatal: HttpRequestException encountered解决方法 

    无论是push前先将远程仓库pull到本地仓库,还是强制push都会弹出这个问题。

    网上查了一下发现是Github 禁用了TLS v1.0 and v1.1,必须更新Windows的git凭证管理器,才行。
    https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases/tag/v1.14.0

    参考:

    1. 创建SSH key 的方法: http://blog.csdn.net/makenothing/article/details/8450417

     2. Git链接到自己的Github(1)简单的开始: (https://www.cnblogs.com/plinx/archive/2013/04/08/3009159.html

     

  • 相关阅读:
    c#redis使用
    不安全的HTTP方法(渗透实验)
    arguments.callee弃用与webuploader
    多线程系列1:经典卖票
    终于确定了系统lsass.exe占用cpu的根本原因了,速度来看一看!![转载]
    edit响应键盘的“咚咚”声音去掉
    delphi资源文件制作及使用详解
    MySQL server has gone away错误的解决办法
    MySQL server has gone away的解决方法
    MySQL
  • 原文地址:https://www.cnblogs.com/alisonGavin/p/7688377.html
Copyright © 2011-2022 走看看