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

  

世间安得双全法,不负如来不负卿
原文地址:https://www.cnblogs.com/shangguanruoling/p/11896662.html