当前位置: 首页 > news >正文

Git高效开发:常用命令速查指南

image.png

配置

git config --global user.name "yourname"
git config --global user.email "youremail"
git config --list # 查看所有的配置

常用命令

git init # 初始化一个仓库
git clone [URL] # 克隆一个仓库到本地
git status # 查看本地仓库当前的状态
git add <文件或者目录> # 将文件或者目录添加到暂存区
git add . # 将所有的修改的文件添加到暂存区git log # 查看历史提交
git log --oneline # 以简洁的一行显示提交的历史
git log --graph # 以图形方式显示分支的合并历史git commit -m "提交信息"
git commit --amend # 修改最后一次提交 push需要进行 -f操作
git push origin myBranch -fgit branch # 列出本地的分支、
git branch <新分支名> # 创建新的分支
git branch -a # 查看所有的分支
git checkout <分支名> # 切换到指定的分支
git checkout -b <新分支名> # 创建并切换到新分支上
git merge <分支名> # 将指定的分支合并到当前分支
git branch -d <分支名> # 删除本地分支
git push origin --delete <分支名> # 删除远程分支git remote -v # 查看远程仓库信息
git remote add origin <仓库URL> # 添加远程仓库地址
git push -u origin <分支名> # 将本地分支推送到远程分支并设置跟踪关系
git pull # 拉取并合并远程仓库的更改到当前的仓库
git pull origin master # 将masetr的更改合并到本地仓库
git fetch # 拉去远程仓库的更改到本地,但不合并

git fetch

将远程的仓库拉取下来,但是不合并,通常,git fetch 用于查看远程仓库的状态

git fetch origin feature-branch
git fetch # 等同于git fetch origingit fetch origin master
git merge origin mastergit fetch origin master
git rebase origin/master

git log和git diff

[!三点与两点区别] Title

  • git diff A…B:表示比较B的最后一个节点8和A和B公共祖先3的区别
  • git diff A…B:表示比较B的最后一个节点8和A的最后节点7的区别

image.png

git diff A...B # B相对AB祖先的区别 4 6 8相对3的区别
git diff A..B # AB现在的相对区别  5 7 和 4 6 8的区别git diff # 查看工作区与暂存区的区别
git diff <file> # 查看工作区与暂存区该文件的区别
git diff --cached # 或 git diff --staged(两者等价)查看暂存区与最新提交的差异
git diff HEAD # 查看工作区与最新提交的差异
git diff <commit-id1> <commit-id2> # 比较两个历史提交之间的所有文件差异

image.png

git log A..B # 表示B有的,A却没有的提交 4 6 8相对3的提交区别
git log A...B # 非公共的所有提交记录 5 7 和 4 6 8的区别
git log # 查看历史提交
git log --oneline # 以简洁的一行显示提交的历史
git log --graph # 以图形方式显示分支的合并历史

git reflog

[!描述]
用于查看本地仓库操作日志的命令,它记录了所有分支(包括 HEAD)的指针移动历史(如提交、切换分支、合并、变基、重置等操作),即使提交被 git resetrebase 移除,也能通过 reflog 找回。

  • 追踪本地仓库的所有操作记录(默认保留 30 天,可通过配置延长)。
  • 找回被误删除的提交(如执行 git reset --hard 后丢失的提交)。
  • 定位操作错误(如错误合并、错误变基)的时间点,以便回滚。
