Git特点和Git常规命令使用总结

Git的特点

  • 分布式版本管理

    1. 每个人的电脑都是一个完整的版本库,减少备份负担
    2. 支持离线操作:用户完全可以脱离git服务端在本地查看,编写和提交代码
  • 分支的新建与合并,方便快速


Git本地版本库的使用


  1. 仓库的创建

初始化版本库:

git init

ps:

  • 可以在也有项目的目录下创建,用git来管理该项目
  • 也可以在一个空的目录下,创建一个新的仓库,用来管理新的项目
  • 文件的修改与撤销

    修改后比较:

    git diff [filename]

    ps:

    • 不指定文件名则是比较所有文件的修改。
    • 默认比较当前工作区与当前版本库(HEAD)
    • 要比较当前工作区和历史的版本库,请在diff后加上历史版本号。
    • 要指定两个版本库,请在diff后家还是那个两个版本号。

    放弃工作区的修改或删除(文件还未add到暂存区):

    git checkout --filename

    放弃暂存区的修改(文件add到暂存区,还未提交到版本库):

    git reset HEAD filename

    或者:
    git rm --cahe filename(经实验测试不正确)

    Git跟踪并管理的是修改,而非文件。

  • 删除文件

    手动删除文件之前或者之后,将删除提交到暂存区:

    git rm filename

    将删除提交到仓库:

    git commit -m "coments"

  • 把文件(修改或新建)提交到仓库

    将文件提交到暂存区:

    git add filename1 [filename2 ...]

    将文件提交到仓库:

    **git commit -m "coments"**

  • 查看仓库状态

    git status

    仓库状态分为:

    • Untracked files
      (未被跟踪的文件:未执行 git add)>
    • Changes not staged for commit
      (修改还未准备提交:未执行 git add)
    • Changes to be committed
      (修改可以被提交: 已经git add 到暂存区)
    • nothing to commit, working directory clean

    每次修改,如果不add到暂存区,那就不会加入到commit中。

    可以使用commit -a,不add到暂存区的已修改过的文件也会被提交,而未被跟踪的文件不会被提交

  • 回退到历史版本

    查看历史版本号(只能查看比当前版本还要早的版本号):

    git log
    - git log --pretty=oneline (版本日志显示更加简洁)
    - git log -<数字>显示最近几条提交日志

    回退到版本versionNo

    git reset --hard versionNo

    ps:
    - HEAD表示当前版本
    - HEAD^表示上一个版本
    - HEAD^^ 表示往上两个版本,以此类推。
    - HEAD~100 表示往上100个版本
    - versionNo 也可以是查询到的具体的版本号或者一部分
    如:efc14ac4ed0facbcd6355a68140ca598d697e36c
    或者:efc1、efc14、efc14a ……


  • Git远程版本库的使用

    1. 添加远程库关联

      git remote add origin git@192.168.1.111:/data/gitdata/middleware

      ps:

      • 远程主机名origin也可以改为别的名称,惯例使用origin。
      • 远程库可以是自己建立的远程库,也可以是Github远程库(为避免每次输入远程库主机用户git的密码,可以在本地生成公私钥对,将公钥提交到远程库的authorized_keys文件中)
      • 添加远程库的前提:本地库是一个初始化空库(或者是克隆的远程库,删除了关联)。远程库可以是空库,也可以是原项目库。

      本地分支关联远程分支:

      git branch --set-upstream <本地分支名> <远程主机名>/<远程分支名>

      • 本地分支名和远程分支名最好一致
    2. 推送到远程库

      本地版本库推送到远程库:

      git push <远程主机名> <本地分支名>:<远程分支名>

      ps:

      • 不指定远程分支名,则默认分支同名推送(若远程不存在同名分支,则创建一个新的分支)。

      删除远程库分支

      git push <远程主机名> --delete <远程分支名>

      ps:

      • 执行该操作后本地版本库仍然存在。
      • 删除本地版本库分支git branch --delete <分支名>
    3. 从远程库更新

      从远程库更新到本地库:

      git pull <远程主机名> <远程分支名>:<本地分支名>

      ps:

      • 不指定本地分支名,则默认与当前分支合并,相当于指令:
        git fetch <远程主机名>
        git merge <远程主机名>/<远程分支名>

      分支追踪关系
      本地和远程分支默认是同名追踪关系
      也可以手动建立追踪关系,以后不指定远程分支时,则按照追踪关系执行,如:
      git branch --set-upstream master origin/next

    4. 远程库克隆

      git clone 远程库地址

      ps:

      远程库地址支持https协议和ssh协议。

      • https协议:
        比如:https://github.com/scuyxi/testgit.git
        速度较慢,需要输入口令。
      • ssh协议
        比如:git@192.168.1.111:/data/gitdata/middleware
        速度较快
        可以配置免密码传输(密钥对)。

      克隆的仅仅是master分支
      通过以下命令导出远程某个分支

      git checkout -b <本地分支名> <远程主机名>/<远程分支名>


    参考资料:

    Git相关资料整理
    https://gold.xitu.io/entry/586eddf6a22b9d00587829ce?from=timeline&isappinstalled=1

    https://github.com/xirong/my-git/blob/master/ixirong.com.md

    Git权威指南
    http://www.worldhello.net/gotgit/

    中文 Git Community Book
    http://gitbook.liuhui998.com/

    中文官方文档V1
    https://git-scm.com/book/zh/v1

    英文官方文档V2
    https://git-scm.com/book/en/v2

    中文 Git参考手册
    http://gitref.org/zh/index.html

    英文 Git参考手册
    http://gitref.org/index.html

    全面介绍
    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    windows下入门使用
    http://blog.jobbole.com/78960/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值