git常用命令清单
admin
2023-07-27 18:00:09
0

本文通过学习廖雪峰老师的git教程整理而成,文章几处引用教程中的图,侵删,老师的git教程链接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

概念简单介绍

在A目录使用git进行版本管理,A目录即为工作区,我们在工作区上面操作文件(创建、修改、删除等等),A目录下的隐藏目录.git是版本库,.git目录下主要有暂存区(stage)和当前分支(默认的git会自动创建master分支,不指定时当前分支指向master)两部分,如下图
git常用命令清单

常用操作

  • 在指定目录下创建版本库:
    cd 
    git init
  • 创建一个新目录,并创建版本库:
    git init 
  • 将文件添加至版本库:
    git add        //将文件修改添加到暂存区中;
    git commit -m 'MESSAGE'   //将stage中的所有修改提交到当前分支上;
  • 查看目录文件状态是否与版本库一致:
    git status
  • 查看目录文件与版本库中的不同点:
    git diff 
  • 查看提交日志(可用于版本回滚):
    git log

    git常用命令清单

  • 回滚至某个版本:
    git reset  

    (回滚至A版本后,再次git log时没法查到A版本之后的版本的commit id,此时如果想回到A版本之后的版本B时,可使用git reflog查看B版本的commitid)

  • 撤销工作区的修改:
    git checkout -- 

    结果说明:
      当FILE修改后未add到暂存区时,此时撤销结果会将回到跟版本库中的状态。
      当FILE已经add到暂存区后,又对FILE进行修改,此时撤销结果会回到跟暂存区一样的状态。
      总结:先查看暂存区中是否有FILE,有则将暂存区中的FILE状态同步到工作区,否则将当前版本的FILE状态同步到工作区

  • 撤销暂存区中的修改:
    git reset HEAD 

    结果说明:
      暂存区中没有FILE的修改,工作区FILE还是保持修改状态的。

  • 删除文件三步骤:
    rm                  //删除工作区中的FILE
    git rm              //删除版本库中的FILE
    git commit -m 'MESSAGE'   //提交修改  

    (误删时,只需git checkout -- 即可恢复文件)

    远程管理

    将本地git仓库推送同步到远程仓库

    1. 在github上创建一个新仓库(此时为空的)
    2. 将远程库和本地库关联起来
      git remote add origin git@github.com:lzs666/gittest.git

         (origin:远程库的名称,git@github.com:lzs666/gittest.git:在github上创建的新仓库的地址)

    3. 本地库的所有内容推送到远程库上
      git push -u origin master

        (会将本地库的master分支内容推送到远程库的master分支上,-u参数会将本地的master分支与远程库的master分支关联起来,之后再push就不需要添加这个参数了)
      推送本地分支内容同步到远程

      git push origin       //将本地指定分支同步到远程库的分支

      抓取分支
      使用git clone时,本地默认只能看到master分支,若想在dev上开发,必须手动抓取origin的dev分支到本地。

      git checkout -b dev origin/dev

      之后开发完push到origin的dev分支上:

      git push origin dev

      若此时push时,若发现已经有其他人push过了且与你推送的内容有冲突,会导致推送失败,解决如下:

    4. 指定本地dev分支与远程origin/dev分支的链接
      git branch --set-upstream-to=origin/dev dev
    5. 将最新的origin/dev抓取下来,此时工作区内容会变成origin/dev的状态
      git pull
    6. 修改后commit,再push

      分支管理

  • 创建一个分支:
    git branch dev
  • 切换到指定分支(切换后,会将工作区同步到dev分支的状态):
    git checkout dev
  • 创建dev分支并切换到dev分支上(相当于上面两个步骤):
    git checkout -b dev
  • 查看当前所在分支:
    git branch    //会列出所有分支,当前分支面前会有一个*号
  • 合并指定分支到当前分支:
    git merge dev

    说明:
    git merge dev执行时,只是将当前head指针移动到dev所在的位置,如下图
    git常用命令清单
    此时如果将dev分支删除,之后git log无法查看分支历史,所以合并时可使用--no-ff参数修改合并模式,在merge时不是简单移动指针,而是生成一个commit至内容与dev一致。这种方式merge后便可通过git log查看分支合并历史。

    git merge --no-ff -m 'COMMIT_MESSAGE' dev

    此时的merge过程如下图,其中结点1和结点2的内容是一样的。
    git常用命令清单

  • 删除指定分支(当前分支不能是dev):
    git branch -d dev
  • 删除一个没有被合并过的分支

    git branch -D 

    标签管理

    标签作用:对应一个commitid,方便版本跳转。
    标签特性:一个标签对应一个commit版本,同一分支上不能出现两个相同的标签名。

  • 创建标签
    git tag      //为当前版本库中最新版本打上标签,即当前HEAD指向的版本
    git tag           //为指定版本打上标签
    git tag -a  -m "message"    //打上标签时添加说明信息
  • 查看指定标签的信息
    git show 
  • 查看已打标签
    git tag
  • 删除指定标签
    git tag -d 
  • 推送指定标签到远程
    git push origin 
  • 推送全部未推送到远程的标签
    git push origin --tags
  • 当标签已经被推送到远程,此时想删除
    1、git tag -d       删除本地的标签
    2、git push origin :refs/tags/      删除远程标签

    特殊场景

    当由于某种情况无法提交,此时又得新建一个分支处理其他事情时,可使用stash功能将工作区的改变先储存起来,等其他事情处理完后再恢复现场。