git reflog # 查看所有的操作日志
c5f5678 HEAD@{0}: commit: fix bug in login form
d8f1a2e HEAD@{1}: commit: add new feature for profile page
6f7890b HEAD@{2}: reset: moving to HEAD^
3a6d125 HEAD@{3}: commit: initial commitgit reflog -n 5 # 只显示最近5条记录git reflog <branch-name> 
# 示例:查看 master 分支的操作日志 
git reflog mastergit reflog --since="2 days ago" # 显示2天内的操作 
git reflog --until="2024-01-01" # 显示2024-01-01之前的操作
# 找回git reset --hard误删的提交
# 假设误执行 `git reset --hard HEAD~3`,删除了最近 3 个提交,可通过 `reflog` 找回:
git reflog # 查看操作日志,找到重置前的提交哈希
# 方式1:创建新分支保留误删的提交 
git checkout -b recover-branch a1b2c3d 
# 方式2:直接将当前分支重置回该提交(谨慎使用) 
git reset --hard a1b2c3d
# 撤销错误的 `rebase` 或 `merge`
# 若执行 `git rebase` 后发现操作错误,可通过 `reflog` 找到变基前的 `HEAD` 状态
git reflog
git reset --hard HEAD@{10}

git rebase 和 git merge

image.png

image.png

git merge develop # 将develop合并到master 就会将3、6、7合形成8
git rebase develop # 将master和develop的公共祖先3,将master的3号节点后面的所有提交记录截取下来,嫁接到develop的分支线的后面。

都是用于将 develop 分支的代码整合到当前分支的命令,但它们的实现方式和最终的提交历史结构有很大差异。
image.png
rebase:将当前分支的所有提交 “移植” 到 develop 分支的最新提交之上,使当前分支的提交历史呈现为一条直线,消除合并提交

# git rebase解决冲突
- 手动解决冲突,然后执行git add 或者git rm文件,然后再执行git rebase --contiue继续变基,
- 也可以直接git rebase --skip跳过这个commit
- 或者使用git rebase --abort放弃rebase。git checkout master
git pull origin master  # 同步远程 master 到本地
git checkout mybranch # 上面的可以使用 git fetch origin master替换
git rebase master # 上面的可以使用git rebase origin/master 替换掉
git status
git add <file>
git rebase --continue
# 此时git status会被告知落后于自己的远程分支 忽略掉。因为本地分支的提交历史与远程分支的提交历史不同步
git push origin mybranch -f

merge的步骤

git checkout master
git pull origin master
git checkout mybranch # 上面的可以使用 git fetch origin master替换
git merge origin master # 上面的可以使用git pull origin master替换
git status
# 解决冲突
git add <file>
git push origin mybranch

git reset

# 文件在暂存区
git reset HEAD <file> # 将暂存区中的文件放回工作区,修改仍然还在工作区
# 文件在本地仓库
git reset --hard <commit id> # 将当前分支的指针强制重置到指定的 `<commit id>` 对应的版本,并彻底丢弃该版本之后的所有提交历史和修改。硬重置
git reset --soft <commit id> # 将当前分支指针重置到指定提交(`<commit id>`),但保留暂存区和工作区修改的命令。软充值
git reset --mixed <commit id> # 等同于 git reset <commit id>
# 将当前分支指针重置到指定提交(`<commit id>`),同时重置暂存区,但保留工作区的修改

git cherry-pick

image.png

选择性地将单个或多个提交(commit)“复制” 到当前分支的命令。它允许你从其他分支中挑选特定的提交,而不必合并整个分支,适用于仅需要部分修改的场景

git cherry-pick <commit id>
git cherry-pick <commit id1> <commit id2> # cherry-pick 1 2
git cherry-pick <commit id1>..<commit idn> # cherry-pick 1-8 不包含1
git cherry-pick <commit id1>^..<commit idn> # ^表示包含1  cherry-pick 1-8 git status
git add <file>
git cherry-pick --continue # 继续完成 cherry-pick
git cherry-pick --abort # 放弃操作 回到操作前的状态
git push origin mubranch # 若目标分支是远程跟踪分支git cherry-pick --quit # 中断

git stash

[!NOTE]

  • 把工作区中未提交的修改(包括已暂存 git add 和未暂存的内容)临时 “储藏” 起来,让工作区恢复到最近一次提交(HEAD)的干净状态。
  • 后续可以在任何分支上恢复这些储藏的修改,继续之前的工作
  • git stash 不会储藏未跟踪的新文件(即从未 git add 过的文件),若需储藏,需加上 -u
  • git stash -u # 储藏未跟踪文件(但不包括 .gitignore 忽略的文件)

