git入门

作者: yxlwq | 来源:发表于2019-10-09 23:07 被阅读0次

    git入门

    git笔记会随着时间进行更正

    更新:2019/10/09 23:02

    几个概念

    • git的三个区域
      1. 工作区
        • git的初始化目录
      2. 暂存区
        • 从工作区进一步提交的文件所在区域
      3. 本地仓库
        • 从暂存区进一步提交的文件所在区域
      • 提交流程一般是:工作区(add)->暂存区(commit)->本地库

    命令

    • 帮助命令

      • git help 需要查找的命令
        - > git 需要查找的命令 --help
        - > man 需要查找的命令

    • 初始化本地库

      • git init
        - 生成.git文件夹 存放git仓库配置及其数据

    • 配置本地库信息

      • git config
        - 环境参数
        - system
        - > git config --system
        - 配置信息在主机上的任何用户和文件夹下都生效
        - global
        - > git config --global
        - 配置信息在主机上的当前用户和及其所属文件夹下生效
        - 不加以上参数,只在初始化本地库的文件夹下生效
        - 配置使用者信息
        - 用户名
        - > git config user.name 用户名
        - 邮箱
        - > git config user.email 用户邮箱
        - 配置以上信息只起到提示作用,与任何平台信息无关,但是一般与使用平台命名一致

    • 添加被追踪文件至暂存区

      • git add 文件名(文件夹名)
        - 将该文件(文件夹)从工作区添加到暂存区,并进行追踪
        - > git add .
        - 将工作区的所有文件(文件夹)添加到暂存区,并进行追踪
        - 删除和移动(重命名)操作不可以被git add追踪到,只能通过git rmgit mv来提交到暂存区

    • 提交被追踪文件至本地库

      • git commit 文件名(文件夹名)
        - 将该文件(文件夹)从暂存区添加到本地库,并生成新的记录
        - 参数
        - > -m
        - 不用打开编辑器,直接在参数后添加提交描述
        - > -a
        - 若该文件曾被提交过,再次对其操作后,可直接使用该参数从工作区提交到本地库

    • 删除文件(文件夹)

      • git rm 文件名(文件夹名)
        - 删除工作区的文件名(文件夹名),且提交到暂存区
        - 参数
        - --cached 文件名(文件夹名)
        - 删除暂存区文件名(文件夹名)的操作
        ```
        已知:已提交文件test
        需求:现在将文件test从本地库中删除

      方法1:
      git rm test
      git commit -m "delete test"

      方法2:
      rm test.txt
      git commit -a "delete test"

      方法1和方法2得到结果一致

      
      
    • 移动文件(文件夹)

      • git mv 文件名1(文件夹名1) 文件名2(文件夹名2)
        - 移除工作区文件名1(文件夹名1),生成文件名2(文件夹名2),且提交到暂存区
        ```
        已知:已提交文件test1
        需求:现在将文件test1更名为test2

      方法1:
      git mv test1 test2
      git commit -m "rename test1->test2"

      方法2:
      mv test1 test2
      git rm test1
      git commit -m "rename test1->test2"

      方法3:
      mv test1 test2
      rm test.txt
      git commit -a "rename test1->test2"

      
      
    • 检查文件(文件夹)状态

      • 文件(文件夹)状态
        • 新增
        • 修改
          -删除
          -重命名
        • 未被提交
        • 未存入暂存区
      • git status
        - 对工作区和暂存区文件(文件夹)的状态进行检查显示
        - 参数
        - > -s(--short)
        - 简化检查结果显示

    • 检查文件操作详细信息

      • git diff
        - 不加参数,查看工作目录和暂存区之间的操作差异
        - 参数
        - > --cached(--staged)
        - 查看暂存区和本地库之间的操作差异

    • 查看提交历史记录

      • git log
        - 显示所有提交记录
        - > git log HEAD指针位置
        - 显示指定提交历史记录
        - 参数
        - -p
        - 查看提交历史记录的详细信息
        - --stat
        - 查看提交历史记录的简化信息
        - -数字n
        - 查看前n条提交历史记录的信息
        - --oneline
        - 将每条提交历史记录以行显示,记录简化的hash值
        - --pretty=oneline
        - 将每条提交历史记录以行显示,记录完整的hash值
        - --pretty=fomat:"放以下参数和其他字符组成的字符串"
        - 自定义提交历史记录的显示方式
        - 参数
        - %s
        - 提交时写的描述
        - %an
        - 做出文件(文件夹)操作的作者名称
        - %ae
        - 做出文件(文件夹)操作的作者邮箱
        - %ad
        - 作者做出文件(文件夹)操作的时间
        - %ar
        - 作者做出文件(文件夹)操作距今的时间
        - %cn
        - 提交者的名称
        - %ce
        - 提交者的邮箱
        - %cd
        - 提交者提交的时间
        - %cr
        - 提交者提交距今的时间
        - > 例如:git log --pretty=format:"提交者:%cn,距今时间:%cr,提交描述:%s"
        - --graph
        - 树状显示提交历史记录

    • 对远程库克隆

      • git clone https地址(ssh地址)
        - 初始化本地库且拉取远程库的所有历史版本
        - 将最新的提交历史记录对应的工作区文件(文件夹)复制到现在的工作区
        - 添加远程仓库地址别名,与原仓库的别名一致,可以直接操作并提交

    • .gitignore 文件

      • 设置提交时忽略的文件或文件夹
      • 文件内容设置
        • 以#开头的行和空行会被忽略
        • 利用正则匹配文件(文件夹)
          • 参数
            • *
              • 匹配0或任意个字符
            • ?
              • 匹配一个任意字符
            • []
              • 匹配括号里其中一个字符
            • !
              • 匹配取反的文件(文件夹)
    • 远程仓库

      • git remote
        查看本地生成的远程仓库别名
      • -v
        查看详细的远程仓库的url或者ssh
      • git remote add 仓库别名 仓库url或ssh
        生成远程仓库别名
      • git remote show 远程分支名
        查看远程分支
      • git remote rename 需要改变的远程分支别名 想要变成的远程分支别名
      • git remote rm 需要删除的远程分支别名
    • 推送分支

      • git push 远程分支的别名 被推送分支名(标签名):推送到的远程分支名(标签名)
        - 将本地库文件(文件夹)推送到远程分支
        - 填写分支名
        - 在远程仓库创建远程分支
        - 填写标签名
        - 在远程仓库创建标签
        - 删除远程分支
        - > git push 远程分支的别名 --delete 远程分支名(标签名)
        - > git push 远程分支的别名 :远程分支名
        - 创建远程分支
        - 创建前提是:需要创建的远程分支在本地已存在
        - > git push 远程分支的别名 新建远程分支名:新建远程分支名

    • 拉取远程分支到本地

      • git fetch 远程分支名(标签名)
        • 拉取指定远程分支(标签)到本地远程分支
    • 合并分支

      • git merge 本地分支名
        - 将指定本地分支名合并到当前分支
        - > git merge 合并到的本地分支名 被合并的本地分支名
        - 将两个本地分支合并
        - 合并冲突
        - 两个分支若对相同文件的相同位置做了操作,会出现合并冲突
        - 解决合并冲突
        1. 将出现冲突的文件进行更正
        2. git add
        3. git commit -m "description"

    • 拉取远程库

      • git pull 远程分支别名 被拉去的远程分支名(标签名):合并的本地分支名(标签名)
        - 是fetch和merge两个操作的合并,将远程分支拉取到本地合并到指定分支上

    • 标签

      • 种类
        • 轻量级标签
        • 含附注标签
      • 打标签
        • 轻量级标签

          • git tag 标签名
            - 为当前所处的提交打上轻量级标签,一个提交可以有多个标签
            - 含附注标签
            - > git tag -a "标签名" -m "description"
            - 为当前所处的提交打上含附注标签,一个提交可以有多个标签
            - 查看标签
            - > git tag
            - 查看所有标签
            - 参数
            - -l 标签名(可正则)
            - 查询指定标签
            - a "标签名"
            - 指定标签名
            - m "description"
            - 定义标签描述
            - 删除标签
            - > git tag -d 标签名
            - 给历史提交记录打标签
            - git tag -a "标签名" -m "description"某个历史记录的HEAD指针位置
            - 推送标签到远程分支
            - 推送指定的标签
            - > git push 远程分支别名 被推送的标签名
            - 推送全部标签
            - > git push 远程分支别名 --tags
            - 切换标签
            - > git checkout 标签名
            - 切换分支到标签所处分支,处于游离状态不能修改
            - > git checkout -b 新建本地分支名 标签名

        • git branch 新建本地分支名 标签名
          - > git checkout 该本地分支名
          - 重命名标签
          - > git tag -d 原来的标签名
          - 删除原来的标签
          - > git tag -a "新的标签名" -m "description"
          - 创建新的标签

    • 操作本地分支

      • 查看分支
        • git branch
          - 查看分支名和当前所属分支
          - 参数
          - -v
          - 查看分支和当前所属分支的具体信息
          - -a
          - 查看包含远程分支的全部分支信息
          - --merged
          - 查看已与当前分支合并的所有分支
          - --no-merged
          - 查看未与当前分支合并的所有分支
          - 创建分支
          - > git branch 新本地分支名
          - 创建文件(文件夹)为当前分支的新本地分支
          - > git branch 新本地分支名 被复制的本地分支名
          - 创建指定复制的本地分支名
          - 删除分支
          - > git branch -d 本地分支名
          - 删除已经被合并过的分支
          - > git branch -D 本地分支名
          - 删除已经未合并过的分支

    • 切换本地分支

      • git checkout 本地分支名
        - 切换到指定分支
        - 注意切换到指定标签或本地远程分支的本地分支处于游离状态,不能操作
        - > git checkout -b 本地分支名
        - 创建新本地分支并跳转到该分支
        - > git checkout -b 本地分支名(标签名) 被复制的本地分支名(标签名)
        - 创建新分支且赋予指定分支内容并跳转到该分支

    • 命令别名

      • git config alias.命令的别名 "命令名"
        - 设置git命令别名,上面的命令都不包含git,运行命令时必须带上git
        - > git config alias.命令的别名 "!非git命令名"
        - 设置非git命令别名,运行命令时必须带上git

    • 撤销操作

      • git commit --amend
        - 上一次提交作废,重新提交,将本次提交记录代替上一次的记录
        - > git reset HEAD 文件名
        - 重置暂存区指定文件的操作为最新提交记录的操作,用来撤销暂存区的失误文件(文件夹)操作
        - > git checkout -- 文件名(文件夹)
        - 重置工作区文件的操作为暂存区的操作,用来将暂存区文件操作覆盖原来对工作区的失误操作

    未完:reset(未写)

    补充1:若大家觉得我写得还行,可以去我的github里star一下,为了以后找工作做准备,无论是否点赞,谢谢大家看完本文

    我的github

    相关文章

      网友评论

        本文标题:git入门

        本文链接:https://www.haomeiwen.com/subject/ozmnpctx.html