假设当前master分支的test.txt内容如下:
cat test.txt
this is for git test in master
当前我们在dev分支,且将test.txt内容修改如下:
cat text.txt
this is for git test in dev
但我们还不能提交改变。此时要求我们新建一个新的分支去处理其他事情。


处理方法如下:

  1. 储藏工作区的改变
    git stash

    执行后,工作区状态会变成当前分支最新版本的状态,即test.txt内容为"this is for git test in master",之前所做的改变被储藏起来了。

  2. 创建新分支区处理其他事情。
    git checkout -b forotherthing
  3. 处理完后切回dev分支
    git checkout dev
  4. 恢复现场,并将stash内容删除
    git stash pop

    说明:
    修改A文件--->git stash--->再次修改A文件--->git stash
    此时git stash list会查到多个stash,可通过git stash apply stash@{N}恢复指定的stash,从而恢复到指定的状态。

    git stash drop      删除stash内容

    欢迎扫码关注公众号“KeepCode”,分享更多技术好文,并提供技术电子书籍免费下载,每天进步一点点~~~~
    git常用命令清单

相关内容

热门资讯

浙江宣传:“走个面儿”咋就没面... “咱北京两千多万人口,您受累,您走个面儿,把这第一波的票房带起来,咱就有了。”某知名导演的新片首映礼...
辞职声明仅95秒遭质疑,韩国队... 【环球时报综合报道】美加墨世界杯小组赛出局后,韩国队主教练洪明甫当地时间28日在墨西哥的韩国队大本营...
美媒爆料:美军第五舰队总部遭伊... 据美国《华尔街日报》27日报道,其通过对卫星图像、社交媒体视频和五角大楼记录的分析发现,今年2月底至...
英国智库给菲律宾GDP增速“浇... 【环球时报特约记者 叶满】英国经济研究机构凯投宏观发布的最新一期《亚洲经济展望》报告(以下简称“报告...
欧洲持续高温,有华人用冰箱降温... 连日来,欧洲多国迎来罕见极端高温天气,法国、德国、意大利等地气温持续飙升,部分地区突破40摄氏度。受...
伊副外长强调船只须按“伊朗线路... 伊朗外交部副部长加里巴巴迪当地时间29日晚间在接受采访时强调,所有船只均须按照“伊朗线路”通过霍尔木...
委内瑞拉强震已致1719人死亡 当地时间29日,委内瑞拉全国代表大会主席罗德里格斯通报,地震已造成该国1719人死亡,5034人受伤...
铋晟新材料申请氯氧化铋基复合材... 国家知识产权局信息显示,江苏铋晟新材料有限公司申请一项名为“一种氯氧化铋基复合材料及其制备方法和用途...
韩国政府将投资千万亿韩元于AI... 韩国总统李在明29日在总统府青瓦台主持召开会议,公布总额超千万亿韩元的半导体、物理人工智能(AI)和...
以色列防长称以伊可能随时再起冲... △卡茨(资料图)据以色列方面29日消息,以国防部长卡茨当天表示,鉴于复杂的安全局势和在黎巴嫩的军事行...