image.png

git stash
git stash save "注释"
git stash pop
git stash apply stash@{n} # n 是储藏编号,如 stash@{0}(默认恢复最新的可省略编号)
git stash drop stash@{n}
git stash clear # 清楚全部栈中的内容
git stash list
git stash show stash@{n}
# 场景1 解决分支B的事情
# 当前分支A Bug分支B
git stash 
git checkout B
# 处理B的事务
git checkout A
git stash pop# 场景2 代码开发完成了,准备提交 一般建议拉取一下远程的代码
git stash
git pull origin master
git stash pop
# 本地处理可能出现的冲突
git commit + git push

git checkout

# 快速撤销工作区中对指定文件的未提交修改,常用于放弃不需要的本地更改。使用时需注意,一旦执行,工作区的修改会被永久丢弃
git checkout -- <file> # 丢弃工作区中指定文件的修改git checkout master # 切换分支
git checkout -b 
git checkout -b <新分支名> # 创建并切换到新分支上

HEAD

[!HEAD作用]

  • HEAD~n 表示 “当前提交的前 n 个提交”(如 HEAD~1 是上一次提交,HEAD~2 是上上次)
  • HEAD^:等价于 HEAD~1,表示当前提交的第一个父提交(上一次提交)。
  • HEAD^^:等价于 HEAD~2,表示当前提交的上上次提交的上一次(即上上次)。
  • 以此类推,HEAD^n 等价于 HEAD~n(当提交只有一个父提交时)。
git reset --hard HEAD^ # 强制返回上一个父目录
符号含义适用场景示例
HEAD~n当前提交的第 n 个祖先(按第一代父提交追溯)单父提交的线性历史,快速回退 nHEAD~3 表示上 3 次提交
HEAD^nn 个父提交(默认 n=1处理合并提交(多父提交)HEAD^2 表示合并提交的第二个父提交
HEAD@{n}n 次操作前的 HEAD 状态基于操作记录找回提交(如误操作后)HEAD@{1} 表示上一次操作后的状态
http://www.dtcms.com/a/590398.html

相关文章:

  • 还有哪些网站做产品众筹应届毕业生简历模板
  • 南京做企业网站公司哪家好如何在手机上制作网站
  • 视图、存储过程与函数
  • JavaSE语法巩固——图书管理系统
  • Java 抽象类与接口深度解析:从概念到实战应用
  • 软件测试——自动化测试常用函数(超详细)
  • 韶关企业网站建设好看的seo网站
  • 网站网页区别是什么产品展示类网站源码
  • 网站规划的步骤微信开发公众平台
  • 怎么自己做直播网站吗制作公司网站一般多久能好
  • 公司合法网站域名怎么注册水冷眸WordPress
  • 网站开发应财务如何记账wordpress 字符替换插件
  • 网站建设运营成本什么是网络营销评估主要评估哪些方面
  • 升级 macOS 26.1 之后 MagicMouse2 疯狂卡顿飘移,已解决
  • 无锡高端网站建设舆情信息网站
  • 网站建设的成功之处有哪些怎么做一个自己公司的网页
  • 怎么建设自己产品网站加强红色网站建设
  • 【QT开发】天气预报项目(详细注释版)
  • Vue嵌套(多级)路由
  • 精品网站建设公司互联网产品推广是做什么的
  • 东莞360推广的网站是谁做的云南楚雄医药高等专科学校
  • 学做网站的视频建设银行电商网站
  • 目前网站类型主要包括哪几种江苏营销型网站建设公司
  • 临沂网站开发多少钱wordpress无法发送
  • 信用网站标准化建设模块都有哪些东道设计招聘要求
  • YOLO项目笔记
  • 网站制作合同模板汽车网站flash模板
  • 凡科网做网站能达到什么效果济南网站建设(力推聚搜网络)
  • 网站备案表格样本一个人做的网站做什么好
  • 做个网站好还是做淘宝好品牌推广网站策划设计