zoukankan      html  css  js  c++  java
  • Git 版本库 之使用

    一、git 使用中的错误                                                                                                                   

      ****错误信息:

       1、报错凭据不是命令:见下图

       如果出现以上的报错,表示曾经使用的git config --global user.name 或者user.email  登录过,现在又使用了别的账号,产生了冲突

      解决1:删除 用户家目录下的 .gitconfig 文件,然后重装git

      解决2:删除用户家目录下的 .gitconfig 文件,然后删除控制面板 ->用户账号 --> 管理windows凭据 -> 普通凭据

         删除github 凭据,然后再往下生成凭据 


    git config --unset-all credential.helper git config --global credential.helper credential-wincred

     二、git命令的基本使用:                                                                                                            

      1、添加,删除远端仓库地址:

    git remote set-url origin "https://..."
    git config remote.origin.url "https://..."

    git remote add origin git@github:bx_reader/bx-reader-api.git <-----简单粗暴,直接这样就可以设置origin 的远端仓库
    git remote rm origin   <---- 删除origin 

       

      2、本地拉取:

    git pull orgin master    <-----拉取远程仓库,到本地的maser分支

    git fetch

      

      3、提交

    git add . 添加本地的所有文件到本地仓库
    
    git add dev.py  添加指定的文件dev.py 到本地仓库
    
    git commit -am '测试'   提交到缓冲区,设置提交的备注信息
    
    git push  -u   origin  master  将本地的master 推送到远程仓库

    git push -u origin master:master 将本地的master分支推送到远程仓库的master分支

      

      4、设置信息

    git  configure --global user.name ' 姓名'
    
    git configure   --global  user.email  '邮箱地址'

       

      5、查看历史版本信息

    git log  查看提交记录
    git reflog 查看提交记录

       

      6、恢复误删或者误操作的文件状态

    1、如果已经提交,就直接重置版本:git reset --hard HEAD~撤回的版本数【例如撤回到上面第二个版本:HEAD~2】

    2、如果已经添加到缓存区,就使用:git reset 文件名

    3、如果本地已经修改,但是没有加入暂存区,就使用:git checkout -- . <---- 表示撤回所有的

    4、checkout 只能针对于修改过文件,如果本地的目录新增了一个文件,此时我想恢复刚拉下来的状态,这时,checkout 就无法处理,就算是pull下来,新增文件也是在得
      解决办法是: 首先,先将所有修改过得文件撤销:git checkout -- .
             然后,再删除没有被追踪的文件(即没有add 的文件): git clean -xdf

    5、git clean 小结:删除 一些 没有 git add 的 文件;
        git clean 参数:
            -n 显示 将要 删除的 文件 和  目录
            -f 删除 文件
          -d 删除目录
          -df 删除 文件 和 目录     git clean -n     git clean -df     git clean -f

      

      7、分支

    1、创建本地分支
        git branch dev
    2、切换分支
        git checkout dev
    3、删除分支
      git branch -d dev <----- 会提示没有合并
      git branch -D dev <------- 不会提示,直接删除

       

      8、如何将github 上的dev分支拉取到本地

    1》与远程仓库建立连接:git remote add origin XXXXX.git
    
    2》使用git branch 查看本地是否具有dev分支
    
    3》如果没有 git fetch origin dev
    
    4》git checkout -b dev origin/dev在本地创建分支dev并切换到该分支
    
    5》git pull origin dev就可以把gitLab上dev分支上的内容都拉取到本地了

       

      9、git 与github

      用idea 打开的项目,总会会因为工具的原因,让项目种生成多余的其他文件,在上传到github上时,我们不需要这些文件,github提供了一个忽略文件,来过滤掉这些文件

      

    1、在项目下创建一个 .gitignore 文件
    
    2、在文件种加入需要过滤掉的文件:以pycharm 和django框架为例子,需要过滤掉 .idea 和默认的db.sqlite3 还有git 的目录文件
        .idea/            <------- 表示项目下所有的 .idea 目录,不限制路径
        .git/             <------- 表示项目下所有的 .git 目录,不限制路径
        db.sqlite3        <------- 表示项目下所有的 db.sqlite3 文件
    
    
    3、清除本地缓存,否则忽略文件无法生效:
        git rm -r --cached  .
    
    4、提交,推送到远端分支
        git add .
        git commit -m '信息'
        git push  origin dev:dev

       三、git pull  与git fetch 的区别                                                                                             

        git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。

        而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

        git  fetch   从远程获取最新版本到本地 ,不会自动合并 merge  

        git fetch  origin master    

        git log  -p master ../origin/master     git merge orgin/master

        实际使用中  使用git fetch 更安全    在merge之前可以看清楚他人到底提交了啥?你确认要merge再pull下来。
      

      四、git diff 使用                                                                                                                        

                 git  diff 是比较两个版本的差异

    diff里面a表示前面那个变量,b表示第二个变量
    
     
    HEAD     commit版本
    Index     staged版本
     
    a、查看尚未暂存的文件更新了哪些部分,不加参数直接输入
        git diff
    此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异
    也就是修改之后还没有暂存起来的变化内容。
     
    b、查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异
        git diff --cached
        git diff --staged
    显示的是下一次commit时会提交到HEAD的内容(不带-a情况下)
     
     
    c、显示工作版本(Working tree)和HEAD的差别
        git diff HEAD
     
     
    d、直接将两个分支上最新的提交做diff
        git diff topic master 或 git diff topic..master
     
    e、输出自topic和master分别开发以来,master分支上的changed。
        git diff topic...master
    Changes that occurred on the master branch since when the topic
     branch was started off it
    f、查看简单的diff结果,可以加上--stat参数
        git diff --stat
     
    g、查看当前目录和另外一个分支的差别
        git diff test
    显示当前目录和另一个叫'test'分支的差别
        git diff HEAD -- ./lib
    显示当前目录下的lib目录和上次提交之间的差别(更准确的说是在当前分支下)
     
    h、比较上次提交commit和上上次提交
        git diff HEAD^ HEAD
     
    i、比较两个历史版本之间的差异
        git diff SHA1 SHA2

         五、在本地合并远端分支                                                                                                       

    1、第一步:把代码克隆到本地
         git clone https://gitee.com/zhu_zhao_xia/mogu.git
    
    2、第二步:再本地创建dev分支与远程dev分支对应
        git checkout -b dev origin dev
    
        拉取dev 最新得代码
        git fetch dev
        git pull 
    
    3、切换到master分支
        git checkout master
    
    4、把本地得dev合并到master上
        git merge --no-ff dev
    
    5、推送到远端master分支
        git push -u origin master

      

    世间安得双全法,不负如来不负卿
  • 相关阅读:
    CH1402 后缀数组【Hash】【字符串】【二分】
    poj3974 Palindrome【回文】【Hash】【二分】
    CH1401 兔子与兔子【字符串】【HASH】
    hdu5542 The Battle of Chibi【树状数组】【离散化】
    poj3349 Snowflake Snow Snowflakes【HASH】
    poj1821 Fence【队列优化线性DP】
    poj2376 Cleaning Shifts【线段树】【DP】
    poj3171 Cleaning Shifts【线段树(单点修改区间查询)】【DP】
    CH0601 Genius ACM【倍增】【归并排序】
    logging模块
  • 原文地址:https://www.cnblogs.com/shangguanruoling/p/11896662.html
Copyright © 2011-2022 走看看