Git 命令介绍 | branch分支 远程追踪 提交找回 tag标签 config
git相关命令
git config
--local
当前仓库设置
--global
全局设置
git config --global user.name "xx"
git config --global user.email "xxx@xxx.xx"
-l
、--list
列出配置内容
创建仓库命令
$ git init
# 初始化一个仓库
$ git clone 路径
# 从远程克隆一个仓库
git remote add 仓库名 <url>
# 添加远程仓库
提交
git add 文件/文件夹/.全部文件
# 将工作区内容添加到暂存区
git commit
# 将暂存区内容提交到本地仓库
git commit --amend
# 修改git提交记录
提交日志
git log
# 显示详细提交记录
git log --pretty=oneline
# 单行显示每条提交
git --no-pager log >> log.txt
# 将所有日志保存至 log.txt
操作日志
包括已经被删除的 commit 记录和 reset 的操作
git reflog
使用
git reset --hard HEAD@{X}
就可以将误操作的提交找回了
其他
$ git status
# 查询仓库状态
# 比较暂存区与工作区差异
git diff
# 比较本地仓库与暂存区
git diff -cached
# 比较本仓库与远程仓库
git diff master origin/master
--stat
显示有多少行发生变化
可指定文件/文件夹的差异比较
撤销
$ git reset 目标路径
# 版本回退 不适用于共用的远程仓库,结点会被遗弃,相当于修改了历史,各端分支版本就不统一了
# 其他人不知情的话,就会合并出很多分支
-
--mixed
为默认参数,回到指定提交(commit),工作区文件内容保持不变;被撤回的提交,其内容会重新进入工作区;同理暂存区中内容也会进入工作区。 -
--hard
参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有提交信息
$ git revert
# 撤销所选修改(可恢复)。 不会舍去原有结点,而是在其后添加撤销后的结点,这样保留了历史
# 不仅如此可以达到移除指定提交的效果!
删除与重命名文件
$ git rm
# 删除工作区文件
$ git mv
# 移动或重命名工作区文件
# 删除缓存区文件
git rm --cached -f 文件名
远程操作
$ git remote
# 将本地参考链接到远程仓库
$ git remote -v
# 查看链接的远程仓库
# 添加与移除
$ git remote add 仓库名 地址
$ git remote rm 仓库名
拉取和对应分支拉取
git fetch [<远程仓库> <远程分支>]
git fetch [<远程仓库> <远程分支>:<本地分支>]
# 从远程获取代码
# 远程分支 可以是分支可以是HEAD或相对路径,亦或是哈希值
# 当:目标分支 不存在时,将自动创建
git pull [<远程仓库> <远程分支>]
git pull [<远程仓库> <远程分支>:<本地分支>]
# 从远程下载代码并与本地合并 git fetch 加 git merge 的简写
# git pull --rebase => git fetch 加 git rebase 的简写
# -u 可将本地分支与远程分支关联——远程追踪
git push [<远程仓库> <远程分支>]
git push [<远程仓库> <本地分支>:<远程分支>]
# 上传本地代码并与远程合并 分支不填时,默认HEAD所指的分支
<source>:<destination>
中,当source为空时,会删除掉远程目标分支 会创建本地目标分支
在本地远程分支表示为: 远程仓库名(默认origin)/ 分支名
git分支控制
查看分支
# 查看所有远程分支:
git branch -r
# 查看远程和本地所有分支:
git branch -a
# 查看本地分支:
git branch
重命名分支
# 重命名分支
git branch -M 旧名 新名
删除分支
# 删除分支
$ git branch -d 分支名
# -D 强制删除
创建分支
$ git branch 分支名
# 新建一个分支,并切换到该分支
git checkout -b 本地分支名
设置远程追踪(关联)
# 新建一个分支,并切换到该分支 并关联
git checkout -b 本地分支名 [关联的远程仓库/远程分支]
# 另一种设置关联(跟踪)的方法
git branch -u 远程仓库/远程分支 本地分支
# 本地分支留空则默认当前分支
# 等价于 git branch --set-upstream-to 远程仓库名/远程分支名 本地分支
# 撤销映射关系 git branch --unset-upstream
切换分支
# checkout 改变的是HEAD指针
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 移动到上一个分支 XX^[n] (XX为指针名或分支名) n在父结点为多个时有用,用于选择父结点 2为第2个父节点
# 向上移动n步 节点~n 不接数字时等同于^
# 操作符~和^可以进行链式操作
移动分支
$ git branch -f [待移动分支] 目标位置(可为相对位置^/~)
# 待移动分支默认为当前分支,无分支则移动HEAD
注:对于移动到有tag的节点,会操作HEAD分离,或是移动失败
合并分支
# 合并指定分支到当前分支
git merge [branch]
git merge -m <msg> <commit>
git merge --abort
git merge --continue
处理合并冲突
git ls-files -s
命令输出的第二列的值如果为 0 表示对应的文件没有冲突,合并成功;如果不为0,则表示产生了合并的冲突。
其中具体的值对应的意义是:
1表示两个用户之前一个共同版本的对应文件内容;
2表示当前用户对应的文件版本;
3表示合并后的文件对应的远程版本。
git show :n:filename
查看对应文件的对应版本的内容
复制与重排
cherry-pick
$ git cherry-pick 需要复制的结点
# 需要事先知道哈希值
# 会按照提供节点的顺序,复制到本分支下
rebase -i
”-i“ 是指交互模式
$ git rebase -i 重排接入的结点
# 之后会进入编辑,设置排列顺序和删除结点
# 可选该分支上的节点
交互编辑页面标注含义:
pick | 保留该commit | (缩写:p) |
reword | 保留该commit,修改该commit的注释 | (缩写:r) |
edit | 保留该commit,** 修改该提交(不仅仅修改注释) ** | (缩写:e) |
squash | 将该commit 和前一个commit合并 (可编辑合并后的提交信息) | (缩写:s) |
fixup | 将该commit和前一个commit合并,不保留该提交的注释信息 | (缩写:f) |
exec | 执行shell命令 | (缩写:x) |
drop | 丢弃该commit | (缩写:d) |
工作区缓存
# 缓存工作区内容
git stash [save "备注的内容"]
# 应用缓存 不删除缓存
git stash apply [stash@{1}]
# 应用并删除缓存
git stash pop [stash@{n}] # 如 js 数组调用 pop 移除最后一个并返回其值
# 删除最近的一次stash
git stash drop
# 删除stash的所有记录
git stash clear
# 查看缓存列表
git stash list
Git标签 tag 一般用来锁定版本
列出版本:
git tag
# 列出所有版本
git tag 标签名/版本号
# 简明标签
git tag 版本号 指向结点
# 对指定提交添加标签
git tag -a 版本号 -m "描述信息"
# 带描述信息的提交
git show 版本号
# 展示版本的详细信息
将标签信息推送到远程仓库
git push origin 版本号
git push origin --tags
删除标签
git tag -d 版本号
# 结果推送到远端
同步标签
git push origin --delete <tagname>
# git push origin :refs/tags/v1.4-lw
git fetch -p
# 删除本地多出的标签与远程标签保持一致
git describe [指向结点]
# 默认 为HEAD
# 描述与最近tag的位置关系 “tag名_相距提交数_当前结点的哈希值”
其他
git restore 指令使得在工作空间但是不在暂存区的文件撤销更改(内容恢复到没修改之前的状态)
git restore --staged 的作用是将暂存区的文件从暂存区撤出,但不会更改文件的内容。
git switch -c <branch> --track <remote>/<branch>
创建并切换分支并关联远程分支 (分离checkout 的功能)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?