欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

git 常用命令以及其他使用笔记

发布时间:2025/3/21 编程问答 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 git 常用命令以及其他使用笔记 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

本篇文章记录了 git 的使用过程中的笔记,大部分为常用命令行记录。内容倾向查阅使用,而非教程,详细教程文中有链接。博客会不定时持续更新。

推荐详细教程

  • Git 官方资料
  • Git 官方资料(中文)
  • Git教程 - 廖雪峰的官方网站

名词解释与目录结构

1. .git 目录

/stage 或 /index:暂存区,具体见名称解释 /HEAD:版本指针 /config:配置文件

2. 名词解释

  • 工作区(Working Directory):就是你在电脑里能看到的目录,不解释
  • 版本库(Repository):就是 .git 目录
  • 暂存区:命令 git add . 就是将修改内容放置到暂存区,而命令 git commit 则是将暂存区的内容提交到当前分支
  • 初始配置

    效果:在"~"目录下会生成隐藏文件: .gitconfig

    # 配置用户 git config --global user.name "Your Name" git config --global user.email "email@example.com" # 查看用户 git config --global user.name git config --global user.email 复制代码

    仓库创建

    # 建立本地仓库 git init # 建立远程仓库(服务器使用命令) git --bare init # 从远端克隆仓库(只会克隆默认分支,一般是 master) git clone https://github.com/ReactiveX/RxJava.git RxJava/ 复制代码

    远程库与本地交互操作

    关联远程库

    # 本地与远程库关联 git remote add origin https://github.com/hanhailong/CustomRatingBar # 显示出详细的 remote 信息 git remote -v # 删除添加的远程库 git remote remove origin 复制代码

    远程分支管理

    # 从远程库更新到本地(不自动 merge) git fetchgit fetch origin master # 从远程库更新到本地(自动 merge) git pullgit pull origin master # 将本地分支推送到远程库(影响远程库,并自动关联本地分支与远程分支) # git push -u 远程库名称 本地分支名称:远程库分支名称 git push -u origin master:master # 将本地分支推送到远程库(影响远程库,不关联本地分支与远程分支) git push origin master:mastergit push origin master # 将本地当前分支推送到远程库(影响远程库,当前分支与远程分支已关联才可使用) git push # 查看远程库的分支信息 git branch -r # 拉取远程分支并创建本地分支 # git checkout -b 本地分支名称 远程库名称/远程库分支名称 git checkout -b dev origin/dev # 删除远程分支 git push origin --delete dev # 更新远程分支列表 git remote update origin --prune 复制代码

    远程标签管理

    # 拉取远程标签到本地标签(指定) git fetch origin tag v1.1.0 # 将本地标签推送到远程库(指定) git push origin v1.1.0 # 将本地标签推送到远程库(所有) git push origin --tags # 删除远程库标签(指定) git push origin :v1.1.0 # 其实不论是推送到远程,还是从远程库删除,命令均转换成以下语句,删除是源标签为空 git push origin refs/tags/源标签:refs/tags/目的标签git push origin refs/tags/v1.1.0:refs/tags/v1.1.0 复制代码

    备注:

  • origin:远程库名称
  • master, deve, dev:是远程/本地分支名称,自定义
  • 1.1.0:本地标签名称,自定义
  • 影响远程库的操作:

  • git push 系列命令
  • 本地仓库操作

    1. 查看帮助

    # 查看帮助 git help 复制代码

    2. 添加、删除、提交

    # 添加(内容更新到暂存区) git add .git add readme.txt # 删除(内容更新到暂存区,同时删除工作区文件) git rm readme.txt # 提交 git commit -m "Wrote a readme file" 复制代码

    3. 对比

    状态对比

    # 查看状态:当前代码库与最新版本的简单对比 git statusgit status readme.txt 复制代码

    内容对比

    # 工作区与暂存区对比 git diff -- readme.txt ## 有时可以省略 --,但不推荐,具体见下面的说明 # 工作区与版本区对比 git diff HEAD readme.txtgit diff HEAD -- readme.txt # 暂存区与版本区对比 git diff --staged readme.txtgit diff --cached readme.txt # 工作区与指定分支的版本区对比 git diff deve readme.txt # git diff 1094a readme.txt 复制代码

    说明:

  • 绿色表示文件被 git add,红色表示文件没有被 git add
  • git diff -- readme.txt:其中 -- 作用是防止命令变成分支对比,如果不存在该分支,则可以省略 --,但不推荐
  • deve:是分支名称,自定义
  • 1094a:是版本号,就是 commit id
  • 4. 日志

    # 查看项目 log git log # 查看某文件 log git log -- readme.txtgit log readme.txt # 只查看 10 个 log git log -10 # 一行显示 log,只显示哈希值和提交说明 git log --pretty=onelinegit log --oneline # 查看图形 Log git log --oneline --graph --abbrev-commitgit log --pretty=format:"%C(auto)%h %ad | %C(auto)%s%d %C(bold blue)<%an>" --date=short --graph --abbrev-commit # 查看某文件每次提交的 Diff git log -p readme.txt # 查看某文件指定提交的 Diff git show 1094a readme.txt # 1094a 是版本号,就是 commit id 复制代码

    说明:

  • 日志中 "HEAD —>" 当前版本指针,指向当前版本,以下简称 HEAD 指针
  • 5. 版本管理

    版本库管理(可能会影响到工作区)

    # 版本回滚(当前版本变为指定版本,同时暂存区被清空,不影响工作区) git reset HEAD^ # 版本穿梭(当前版本变为指定版本,同时暂存区被清空,工作区的所有 modified 文件被 Revert 到指定版本) git reset --hard HEAD^git reset --hard 1094a # 1094a 是版本号,就是 commit id # 查看版本管理命令历史,可用于获取所有的版本号 git reflog 复制代码

    说明:

  • HEAD: 表示当前版本,HEAD^:表示上一个版本,HEAD^^:表示上上一个版本,HEAD~100:表示上上上...(100个上)个版本
  • 版本号写前几位即可
  • 版本穿梭后 git log 就只显示到指定版本,即不含指定版本之后的 log 信息
  • 版本 Revert(不影响版本库)

    # Revert 到暂存区(工作区与暂存区相同) git checkout .git checkout -- readme.txt ## 有时可以省略 --,但不推荐,具体见下面的说明 # Revert 到指定版本库(工作区与指定版本库相同,同时暂存区被清空) git checkout HEAD^ .git checkout HEAD^ readme.txtgit checkout HEAD^ -- readme.txt ## 可以省略 -- 复制代码

    说明:

  • git checkout -- readme.txt:其中 -- 作用是防止命令变成分支切换,如果不存在该分支,则可以省略 --,但不推荐
  • 误删回滚:无论是 git rm,还是直接删除导致的误删,均可通过上述方式回滚
  • 6. 分支管理

    # 查看分支 git branch # 查看当前分支 git symbolic-ref --short -q HEAD # 创建分支(不切换分支) git branch deve # 切换分支 git checkout deve # 创建 + 切换分支 git checkout -b deve # 删除分支 git branch -d deve # 合并指定分支到当前分支(Fast forward 模式,不保留分支信息) git merge deve # 合并指定分支到当前分支(推荐,禁用 Fast forward 模式,保留分支信息) git merge --no-ff -m "add merge" deve # 关联分支与远程分支 git branch --set-upstream-to origin/deve deve 复制代码

    备注说明:

  • deve:是分支名称,自定义
  • git branch:当前分支前面会标一个 * 号
  • 切换分支:如暂存区不为空(即执行过 git add),则需 git commit 或者 git reset 才能切换分支
  • 7. stash 模式

    # 当前工作现场存储起来,用于临时切换分支 git stash # 查看已存储的所有的工作现场信息 git stash list # 查看工作现场文件状态信息 git stash showgit stash show --index 1 # 工作现场恢复(不删除工作现场) git stash apply # 不推荐,具体原因见下面说明git stash apply --index 1 # 删除工作现场(不推荐,具体原因见下面说明) git stash drop # 不推荐,具体原因见下面说明git stash drop --index 1 # 工作现场恢复(自动删除工作现场) git stash pop # 不推荐,具体原因见下面说明git stash pop --index 1 复制代码

    备注说明:

  • --index 1:1 表示索引号,可通过 git stash list 查看
  • git stash apply:不推荐,因为如果存在多个工作现场,则容易出现工作现场存在冲突的问题。推荐追加参数 --index
  • git stash pop:不推荐,原因同上,不过一旦冲突,工作现场并不会自动删除。推荐追加参数 --index
  • git stash drop:不推荐,容易造成误删除,因为该命令删除的是索引号为 0 的工作现场(并不管该工作现场是哪个分支的)。推荐追加参数 --index
  • 8. Tag 管理

    • Git 官方资料
    • Git 官方资料(中文)
    # 列显已有的标签(按字母顺序排列) git tag # 列显已有的标签(检索模式) git tag -l 'v1.1.*' # 新建标签(轻量级标签:指向特定提交对象的引用) git tag v1.1.0 # 新建标签(含附注的标签:独立对象,有自身的校验和信息) git tag -a v1.1.0 -m 'my version 1.1.0' # 新建标签(签署标签:含附注的标签的一种) git tag -s v1.1.0 -m 'my signed 1.1.0 tag' # 后期向某次提交加注标签 git tag -a v1.2 9fceb02 # 删除标签 git tag -d v1.1.0 # 验证标签 git tag -v v1.1.0 # 切换标签(切换到一个名为'(HEAD detached at v1.1.0)'的空白分支上) git checkout v1.1.0 复制代码

    备注说明:

  • v1.1.*、v1.1.0:标签名称,自定义
  • 9fceb02:某次 commit 信息,自定义
  • 译注:

    • -a:取 annotated 的首字母
    • -s:取 signed 的首字母
    • -v:取 verify 的首字母

    git 全局配置

    # 设置[pretty] git config --global pretty.graph '%C(auto)%h %ad | %C(auto)%s%d %C(bold blue)<%an>' # 设置别名:[alias] git config --global alias.logg 'log --pretty=graph --date=short --graph --abbrev-commit' 复制代码

    添加 Git 忽略配置

    由目录下的[.gitignore]文件确定,使用规则如下:

    通配符:

    • / :表示目录
    • * :匹配多个字符
    • ? :匹配单个字符
    • ! :包含单个字符的匹配列表
    • [] :表示不忽略(跟踪)匹配到的文件或目录

    详细说明:

    • 一行一个忽略项
    • 配置按从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效
    • 规则【build/*】: 等同于【build】,忽略根目录或某一目录下的[build],以及其下的全部内容
    • 规则【/.idea/*】: 等同于【/idea】,忽略根目录下的[.idea],以及其下的全部内容
    • 以下规则,表示忽略全部内容,但是不忽略[.gitignore]文件

    /*

    !.gitignore

    总结

    以上是生活随笔为你收集整理的git 常用命令以及其他使用笔记的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。