Git笔记

Git使用说明

git官网:https://git-scm.com/

GitHub:https://github.com/

码云:https://gitee.com/

 

模块主要分为:基础,常用操作,分支、回退、常见错误。

一:基础

1.Git 和 SVN的主要区别

  • Git是分布式管理,SVN是集中式管理,
  • Git支持离线操作,SVN仅支持联网操作Clipboard Image.png

2.Git的基本操作

为了更好的描述和传达,阅读前需要进行一些概念的统一

  • repository(仓库):git中有两种repository,一个是remote(线上),还有一个是local(本地)。都是存储project的所有的内容。
  • branch(分支):一个project的镜像。

3.初次使用:

//一个完整的步骤如下:

  step1:初始化账号姓名

  git   config   --global user.name "XXX"
  git   config   --global user.email XXX@163.com
  git   config   --list  //查看配置信息

step2:上传文件

  cd   /d/workspace      //选择目录,进入到d盘workspace下面
  git   init                       //初始化操作,会在/d/workspace目录下,生成.git文件夹
  git   remote  add  origin  url     //搭桥,与远程服务器建立连接
  git   pull  origin  master           //从远程master分支pull代码
  git   add  test.txt                      //添加文件
  git   commit  -m  "第一次提交"        //commit时候的提示信息
  git   push  origin  master:master     //把暂存区的变换提交到服务端的master分支

step3:同步

  git pull origin master  //从远程的master分支同步数据
  //用于取回远程主机某个分支的更新,再与本地的指定分支合并,类似于svn的update操作
 

二:常用操作

1.push操作:

  git   push   origin   本地分支名          //把本地分支(本地checkout的分支)push到远程同名分支,如果远程分支没有就创建同名分支; //与我当前在那个分支没有关系
  git   push   origin   本地分支名:远程分支名     //将指定本地分支push到远程分支;  //与我当前在那个分支没有关系   
  eg:把本地分支test提交到远程仓库master
  git push origin test:master  //与此时在哪个分支没有关系,可以是当前的分支,也可是别的的分支。
        
push操作可能不成功,此时可以强制push:  
  原因:可能是因为远程、本地的文件不匹配导致的,强制push会覆盖远程的文件
  git push -f origin master //强制push到远程   参数-f:表示强制推送到远程。 

 

 2.pull操作

  git pull origin 远程分支名          //把远程分支pull到当前分支(本地checkout的分支)
  git pull origin 远程分支名:本地分支名      //把远程分支pull到指定本地分支
 补充:  
  指定了本地分支名,则将远程分支的数据同步到制定的本地分支;若没有指定则是同步到当前分支。如果指定的是不存在的分支,则会创建该分支。
 
 
git fetch和git pull的区别:
    git fetch:从远程获取最新版本到本地,不会自动merge
    git pull:从远程获取最新版本并merge到本地,pull=fetch+merge
    
    注:本地看不到远程的分支,使用git fetch,则可以看到了。

  

  

3. 远程仓库

  git remote -v  //查看远程分支的仓库
  git remote rm origin  //删除远程仓库
  git remote add origin url  //添加远程仓库

 

4.  撤销add的到缓存区的文件

git clean -f  //清除没add的文件、文件夹

git rm --cached fileName:撤销add到缓存区中的文件
如需撤销文件夹加上-r:git rm -r --cached fileName
 
git diff 文件名:查看修改了那些内容
git checkout 文件名:强制回退到修改之前的内容

   

5.状态查询:git status

 

6.查看日志:

 

git log  //默认查看当前分支的日志信息;  会按提交时间列出所有的更新,最近的更新排在最上面
git log -3  //查看最近3次的提交日志信息
git log bug_188  -3   //查看具体某一个分支的日志信息
git log --pretty=oneline -3   //显示最近3条日志,并按行信息日志信息

 

 

7.修改内容对比:

  git diff 文件名:查看修改了那些内容 

  git比较两个文件,修改与本地比较,查看文件修改了哪些内容

  git diff branch1 branch2 --stat   

  显示出所有有差异的文件列表

  git diff branch1 branch2 文件名(带路径)   

  显示指定文件的详细差异

  git diff branch1 branch2                   

  显示出所有有差异的文件的详细差异

