• Git简记


      本文从Git的命令入手,根据不同的应用场景,对每个命令都会有简单的说明(若有变化,请以官方说明为主)。

      Git初始化:

          $ git init  

        本命令会初始化这个Git仓库,通过命令$ ls -a 可以看到多出了一个.git目录(文件夹,以下简称为目录,即以Unix说法为主)。这个.git目录中包含了这个Git仓库中相关Git的信息。

          $ git config --global user.name "User's name"

          $ git config --global user.email "email-account@example.com"

        本命令会配置Git仓库的User的基本信息,其信息存储在 HOME 目录下的.gitconfig配置文件中。

      Git文件提交:

          $ git add <fileName> <fileName1> <......>

        将文件fileName提交到暂存区,这时的工作区内容会被转移到暂存区,此时仍可以在工作区继续修改创建,再通过本命令将文件提交(转移)至暂存区。

          $ git commit -m "information of the commit"

        将暂存区中的文件提交到本地Git仓库,这时的文件可以说是真正意义上被存储下来,因为日后若有需要,通过这个记录可以对文件进行恢复。

      Git查看:

          $ git status

        随时可以通过本命令来查看Git工作区和暂存区的状态,例如可以看有哪些文件是新创建的,哪些文件是被修改过的。

          $ git diff <fileName> 

        查看文件之间的差异,例如不同文件之间增添了哪些内容,删除了哪些内容(本命令显示的内容同Unix下的diff命令显示内容格式相同)。

          $ git log 

        查看历史commit提交记录,其内容包括提交作者<邮箱>,提交时间,提交说明(commit -m)以及commitID(其标号唯一确定,便于找回)。

        显示模式为Unix下more命令显示格式(按q退出浏览,按space翻篇浏览,按Enter逐行浏览)。

        通过添加参数选项--pretty=oneline可以将内容简洁化,即浏览方式为单行浏览,从而使内容简洁,便于浏览。

          $ git reflog

        查看Git仓库中的历史命令。

      Git撤销修改:

          $ git reset --hard HEAD^ 

        将文件恢复至上一个已提交版本。

        若要恢复上上次提交版本,输入命令 $ git reset --hard HEAD^^,恢复至前一百次版本 $ git reset --hard HEAD~100。

          $ git reset --hard <commitID> 

        将文件恢复至commitID版本,本命令可以结合着 $ git log 和 $ git reflog 命令来使用,方便恢复版本更改。

          $ git checkout -- <fileName>

        丢弃工作区的文件修改,这时会有两种情况:

          ① 若此时暂存区中有相应文件,则从暂存区中将该文件恢复至工作区。

          ② 若此时暂存区中没有响应文件,则从本地仓库中按照最新提交的该文件内容进行恢复,并恢复至工作区。

        应用场景:想直接放弃对工作区文件的修改,重新进行修改。

          $ git reset HEAD <fileName>

        把已经暂存在暂存区的文件撤销暂存,重新放回到工作区。

        应用场景:不小心把不该提交的文件放到了暂存区,通过本命令撤销暂存。

        注:若不小心将不该提交的文件提交了(commit),可通过版本恢复,重新对文件进行修改。

          $ git rm <fileName> <fileName1> <......>

        在Git中删除掉一些文件,注意要在Git仓库中完成删除操作,在本命令之后需要进行一次commit提交。

      Git远程连接:

        为保证能够建立好远程连接,这里给出SSH传输协议连接方式,远程仓库为GitHub的示例说明。

        准备工作:

          若本机未曾建立过SSH传输,则需要创建SSH密钥:

            $ ssh-keygen -t rsa "email-account@example.com"

          通过此命令,便得到了SSH密钥,一个为私有密钥(需保密),一个为公开密钥(可公开),密钥文件路径:~/.ssh/

        建立连接:

          在GitHub中添加SSH公开密钥内容(若无法用打开方式打开密钥内容,试试 $ cat ~/.ssh/id_rsa.pub)。

            $ git remote add origin git@github.com:Author/gitname.git

          将本地Git仓库添加远程连接的GitHub仓库。

            $ git push -u origin master

          将master分支内容提交到远程GitHub仓库,此命令之后即可看到GitHub仓库内容同本地Git仓库内容相一致。

          此命令为第一次push时使用,在此命令之后,每次需要push时,命令 $ git push origin master 即可。

            $ git clone git@github.com:Author/gitname.git

          从指定的GitHub仓库中克隆文件/目录到本地Git仓库。

        注:

            $ git remote -v 

          查看当前Git仓库所关联的远程仓库。

            $ git remote rm origin

          删除与名为origin的远程仓库的连接。

            $ git pull

          从当前Git仓库所绑定的远程仓库中获取目录内容,由此来保证同远程仓库目录内容一致。

      Git分支:

          $ git branch 

        查看当前Git仓库中的分支状态(罗列出所有的Git分支,并在当前分支前用'*'来标识)。

          $ git branch dev

        创建一个分支,分支名为dev。

          $ git checkout dev

        从当前分支转换到dev分支。

          $ git checkout -b dev

        创建一个名为dev的分支,并转换到该分支。

          $ git merge dev

        在master分支上执行此命令时,Git会将dev分支上所做的修改同当前master分支上所做的修改进行合并(注意此时要dev已经commit,来保证文件在dev分支上被修改过)。

        此时可能会发生冲突,比如master分支上和dev分支上均对同一文件的同一位置进行了不同的修改,此时merge命令会报错,并且Git会要求解决掉冲突,重新修改文件后,才能正常提交。

        需要注意的是,本命令下,Git会执行Fast Forward合并,也就是说,Git会将两个分支的指针移动到一起实现merge,但这样很可能会丢掉dev分支上的工作进度。考虑到这种merge模式的弊端,通过命令 $ git merge --no-ff -m "information of the mrege with no-ff" dev 实现非Fast Forward模式合并。

        

          $ git branch -d dev

        删除dev分支。

        附:

          $ git log --graph --pretty=oneline --abbrev-commit 

        通过查看分支合并图的方式查看每次提交。

          $ git branch -D dev 

        强行删除一个未曾合并过的分支。

        

        Bug分支(这是分支常见的应用场景之一):

          考虑这样一种情况,当正位于dev分支上工作时,接到修复bug的任务,此时既要缓存dev分支工作进度,又要解决掉bug。

          方案:①缓存当前工作进度 --> ②转至修复bug提交分支 --> ③创建修复bug的分支并进行修复 --> ④回到修复bug提交分支并将修复版本合并提交 --> ⑤返回dev分支继续工作

          ① $ git stash 

            缓存当前工作进度,便于以后恢复工作进度,继续编辑。

          ② $ git checkout bugLine   // 转换到修复bug提交分支

          ③ $ git checkout -b issue  // 创建临时分支来修复bug

          ④ $ git checkout bugLine   // 转换到修复bug提交分支以准备提交修复版本

            $ git merge --no-ff -m "Finish Task." issue  // 通过非Fast Forward模式进行合并issue分支

            $ git branch -d issue    // 完成修复bug任务后,删除掉临时创建的issue分支即可

          ⑤ $ git checkout dev      // 返回dev分支

            $ git stash list        // 列出dev分支缓存列表

            方式一:$ git stash apply [stash@{No.}] 进行恢复,然后 $ git stash drop 将该缓存删除。

            方式二:$ git stash pop 恢复工作进度的同时,将缓存内容删除。

            

        远程分支提交:

            $ git checkout -b dev origin/dev

          为便于区分,建议创建远程分支时同远程分支结构相同。

            $ git push origin <branchName>

          向远程仓库提交自己所修改的分支。

          若提交失败,则因为远程分支比本地内容更新,需要用 $ git pull 试图合并。

          如果合并有冲突,则解决冲突,并在本地进行提交。

          没有冲突或者解决冲突后,再用 $ git push origin <branchName> 推送即可成功。

          若 $ git pull 提示"no tracking information",则说明本地分支和远程的分支没有建立连接,用命令 $ git branch --set-upstream <branchName> origin/<branchName>创建分支连接。

      Git标签:

          $ git tag <tagName> 

        创建一个新标签,这个标签默认被标记在最新一次的提交上(当前分支)。

          $ git tag 

        查看所有标签。这时所列出的标签不是按照提交时间进行排序的,而是单纯按照标签内容进行字母顺序排序。

          $ git tag v0.9 commitID

        为commitID的提交创建一个名为"v0.9"的标签。

          $ git show <tagName>

        查看标签所在的提交的信息。

          $ git tag -a v0.1 -m "verson 0.1 released." commit ID

        创建带有说明的标签,-a指定标签名,-m指定文字说明。

          $ git tag -d v0.1

        删除v0.1标签(而非删除该标签所代表的提交)。

          $ git push origin <tagName> 

        推送标签到远程。

          $ git push origin --tags

        一次性推送全部标签。

        注:

          若要删除远程标签,先在本地删除,再输入命令 $ git push origin :refs/tags/v0.1

      Git配置别名:

          $ git config --global alias.st status

        此命令后,输入 $ git st 就执行 $ git status 命令。

          $ git config --global alias.unstage 'reset HEAD'

        此命令后,撤销暂存区修改,执行命令 $ git unstage <fileName> 即可。

          $ git config --global alias.last 'log -1'

        此命令后,输入 $ git last 可显示最后一次提交信息。

          $ git config --global alias.ls "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

        丧心病狂... 此命令后,输入 $ git ls 可...可以试试看。

        注:

          上述的命令都被存储到 HOME 下的.gitconfig配置文件中的 [alias] 块中。以及上述的Author信息都被存储在.gitconfig文件中,故可通过修改该配置文件来自定义自己的Git配置。

    声明:

      本文章参考了廖雪峰Git教程

      其原文链接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

      

  • 相关阅读:
    mysql数据库突然连接失败,启动不了的解决思路,可能是磁盘满了,需要删掉日志后重启才能自动恢复
    关于投资的思考(90) 套利策略的前提,国内NFT数字藏品的探讨,巴菲特的聪明贝塔策略
    关于投资的思考(81) 低估值分批买卖策略梯度抄底法
    windows源代码安装VTK9,并使用Visual Studio 2017配置VTK9
    五种开源协议BSD、Apache、GPL、LGPL、MIT
    vtk简介_1和2章
    如何在 30 分钟完成表格增删改查的前后端框架搭建
    520,解锁开发者的专属浪漫
    JSON数据传输大法第一式——用OADate处理日期格式
    “银行家算法”大揭秘!在前端表格中利用自定义公式实现“四舍六入五成双”
  • 原文地址:https://www.cnblogs.com/stevenshen123/p/8541378.html
Copyright © 2020-2023  润新知