zoukankan      html  css  js  c++  java
  • git命令行常用操作

    常用命令

    mkdir <文件夹名> ---创建文件夹

    cd <文件夹名> ---打开文件夹

    ls ---显示项目目录

    vi <文件名> ----打开文件

    英文模式下的 i/insert --进入编辑模式

    英文模式下的 esc ----推出编辑模式

    英文模式下的 ZZ/:wq ---退出修改

    git status ---查看工作目录的状态(未添加追踪、待提交、提交状态)

    git branch -a ---查看远程分支状态

    git branch ---查看本地分支状态

    git log ------ 查看提交的版本信息

    下载项目、切换分支和上传代码

    1. 克隆项目:

      git clone 项目地址(.git)
      
    2. 拉去远程分支代码(不太会用)

      git pull origin master  // 直接覆盖本代代码
      git fetch origin master  // 还要手动将代码添加到本地
      
    3. 切换分支

      • 本地有这个分支

        git checkout <分支名>
        
      • 本地没有这个分支,要获取远程的某分支

        # 方式一:
        git checkout b <分支名>  //是创建并切换到目标分支
        git reset --hard origin/chunyan     ---用远程分支chunyan的代码完全覆盖当前分支
        
        # 方式二
        git pull
        git branch -a
        git checkout <分支名>
        
        # 方式三
        #拉取远程分支
        git checkout -b 本地分支 origin <远程分支>
         
        #拉取远程分支
        git pull origin 远程分支 
         
        #建立分支
        git branch --set-upstream-to origin/远程分支名  本地分支名
         
        #拉取分支
        git pull
         
        #遇到本地冲突,先删除本地分支,再重新拉取远程分支
        git branch -D 本地分支名称
        
    4. 上传代码

      git push origin <分支名>      ---- 将本地分支提交到远程仓库
      

    本地修改代码提交

    1. git status ---------可以查看有没有改变没有被跟踪

    2. git add filename ----对改变建立跟踪,可以通过 git reset命令撤销

    3. git commit ---------将改变缓存到本地服务区,不可以通过git reset命令撤销

      # 快捷操作
      git add .  # 添加所有文件
      git commit -am '提交描述' # 快速提交所有文件
      
      # 修改提交
      git commit -amend '描述文字' 
      # 如果工作目录没有已经追踪的文件(通过git add .追踪),则只会出现如下对话框让你更改提交描述
      # 如果工作目录有意境追踪的文件,它会自动将追踪的文件添加到提交目录,并出现下面的对话框让你更改提交描述
      
    4. git push -----上传改变

    本地代码的修改、提交和撤销提交

    三棵树原理

    请查看-相册-三棵树
    1. git add <文件名> -----将沙盒的文件添加到索引

    2. git commit -m '描述' ---- 将索引的快照提交

      查看本地已经commit但没有push的分支: git cherry -v

      # usage: git cherry [-v] [<upstream> [<head> [<limit>]]]
      git cherry -v origin/master HEAD~1
      # upstream代表分支  --有时候可以不要,有时候不要又会报错
      # HEAD~1表示提交的最新的一个版本;HEAD~2表示最近提交的两次分支,下面的为最新的
      
      image-20200601183316996
    3. git push origin <分支名> ----将本地提交传到远程仓库

      注意:上传到远程仓库的代码,不是以每次上传作为一个版本,而是以提交过的记录作为一个版本

    4. 撤回提交(没有上传到远程服务)

      • reset: 以可预见的方式直接操纵三棵树

        git reset --soft HEAD~ # 撤销最近的一次提交,即将最近一次提交退回到索引状态,HEAD指向上一次提交(HEAD~表示父节点)
        git reset --mixed HEAD~ # 不仅撤销最近一次提交,还会取消暂存区(既索引)所有内容,但工作目录不变
        git reset --hard HEAD~ # 撤销最近一次提交,同时删除暂存区和工作目录的所有内容。这是 git reset仅有的一个危险用法 
        git push origin develop --force  (本地分支和远程分支都是 develop)
        也可以把 HEAD~  直接改成你想要退回的版本号
        
    5. 撤回提交(提交已经上传到远程服务)

      git log  # 查看提交的版本信息
      git revert <commit_id> # 写那次提交的commit_id就撤销那个版本;还是只对本地文件进行修改,要在push origin <upstream>上传撤销的动作
      
    image-20200601185548152

    注意:以上两个撤回操作操作的都是本地仓库,最终要把改变上传到远程仓库才能在远程仓库起效

    合并分支

    网址

    创建三个分支

    • 在master分支下创建了一个master.txt文件

      在master分支下创建了一个文件
      
      # 切换到dev分支
      git checkout dev
      
      # 将 tingting分支的代码合并到dev分支
      git merge tingting
      
      # 提交修改
      git push   直接提交了代码
      
    • 通过master分支拉起一个dev分支,并在dev分支下添加文件dev.txt。并提交代码到远程仓库

      从master分支拉去一个dev分支
      
    • 通过dev分支拉起一个ssui分支,并在ssui分支下添加文件ssui.txt。并提交代码到远程仓库

      从dev分支拉去一个ssui分支
      

    更改dev分支的代码,并合并到master分支

    • 切换到dev分支,并且修改代码

      //master.txt
      我在dev分支改了master.txt文件的内容
      
    • 提交dev分支的代码

      git commit -a -m '第一次提交dev分支的代码'
      
    • 合并dev分支的代码到master分支

      # 切换到master分支
      git cehckout master 
      # 在本地将dev分支的代码合并到master
      git merge dev
      # 如果没有冲突(因该是不会有冲突),就直接提交代码
      git push 
      

    修改ssui分支的代码,并合并到master分支上

    • 切换到ssui分支,并修改master.txt文件如下:

      // master.txt
      我在ssui分支里修改了master分支的代码
      
    • 提交ssui分支的代码

      git commit -a -m '第一次提交ssui分支的代码'
      
    • 将ssui分支的代码合并到master分支

      # 切换到master分支
      git cehckout master 
      # 在本地将dev分支的代码合并到master
      git merge ssui
      # 这是就会出现冲突,并且分支的标志会变成 [master|MERGING]
      # 根据提示修改冲突,然后提交代码
      git commit -a -m '合并ssui分支的代码到master分支上'
      git push
      

      image-20200428094342487

      注意:

      1. 合并代码前,记得先提交一下本地代码
      2. 当多个分支同时修改了待合并的分支(master)的同一个地方时,在合并时就可能出现冲突。这是就必须解决冲突再提交代码

    终止合并

    当合并两个分支的代码出现冲突的时候

    # 会尝试恢复到进行合并之前的状态。唯一的不好之处在于如果合并之前你的巩固走目录有未暂存、未提交的变更,就会被覆盖。所以在执行合并之前一定要确保你的工作目录是干净的。
    git merge --abort
    
    image-20200519083549105
    # 回到之前的某一次状态。这种方式会清楚工作目录里的所有内容,一定要确认自己已经不需要这些变更了,才执行这条命令
    git reset --hard HEAD~1
    

    当我将本地文件还原到上两个版本后,再执行操作时就会出现下面的提示,要怎么解决

    image-20200519082708160

    用远程分支覆盖本地分支

    # 1.我想将test分支上的代码完全覆盖dev分支,首先切换到dev分支
    git checkout dev
    # 2.然后直接设置代码给远程的test分支上的代码
    git reset --hard origin/test
    
    # 3.执行上面的命令后dev分支上的代码就完全被test分支上的代码覆盖了,注意只是本地分支,这时候还需要将本地分支强行推到远程分支。
    git push -f
    
  • 相关阅读:
    【剑指Offer-循环和递归】面试题10.4:矩形覆盖
    【剑指Offer-循环和递归】面试题10.3:变态跳台阶
    【剑指Offer-面试案例】面试题66:把字符串转为整数
    【剑指Offer-发散思维能力】面试题66:构建乘积数组
    【剑指Offer-发散思维能力】面试题65:不用加减乘除做加法
    【剑指Offer-发散思维能力】面试题64:求1+2+...+n
    【剑指Offer-抽象建模能力】面试题62:圆圈中最后剩下的数字
    【剑指Offer-抽象建模能力】面试题61:扑克牌中的顺子
    【剑指Offer-知识迁移能力】面试题59:滑动窗口的最大值
    【剑指Offer-知识迁移能力】面试题58.2:左旋转字符串
  • 原文地址:https://www.cnblogs.com/tina-12138/p/12996821.html
Copyright © 2011-2022 走看看