暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Git使用总结

HACKWAY 2020-05-10
177

Git简介

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

安装git

Git官网地址[1]下载安装包

  • 安装完成后,还需要最后一步设置,在命令行输入:
    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"

    快速开始

    1. 创建版本库。版本库又名仓库,英文名repository,你可以简单理解成一个目录(.git),这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪。
      git init
      1. 将新建文件提交到仓库:
        git add your_add_file_name   #将新文件添加到索引
        git commit -m "你的提交描述说明"

        工作区有一个隐藏目录.git
        ,这个不算工作区,而是Git的版本库,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
        ,以及指向master的一个指针叫HEAD

        1. git add
          把文件添加进去,实际上就是把文件修改添加到暂存区
        2. git commit
          提交更改,实际上就是把暂存区的所有内容提交到当前分支

        远程仓库

        1. 创建SSH Key。在用户主目录下,看看有没有.ssh目录及id_rsa和pub_rsa这几个文件,如果没有需要创建
           ssh-keygen -t rsa -C "youremail@example.com"
          1. 登陆GitHub,打开“Account settings”,“SSH Keys”页面,将pub_rsa内容粘贴进去

          帮助文档

          命令使用方法描述
          clonegit clone "仓库链接"将存储库克隆到新目录中
          initgit init创建空的Git存储库或重新初始化现有的Git存储库
          addgit add *将文件内容添加到索引
          mvgit mv -f file newfile移动或重命名文件、目录或符号链接
          resetgit reset --hard HEAD^将当前磁头重置为指定状态
          rmgit rm your_file从工作树和索引中删除文件
          bisect
          使用二进制搜索查找引入错误的提交
          grepgit grep your_wordkey打印与图案匹配的线条
          loggit log --oneline显示提交日志
          showgit show tagname显示各种类型的对象
          statusgit status显示工作树状态,时刻掌握仓库当前的状态
          branchgit branch列出、创建或删除分支
          checkoutgit checkout -- file或git checkout your_branch切换分支或还原工作树文件
          commitgit commit -m "your_der"记录对存储库的更改
          diffgit diff file显示提交、提交和工作树等之间的更改
          mergegit merge your_branch将两个或多个发展历史连接在一起
          rebasegit rebase把分叉的提交历史“整理”成一条直线,看上去更直观
          taggit tag创建、列出、删除或验证用GPG签名的标记对象
          fetchgit fetch origin 远程分支:本地分支从另一个存储库下载对象和引用
          pullgit pull从另一个存储库或本地分支获取并与之集成
          pushgit push origin master更新远程引用和关联对象

          常用命令

          1. git status 查看当前状态
          2. git log 查看提交日志

          commit的所有记录,git log --graph --pretty=oneline --abbrev-commit 可以简单输出

          1. git reflog 查看命令历史

          reflog 是可以查看历史命令,找到未来版本号,用--hard回到未来版本

          1. git reset --hard HEAD^

          HEAD^为上一个版本 HEAD^^为上上一个版本 HEAD~100为上一百个版本

          1. git checkout -- yourfile

          场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库

          1. git remote add origin git@github.com:yourname/yourrepository.git

          添加远程仓库

          1. git push master origin

          将本地文件推送到远程仓库

          1. git checkout -b dev

          表示创建并切换分支

          1. git merge dev

          用于合并指定分支到当前分支

          1. git branch -d dev

          删除当前分支

          1. 分支常用命令
            Git鼓励大量使用分支:


            查看分支:git branch


            创建分支:git branch <name>


            切换分支:git checkout <name>


            创建+切换分支:git checkout -b <name>


            合并某分支到当前分支:git merge <name>


            删除分支:git branch -d <name>
            1. git stash

            可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作,需要先把文件git add 是用git stash apply恢复 但是恢复后,stash内容并不删除你需要用git stash drop来删除 git stash pop就是直接恢复最近的并删除stash git stash list 可以查看stash列表

            1. git checkout -b dev origin/dev

            要在dev分支上开发,就必须创建远程origin的dev分支到本地,用这个命令创建本地dev分支

            1. git 标签总结

            命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;命令git tag -a  -m "blablabla..."可以指定标签信息;命令git tag可以查看所有标签。命令git tag   对指定版本打标签 命令git push origin 可以推送一个本地标签;命令git push origin --tags可以推送全部未推送过的本地标签;命令git tag -d 可以删除一个本地标签;命令git push origin :refs/tags/可以删除一个远程标签

            补充

            1. 配置忽略文件.gitignore,主要是一些个人的配置文件,禁止上传,格式如下
              *.pyc
              *.ini
              *.so
              *.egg
              *.egg-info
              dist
              build

              git add -f your_file 可以强制上忽略的文件 git check-ignore -v your_file 可以查看文件忽略的状态

              1. 配置别名 设置自己习惯的命令来git,格式如下
                git config --global alias.<your_commond> <commond>
                会配置如下
                $ git config --global alias.co checkout
                $ git config --global alias.ci commit
                $ git config --global alias.br branch
                $ git config --global alias.unstage 'reset HEAD'
                $ git config --global alias.last 'log -1'
                $ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"


                # 其实以上命令设置,每个仓库设置都存储在.git/config文件中,当前用户的配置放在.gitconfig中,可手动删除不需要的alias
                $ cat .git/config
                [core]
                repositoryformatversion = 0
                filemode = true
                bare = false
                logallrefupdates = true
                ignorecase = true
                precomposeunicode = true
                [remote "origin"]
                url = git@github.com:michaelliao/learngit.git
                fetch = +refs/heads/*:refs/remotes/origin/*
                [branch "master"]
                remote = origin
                merge = refs/heads/master
                [alias]
                last = log -1
                ------------------------------------------------------------------------------
                $ cat .gitconfig
                [alias]
                co = checkout
                ci = commit
                br = branch
                st = status
                [user]
                name = Your Name
                email = your@email.com
                1. 贡献公共仓库
                  1. fork别人项目到自己的仓库
                  2. git clone 项目到本地
                  3. git checkout -b 新分支上修改项目
                  4. push 到远程项目分支
                  5. new pull request 等待别人采用

                  参考资料

                  [1]

                  官网地址: https://git-scm.com/downloads



                  为你铺好的HACKWAY
                  长按扫码上车


                  你点的每个在看,我都认真当成了喜欢



                  文章转载自HACKWAY,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论