git使用

事前准备
安装git


创建项目

创建项目
  windows
    鼠标右键:git bash here
    mkdir learning_git
  Linux
    在命令窗口 mkdir learning_git
  git init

克隆项目
  首先要知道项目的网址
  git clone 网址


常用分支情况
  查看分支情况
    git branch   :查看本地分支
    git branch -r:查看远程分支
    git branch -a:查看远程以及本地分支
  创建分支
    git branch qdw:在当前分支基础上创建qdw 分支
  切换分支
    git checkout qdw:切换到该分支
  删除分支
    git branch -d qdw
  合并分支
    在master上进行合并
    git merge qdw
      master将qdw分支的信息合并了,也就是记录了qdw分支的修改
  合并分支遇到冲突
    如果出现了冲突,修改会有master|MERGING这样提示
      自己解决冲突,表示自己修改的冲突时修改的master分支的,qdw分支的还是没有修改的样子
  自己返回qdw 分支,然后git merge master分支就会和本地的master 分支同步了


提交修改

  文件提交到仓库
    git add readme.txt
    git add -A:全部提交到暂存区
    git commit -m ‘添加readme.txt’  将暂存区全部提交到仓库
  git add 撤销
    git reset HEAD                    将git add的内容全部取消
    git reset HEAD read.txt       只讲read.txt取消add
  合并分支遇到冲突
    如果出现了冲突,修改会有master|MERGING这样提示
      自己解决冲突,自己解决冲突的结果是在 master中的。
      自己解决冲突,并没有对qdw分支进行更新,也就是说,自己解决冲突的结果,没有在qdw分支上体现出来
      表示自己修改的冲突时修改的master分支的,qdw分支的还是没有修改的样子
    解决完冲突,自己返回qdw 分支,然后git merge master分支就会和本地的master 分支同步了
  查看冲突
    在master 上将一个文件某个位置进行了修改,
    在qdw分支上将同一个文件相同位置进行了修改,那么就会产生冲突
    cat readme.txt
    如果一个文件有好多函数,每个人修改各自的函数,这样不会出现冲突
    同时修改一个函数才会出现冲突

版本回退
  回退1个版本
    git reset --hard HEAD^
  回退2个版本
    git reset --hard HEAD^^
  回退10个版本
    git reset --hard HEAD~10
  会退到指定版本
    git reset --hard 6fcfc89

  


远程分支和本地分支的对应关系:个人理解
  远程分支:
    master
    ----dev
    ---------qdw
  本地分支
    git clone 后,本地会有master 分支,这个分支是和远程的对应的
    git branch
      不会发现 dev、qdw两个分支
    git branch -a
      会发现master 
      以及remotes/origin/master;
        remotes/origin/dev;
        remotes/origin/qdw 
      这说明本地还没有dev,以及qdw这两个分支
    git checkout dev 或者qdw后
      git显示switch 成功 ,并显示your branch is up data to remotes/ origin/dev
      这说明本地的dev或者qdw创建了。
    这样本地的master,dev, qdw 和远程的master,dev,qdw是对应的。
  远程推送:
    git push origin qdw:refs/for/qdw
    如果自己:
      git checkout master
      git merge qdw
      git push origin master:refs/for/qdw
      这样也没问题,但是再次自己checkout到master分支后又和远程的master保持一致了。这样就不是自己跟踪的qdw了
    自己不论从哪个分支上git clone 都会看到所有的分支:
      如果不想让自己看到更改master 那么下载的时候就不应该从master上克隆。应该从dev上克隆
  所以:远程有多少分支,本地对应有多少分支,自己可以再创建更细的分支,这样就可以了自己灵活了。


PUSH和PULL
  一般git push之前要先 pull一下,保证自己和远程同步
  git pull 
    git pull 全部拉取
    git pull origin dev:从远程的dev拉取到本地的当前分支
  git push: git push <远程主机名> <本地分支名>:<远程分支名>
    git push origin master
      远程分支省略,将本地分支推送到远程和该分支有追踪关系的分支(一般是同名字),如果远程没有就会被创建
    git push origin
      本地分支和远程分支存在追踪关系,
      那么远程分支和本地分支都可以省略
      将本地分支推送到远程分支上
    git push
      如果只有一个远程分支,那么远程主机名也可以省略
    git push origin 本地分支名: refs/for/远程分支名
      如果代码需要审核, 必须用这种方式,否则 会有故障
远程branch 和本地branch的链接
  一般默认远程和本地的branch 同名就是链接的
  如果没有链接成功可以使用下面命令
    git branch --setup-stream dev origin/dev


 日志查看

 

 


   


git 问题
  git add . 出现 the file will have its original line endings in your working directory
    换行
      A)Windows和Dos下:使用回车(CR)和换行(LF)两个字符来结束一行,回车+换行(CR+LF),即“ ”;
      B)Unix和mac下:只使用换行(LF)一个字符来结束一行,即“ ”;
    为什么会出现这个问题:
      一般git add .不会出现这个提示,只有遇到下面两种情况才会有问题,其实也不叫问题,只是一个提示
        (i)我们的团队成员是Linux/Mac平台并参与了项目的git提交
        (ii)我们Windows平台的某些软件会生成换行是LF的代码文本(如李俊德git add的是Webstorm生成的HTML项目中隐藏文件夹.idea中的workspace.xml,这个xml文件换行是LF)

········· 可以怎么设置呢?
      core.autocrlf是git中负责处理line ending的变量,可以设置3个值:true,false,input。
        (A)设置为true【config --global core.autocrlf true】
          当设置成true时,这意味着你在任何时候添加(add)文件到git仓库时,git都会视为它是一个文本文件(text file)。它将把crlf变成LF。windows 默认的是这种。可以自动切换,不用管
        (B)设置为false【config --global core.autocrlf false】
          当设置成false时,line endings将不做转换操作。文本文件保持原来的样子。
        (C)设置为input时,添加文件git仓库时,git把crlf编程lf。当有人Check代码时还是lf方式。
          因此在window操作系统下,不要使用这个设置。


        

原文地址:https://www.cnblogs.com/yunshangyue71/p/13377448.html