• git常用命令


    git教程参考(廖雪峰的教程):https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    1、基础命令

    1)初始本地库

    命令:git init 

    2)添加修复到缓冲区

    命令:git add

    命令:git add . 【注意有个句点】是添加所有文件的修改到缓冲区

    不管是新增的文件还是修改的文件,都要add到缓冲区再commit提交

    3)删除版本库里面的一个文件

    命令:git rm 文件名

    比如项目里有个文件要删除,先在工作区删除,然后执行上面的命令,就会在把删除操作添加到缓冲区,commit后会生效

    4)查看状态:比如当前分支、文件修改情况

    命令:git status

    5)把缓冲区的修改提交到版本库

    命令:git commit -m ‘提交的说明’

    6)修改撤回

    命令:

    git reset --hard HEAD^           回退到上一个版本
    git reset --hard HEAD^^         回退到上2个版本
    git reset --hard HEAD~100    回退到上100个版本
    git reset --hard 版本号(commit id)       回退到指定版本

     注意:git log 命令可以查看提交的版本号

    7)回退工作区文件的修改

    命令:git checkout -- 文件名 

    注意:如果文件的修改提交到了缓冲区,而且之后还有修改,那么此命令会让工作区内容和缓冲区一致

      

    8)从缓冲区撤回修改到工作区

    命令:git reset HEAD 

    9)查看提交日志

    命令: git log
    git log --pretty=oneline  按时间线查看

    10)查看历史操作命令

    命令: git reflog

    11)克隆仓库

    命令: git clone 仓库地址

    仓库地址可以是 git@.....  或者https://......执行这2种协议,git协议的传输会快些

    12)分支相关

    git branch  查看本地分支

    git branch -a 查看远程库分支

    git branch 分支名  创建新分支

    git branch -d dev  删除分支。如果分支没有合并到其他分支,那么会有报错提示。

    git branch -D dev 强制删除分支 

    13)切换分支

    git check 分支名

    git check -b 分支名  创建并切换到新分支

    14)关联远程库分支

    git remote add origin 远程库地址

    注意:

    git remote add 远程库名 远程库地址
    本地代码可以关联多个远程库,远程库名和地址要区别开来,不能都用origin

    15)推送代码到远程库

    git push -u origin 分支名 

    git push origin 分支名

    16)合并分支

    git merge 分支名

    这里比如当前是在master,然后执行 git merge dev,是把dev分支合并到master分支

    git merge -m ‘合并分支说明’ 合并分支并提交说明

    17)暂存修改

    git stash 把工作区的修改暂存

    git stash list  查看存储的内容列表

    git stash apply stash内容恢复到工作区,stash列表里面不删除该内容,需要用 git stash drop 来删除

    git stash pop stash内容恢复到工作区,stash列表里面会删除该内容

    18)查看远程库信息

    git remote  查看远程库信息  

    git remote -v会展示更详细信息

    19)拉取代码

    命令: git pull 
    如果失败,可能是本地分支和远程分支没有做关联
    git branch --set-upstream-to=origin/dev dev
    git branch --set-upstream-to <branch-name> origin/<branch-name>

    20)标签相关

    git tag 查看所有的标签,结果按照字母排序,而不是按照时间排序
    git tag 标签名 打标签,根据当前分支的最新commit id
    git tag 标签名 指定commit id
    git tag -a 标签名 -m 标签说明
    git show 标签名 查看标签的信息

    git tag -d 标签名 删除一个本地标签
    git push origin 标签名 把标签推送到远程库
    git push origin --tags 推送本地尚未推送到远程的所有标签
    如果标签已经推送到远程,则要分两步删除,先删除本地,再删除远程
    第一步  git tag -d 标签名
    第二步  git push origin :refs/tags/标签名

    21)回退版本

    命令: git revert 版本号 

    2、实操

    1)github上创建仓库,注意要创建一个新文件,名字没关系,比如readme.txt或者index.html等都行

    2)电脑上打开git bash,然后git clone,选择git协议的

    前提是必须把自己电脑上的.ssh目录下的公钥在github上配置下。

    备注:使用git协议的,如果ssh生成公钥密钥时没有设置密码,那么以后git push 就不需要输入密码。

    使用https方式的,每次都要输入密码。所以推荐git协议的。

     3)修改文件,git clone后本地有一个index.html,修改文件内容,然后提交

    git add index.html

    git commit -m "111"

    4)推送到远程库

    5)本地新建分支dev,并切换到dev分支

     

    本地分支是dev,远程分支还没有dev

    6)修改文件并提交dev分支

    当前在dev分支,修改index.html的内容然后提交

    git add index.html

    git commit -m "222"

    7)推送到远程的dev分支

    先测试下直接git push会不会报错:

    报错了,表示本地dev分支没有关联一个远程分支。此时远程也没有dev分支。

    下面执行正确的命令:git push origin dev

     

    推送成功。

    在github上查看:

    而dev分支:

    8)合并dev分支代码到master分支

    首先,先切换到master分支:

    开始合并分支:

     

    推送到远程库:

    然后在github上查看:

    3、其他

    1)reset 和 revert都能回退,有什么区别呢?

    先看下reset命令。新建reset.txt文件,提交了3次:

    文件内容:

    现在回退到第一次提交:

    现在看下文件的内容:

    文件内容已经改为第一次提交的情况

    看下远程库的:

    本地的先提交下:

    提示说没有可以提交的。因为reset是回退版本,工作区的文件内容会退到了第一版。缓冲区没有修改的,所以会有这种提示。

    远程库的也没有改变,

    直接push也失败了。原因是远程库的代码版本领先本地的版本,因为本地的版本是回退了。所以直接push会提示不能用老版本覆盖掉新版本。

    强制推送,成功了。因为是强制推送,表示可以覆盖,所以远程库也就跟本地一样,回退了。

    下面看下revert的操作过程:

    新增revert.txt,提交了三个版本:

    revert.txt文件内容:

    现在回退到上一版:

     

    这里是因为我在编辑器打开了这个文件,所以有警告。但是实际上文件内容已经修改了:

    可以看到回退的内容是到了缓冲区,需要提交

    这样推送后,本地和远程的就一致了。

    现在开始对比下reset和revert的区别

    第一、reset回退版本,首先是回退本地的,如果此时就要提交到远程,要强制提交;

    第二、revert回退版本,也是首先回退本地的,本地文件会被修改,而且是直接提交到了缓冲区,需要commit,然后可以推送到远程库;

    第三、reset回退的,中间有版本提交信息丢失,revert的能看到每一次提交的,回退本身也是一个提交操作。

    第四、从第三点可以看出,如果是reset提交,那么如果回退后并且提交到远程库,还想恢复,应该恢复不了。而revert的,因为每一次提交都保留了记录,所以很安全。

    综上,还是建议用revert命令。reset用来恢复文件比较好。

  • 相关阅读:
    Oracle 实现数据表插入时主键列自增
    Java BigDecimal 加减乘除用法
    php最常见最经典的算法题(1)
    2、php-选择排序方法
    1、php-冒泡排序方法
    65G-一系列Go语言课程Go基础知识高级Go项目战斗New Go语言和区块链开发实践课程
    css
    python基础
    SEO优化指南
    转载GXT之旅
  • 原文地址:https://www.cnblogs.com/guangye/p/10012153.html
Copyright © 2020-2023  润新知