• Git常用命令学习笔记


    1. Git简介

    本地仓库由工作目录(持有实际文件)、暂存区(Index,缓存区域,临时保存改动)、HEAD(指向最后一次提交的结果)组成

    • 工作区:工作目录
    • 暂存区:stage或index,一般存放在 .git 目录下的index文件中
    • 版本库:工作区中有一个隐藏目录 .git 为Git的版本库

    2. Git配置

    • 读取当前所有的git配置信息

      git config --list
      
      • 1
    • 读取 /etc/gitconfig文件中的内容,该文件是系统中对所有用户都普遍适用的配置

       git config --system --list
      
      • 1
    • 读取 ~/.gitconfig 文件中的内容,该文件为用户目录下的配置文件,只适用于该用户

      git config --global --list
      
      • 1
    • 直接查看某个环境变量

      git config user.name
      git config user.email
      
      • 1
      • 2
    • 配置用户信息:个人的用户名和电子邮件地址

      # 如果去掉global只对当前仓库有效
      git config --global user.name ""
      git config --global user.email ""
      
      • 1
      • 2
      • 3
    • 针对当前仓库进行配置

      git config -e 
      
      • 1
    • 针对系统上所有仓库进行配置

      git config -e --global
      
      • 1

    3. Git 基本操作

    • 克隆仓库

      # 克隆远程仓库到当前目录
      git clone <repo>
      # 克隆远程仓库到指定目录
      git clone <repo> <directory>
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 创建仓库:初始化一个git仓库

      # 使用已经存在的目录作为git仓库
      git init
      
      # 使用已经存在的目录作为git仓库
      git init newrepo
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 提交操作:将文件提交到本地仓库

      
      # linux 中commit信息用单引号,windows中使用双引号
      git add 文件名/ *.文件后缀
      git commit -m ""
      
      • 1
      • 2
      • 3
      • 4
    • 查看项目的当前状态

      #文件状态:
      #   ?? 表示新添加的或未跟踪的文件
      #   A 表示新添加的未跟踪文件
      #   M 表示修改过的文件,M在左边表示该文件被修改了并放入了暂存区,M在右边表示该文件被修改了但是还没放入到暂存区
      git status
      
      # 以精简的方式显示文件状态
      git status -s
      
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
    • 工作区已修改未提交到暂存区但想丢弃修改

      git checkout -- [file]
      
      
      • 1
      • 2
    • 工作区已修改并提交到了暂存区但想丢弃修改

      
      git reset HEAD [file]
      
      • 1
      • 2

    4. 命令相关

    • git add 命令:将工作区文件添加到暂存区

      #添加一个或多个文件到暂存区
      git add [file1] [file2]
      
      #添加指定目录到暂存区,包括子目录
      git add [dir]
      
      #添加当前目录下所有文件到暂存区
      git add .
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    • git diff 命令:比较暂存区和工作区的文件差异

      # 尚未缓存的改动,查看暂存区和工作区的差异
      git diff
      
      # 查看已缓存的改动即提交到暂存区的改动
      git diff --cached
      git diff --staged
      
      # 查看已缓存的与未缓存的所有改动
      git diff HEAD
      
      # 显示摘要而非整个diff
      git diff --stat
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
    • git commit 命令:提交暂存区文件到本地仓库

      
      # 提交暂存区的指定文件到本地仓库 message可以是一些备注信息
      git commit -m [message]
      
      # 提交暂存区的指定文件到本地仓库
      git commit [file1] [file2] -m [message]
      
      # 添加-a参数,修改文件后不需要执行git add命令,直接提交
      git commit -am [message]
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • git reset 命令:回退版本

      # --mixed 为默认参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变
      # --soft参数用于回退到某个版本
      # --hard参数撤销工作区中所有未提交的修改内容,将暂存区和工作区都会退到上一次版本,并删除之前的所有信息提交
      
      # HEAD说明:HEAD表示当前版本,HEAD^上一个版本,HEAD^^上上一个版本,HEAD^^^上上上一个版本以此类推。也可以用 ~数字表示,HEAD~0表示当前版本,HEAD~1上一个版本,HEAD~2 上上一个版本,HEAD~3上上上一个版本
      
      
      git reset [--soft|--mixed|--hard] [HEAD]
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    • git rm 命令:删除文件

      # 将文件从暂存区和工作区中删除
      git rm [file]
      
      # 强行删除工作区和已修改过并放入到暂存区的文件
      # f参数:强制  r参数:递归删除,后跟目录时需添加
      git rm -rf [file]
      
      # 将文件从暂存区删除,但仍想保留在当前工作目录中
      git rm --cached [file]
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • git mv 命令:移动或重命名一个文件,目录或软链接

      
      # 重命名
      git mv [file] [newfile]
      
      # 如果新文件名已经存在,强制命名
      git mv -f [file] [newfile]
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • git log 命令:查看历史提交记录

      git log 
      
      # 查看历史记录的简洁版本
      git log --oneline 
      
      # 查看历史中什么时候出现了分支,合并
      git log --graph
      
      # 逆向显示所有日志
      git log --reverse
      
      # 查找指定用户的提交日志
      git log --author=name
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
    • git blame 命令:查看指定文件的修改记录

      git blame filename
      
      • 1
    • git remote 命令

      # 显示所有远程仓库 origin为远程地址的别名
      git remote -v 
      
      # 显示某个远程仓库的信息
      git remote show [远程仓库地址]
      
      # 关联远程版本库 并推送
      git remote add [本地仓库对远程仓库起的别名,一般为origin] [远程仓库地址]
      # 第一次加-u参数,以后直接使用git push 即可
      git push -u origin master
      
      # 删除关联的远程仓库
      git remote rm [远程仓库名]
      
      # 修改仓库名
      git remote rename old_name new_name
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    • git fetch & git merge 命令:从远程仓库提取更新的数据并合并到当前分支、

      git fetch [远程仓库别名]
      
      git merge [远程仓库别名/分支名]
      
      • 1
      • 2
      • 3
    • git pull 命令:从远程获取代码并合并本地的版本

      git pull [远程主机名] [远程分支名]:[本地分支名]
      
      • 1
    • git push 命令:将本地的分支版本上传到远程并合并

      git push [远程主机名] [本地分支名]:[远程分支名]
      
      # 强制推送
      git push --force origin master
      
      # 删除主机的分支
      git push origin --delete master
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • git branch 命令:列出分支

      # 列出分支
      git branch
      
      # 创建分支
      git branch branch_name
      
      # 切换分支
      git checkout branch_name
      
      # 创建分支并立即切换
      git checkout -b branch_name
      
      # 删除分支
      git branch -d branch_name
      
      # 合并分支,将其他分支的内容合并到主分支上
      git merge [分支名]
      
      # 合并如果有冲突,需要手动修改 并且 git add 告诉git文件冲突已经解决
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
  • 相关阅读:
    字体压缩神器font-spider的使用
    Go 语言进阶 - 工程进阶
    困扰所有SAP顾问多年的问题终于解决了
    QRCode.js生成的二维码水平居中的解决方案
    我的sql没问题为什么还是这么慢|MySQL加锁规则
    【scikit-learn基础】--『预处理』之 缺失值处理
    Codeforces Round 953 (Div. 2)(A~D题解)
    Vue组件化
    softmax函数
    C++11标准模板(STL)- 算法(std::merge)
  • 原文地址:https://blog.csdn.net/weixin_46078890/article/details/126289432