8.commit提交信息

 

查看commit的id 对应修改了哪些文件:git show commit的id --stat
查看某次commit修改的内容: git show commit的id 

 

  

 

修改commit的提交信息  

(1)修改最后一个commit的信息:

  git commit --amend

  如果提示编辑器不存在设置全局配置git的编辑器

  git config --global core.editor vim

在弹出的编辑框中进行修改,之后保存退出

(2)修改之前commit的信息:

git rebase --interactive commit的id

该命令会列出当前commit的id之后提交的commit信息列表

弹出编辑页面,把commit的id前的 pick 改成 r 保存,会弹出修改commit信息的页面

 

9.查看标签

  git tag -l

 

三:分支

1.本地分支:

    git branch local_branch : 创建本地分支
    git branch -d local_branch:删除本地分支  //使用大写的D 强制删除  git branch -D XXX
    git branch -m old_branch new_branch:重命名本地分支

2.远程分支:

  git push origin dev:dev:创建远程分支。//将本地分支push到远程分支,如果远程分支不存在,则创建远程分支
  git push origin --delete <branchName> 删除远程分支
  删除与远程分支的关系:  git remote rm origin  //删除远程仓库,之后可以重新git remote add origin url,重新建立远程关系

3.查看分支:

         git branch -a:查看远程和本地的分支,绿色代表的是当前的(本地)分支
        git branch:查看本地的分支,当前分支前面会标一个*号。
        git branch -r:查看远程的分支
        git remote show origin 查看远程分支

4.git checkout命令:

  检出,是我们最常用的命令。最常见的场景:创建分支,切换分支。 

         git checkout test:从当前分支切"换到"test"分支
        git checkout -b test:创建test分支,并从当前分支切"换到"test"分支;如果test分支已经存在了,则会报错
        git checkout -b test666 master:从master分支"切出/创建"一个test666分支,test666这个分支是master分支的孩子
        git checkout -- readme.txt:
      强制回退到修改之前的内容 
      readme.txt文件在工作区的修改全部撤销,这里有两种情况,add之前和add之后:让这个文件回到最近一次git commit或git add时的状态

5.分支合并

合并某分支到当前分支:git merge <name>
新建dev分支,在该分支下创建文件,进行操作。操作完成后,在dev分支下进行commit提交,此时master看不到dev分支下的文件了。所以我们需要将dev分支的内容合并到master上面。
此时我们可以git checkout到master分支,把dev分支的工作成果合并到master分支上。此时master分支就可以看到dev分支提交的文件了。

 

管理员:
    别人将代码提交到远程的dev分支,管理员会pull到本地,确保没问题,再合并到本地的master,最后push到远程的master分支。

 

 

 

四.clone克隆

  git clone url:该命令将remote repository下载到local
     默认克隆远程master分支的数据,并且默认克隆到当前目录下(pwd命令的结果)
 
  完整的例子:
    git clone -b 远程分支名 url 本地目录    //克隆指定分支的数据,到指定的目录下 
    git clone -b master http://gitee.com/a/b.git  /d/workspace
 
  补充:首次使用需要输入账密:
      输入你注册的账户名(或者邮箱)和密码即可
 

五:回退reset

步骤:
  git log 查看当前分支的提交信息,此时我们可以找到需要回退的commitId
  git reset --hard 3628164 //版本号没必要写全,前几位就可以了,Git会自动去找
 
疑惑:
 
 
 

reset三种类型:

  1.git reset  --mixed commit的id  
    还原到commit的id,(git reset 默认是mixed )此commit之后的文件变成modified红色(即还没add的状态)
  2.git reset  --soft commit的id 
    还原到commit的id,此commit之后的文件变成modified绿色(即add(勾选中)的状态)
  3.git reset --hard commit的id 
    还原到commit的id,此commit之后的文件都被还原

  

注:还原的时候,应该提前一个commitId:

 
 
 
posted @ 2017-12-19 14:08  裸奔的太阳  阅读(377)  评论(0编辑  收藏  举报