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

Git 日常

关于user.name和user.email

Git用户名和邮箱地址主要用于标识提交记录的作者信息,确保版本控制的可追溯性和团队协作的规范性。

每次提交都会记录用户名和邮箱作为作者信息,便于追踪修改责任归属。在团队协作或开源项目中,这些信息帮助他人识别提交者身份,确保代码质量控制。

对于GitHub、GitLab等平台,邮箱地址用于将提交记录与用户账户绑定。若未配置正确的邮箱,可能导致提交信息显示为“匿名”或无法关联个人账号。

  • ‌全局配置‌(适用于所有仓库):
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
  • ‌局部配置‌(仅适用于当前仓库):
git config user.name "用户名"git config user.email "邮箱地址"

未配置时,Git可能使用系统默认信息(如操作系统用户名或主机名),但可能导致身份信息缺失或提交被拒。

查询当前配置信息可以使用以上命令,不带后面参数。

一、正常流程

1.拉取并创建分支(本地)

git checkout -b dev origin/dev

2.开始新功能前先pull一次再在其基础上创建新分支

git pull
git checkout -b feature-new

3.修改

变动工作区(.git所在目录)内容

4.添加

将修改内容(如 xxx.java)添加至暂存区为提交做准备:

git add xxx.java

5.提交

将暂存区内容提交至本地仓库:

git commit -m "备注"

6.更新

更新目标分支,切换至目标合并分支(dev),pull,为合并做准备:

git checkout dev && git pull

7.合并分支

git merge feature-new

8.推送

将合并内容推送至远程分支:

git push

二、异常流程(提交了不该提交的内容)

1.提交未推送

git log --oneline // 查看日志,找到目标commit-hash
git reset --mixed <commit-hash> // 参数可以是soft(软重置)、mixed(混合重置)、hard(硬重置)
  • soft:将HEAD移动到指定的提交,但不会改变暂存区和工作目录的内容;
  • mixed(默认):移动HEAD到指定的提交,并重置暂存区到该提交的状态,但不会改变工作目录的内容;
  • hard:彻底丢弃指定提交之后的所有更改(包括暂存区和工作目录中的更改)。

警告:使用–hard选项会丢失未提交的更改,因此请确保你真的想要这么做,并且已经做好了相应的备份。

2.提交已推送

git checkout feature-branch // 切换要回退的到本地分支
git log						// 查看提交历史
git revert <commit-hash>    // 回退到指定的commit
git push origin feature-branch --force 或 git push -f origin feature-branch  // 推送更改到远程仓库
  • 区别总结:
    目的‌:git reset主要用于重写历史(例如,撤销提交或将分支指针移动到不同的位置)。git revert主要用于在不改变历史的情况下“撤销”某些提交的更改。
    ‌副作用‌:使用git reset --hard会丢失未提交的更改。使用git revert不会丢失任何数据或更改,因为它实际上是在添加一个新的提交来“抵消”之前的更改。
    历史记录‌:git reset会重写历史记录,而git revert不会改变现有的历史记录,它通过添加新的提交来“取消”之前的更改。
  • 使用场景:
    • git reset 适用于需要撤销更改但不希望创建新的提交的情况,或者需要完全删除更改的情况。
    • git revert 适用于需要撤销特定提交但希望保留完整历史记录的情况,尤其是在多人协作的项目中。

三、优选(cherry pick)

当想要将特定的 commit 合并至某分支时,可以使用 cherry pick 功能。比如,feature-branch 中某次提交需要提前发布到正式版本,则可以使用 git log 查看并记录下该次提交哈希码,然后切换到 master 分支,执行以下命令:

git pick-cherry xxx

该命令会将 feature-branch 上某次提交(xxx)单独合并到当前分支(master)。

四、其它

比对工作区与暂存区中文件的差异

git diff readme.txt

比对暂存区与本地版本库中文件的差异

git diff --cached readme.txt

git log 和 git reflog

git log:显示提交日志,默认按时间倒序显示从当前分支到指定分支的提交记录。 ‌

常用选项‌:
–decorate:显示分支名称和标签 ‌
–name-only:仅显示文件名 ‌
–oneline:精简显示提交信息 ‌
–graph:以图形化方式显示历史 ‌

git reflog‌:管理引用日志(reflog),记录分支或引用更新的历史版本。 ‌

常用操作‌:
查看引用日志:git reflog ‌
回退版本:git checkout <commit_id> 或 git reset <commit_id> ‌
删除引用日志:git reflog delete <old_oid> <new_oid> ‌

区别与联系:
用途‌:git log 用于查看提交记录,git reflog 用于管理引用更新历史。
数据内容‌:git log 包含文件名、日期等信息,而 git reflog 记录引用指向的版本变化。 ‌
关联性‌:回退版本时,git reflog 可帮助快速定位历史版本。 ‌

http://www.dtcms.com/a/525688.html

相关文章:

  • 2. C语言 多级指针
  • 素材下载网站模板深圳企业网络推广运营技巧
  • 前沿技术借鉴研讨-2025.10.21(数据缺失填补/提取信号/分类)
  • StarRocks笔记
  • 便捷商铺源码聊天交友定制程序开发源码二开
  • STM32的四种延时方法
  • 手机网站怎么制作织梦网站备份几种方法
  • 网站设计答辩ppt大宗贸易平台
  • 【大模型与OCR】配合应用的示例demo
  • 门户网站内容建设岗位职责国家单位网站建设要多久
  • 辽宁自适应网站建设公司ps做景观有哪些素材网站
  • 服务器网站过多对排名建网站空间
  • 福州官网建站厂自己建网站还是淘宝
  • 空对象模式(Null Object Pattern)
  • 需求资产管理:从混沌到有序的数字化变革之路
  • dedecms图片网站模板开发做网站公司
  • 曲阜官方建设局网站安全之要
  • 【NestJS】依赖注入(DI) 的模块系统、`imports`、`@Module`、`providers` 之间的关系彻底搞清楚
  • Vibe Coding 小白上手指南
  • 洞察:当前Crypto大环境正需要Solana这种工程化实用主义
  • 做空机构的网站拌合站建站方案
  • wordpress搭建教育网站三只松鼠网络营销案例分析
  • FongMi 蜂蜜影视播放器TVBOX衍生版 V4.6.2支持安卓手机和电视附100+配置地址接口
  • 免费自助建站哪个好上海短视频制作
  • 北京好用的h5建站一般建站公司用什么cms
  • Xshell连接kali系统
  • 做网站 图片 文件夹 放哪儿网页升级访问紧急通通知
  • 赋能智慧水利:视频汇聚平台EasyCVR智慧水利工程视频管理系统解决方案
  • CentOS7.9部署Mysql8(二进制方式)
  • 太原网站建设推广驻马店哪家做网站好