一份够用的Git命令

新版Git合并了checkoutreset

原来的git checkout 可以使用 git restore 代替

原来的git reset HEAD可以使用 git restore --staged代替

最新版的git提示都已经更换成了 restore

文件提交

# 初始化本地仓库
git init
# 查看修改内容详情
git diff
# 查看当前git仓库文件状态,显示信息包括当前分支名称,与远程分支的关系(是否最新),未暂存的修改,未跟踪的文件(当前目录未纳入版本控制的新文件列表)
git status
# 使用简短的输出结果
git status -s
# 将当前目录下所有修改文件加入暂存区。不会处理未被跟踪的文件
git add . 
# 将当前目录下所有修改文件加入暂存区,并且会对未被跟踪的文件进行处理添加到暂存区
git add -A/a/--all
# commit命令提交后会自动生成一个commit-id,如果没有任何参数将会打开默认的文本编辑器,要求提供提交信息
git commit 
# 提交所有修改的快照,只会选择已添加到暂存区的文件,不会提交新创建的文件,该命令同样会要求提供提交信息
git commit -a
# 提供在命令行上写下提交信息
git commit -m ""
# 立即对暂存文件提交并给出提交信息
git commit -am ""
# 编辑最后一次提交的内容,要求提供修改后的内容
git commit -amend
# 将本地分支版本上传到远程分支
git push <远程主机名> <本地分支>:<远程分支>
# 如果只要一个分支的情况
git push
# 本地版本与远程版本存在差异又需要强制推送时
git push --force origin master
# 删除主机的分支
git push origin --delete master
# 查看远程仓库
git remote
# 查看远程仓库显示详细信息
git remote -v
# 删除远程仓库
git remote rm <name>

关联远程仓库

使用git commit命令提交之后进行本地和远程代码仓库关联

# 远程仓库名称默认为origin
git remote add origin <github代码仓库的url地址>

提交代码到远程仓库

git push -u origin master

版本库管理

查看提交历史

git log命令基本用法:

git log [选项] [分支名/提交哈希]

# 显示从最近到最远的提交日志
git log
# 显示提交的补丁(具体更改内容)
git log -p
# 以简洁的一行格式显示提交信息
git log --oneline
# 以图形化方式显示分支和合并历史
git log --graph
# 显示分支和标签指向的提交
git log --decorate
# 只显示特定作者的提交
git log --author=<作者>
# 只显示指定时间之后的提交
git log --since=<时间>
# 只显示指定时间之前的提交
git log --until=<时间>
# 只显示包含指定模式的提交消息
git log --grep=<模式>
# 不显示合并提交
git log --no-merges
# 显示简略统计信息,包括修改的文件和行数
git log --stat
# 使用短提交哈希值
git log --abbrev-commit
# 使用自定义的提交信息显示格式
git log --pretty=<格式> / git log --pretty=oneline # 以简洁的一行格式显示提交信息

版本回退和修改撤销

在进行版本回退时可以先查日志

# 回退到上个版本
git reset --soft HEAD^
# 回退到指定版本,查询日志找到对应的commit_id,版本号不需要写全,前几位即可
git reset --hard commit_id
# 如果不记得commit_id同时git log没有记录,可以使用命令记录的每一次命令
git reflog <分支>
# 丢弃工作区的修改,回到最近的一次commit或add时的状态
git checkout -- file<文件>
# 撤销add修改放回工作区
git reset HEAD file<文件>
# 撤销commit修改放回暂存区
git reset --soft HEAD^

删除文件

# 从git暂存区和工作区删除文件,同时将该文件删除操作添加到暂存区
git rm file<文件>
# 回复删除文件,根据提交的commit_id
git checkout commit_id file<文件>

分支管理

一般来说分支主要包含两大分支主分支和辅助分支,主分支包括masterdevelop,辅助分支(临时分支)有:

  • 功能(feature)分支
  • 预发布(release)分支
  • 修补bug(fixbug)分支

正常情况下辅助分支使用结束后删除。

各分支介绍及命令

  • 主分支 master

作为对外的使用的正式版本都在这个主分支上发布,一般作为git默认主分支

  • 开发分支 develop

主分支只用于发布重大版本,日常开发应该在另一条分支上完成。通过在develop上开发完毕后进行合并(merge)到master分支操作

  • 功能分支 feature

开发某个特定功能,开发完成后合并到develop分支,命名规则参考:feature-*

  • 预发布分支 release

发布正式版本之前(合并到master分支之前)的分支,预发布结束以后必须合并进developmaster分支,命名规则参考:release-*

  • 修补bug分支fixbug

作为修复bug分支,修复结束后再合并到masterdevelop分支上,命名规则:fixbug-*

查看分支
# 查看本地分支
git branch
# 查看远程版本库的分支列表
git branch -r
# 查看所有分支列表(包括本地和远程,remotes/开头的表示远程分支)
git branch -a
# 查看一个分支的最后一次提交
git branch -v
# 查看哪些分支已经合并到当前分支
git branch --merged
# 查看所有未合并工作的分支
git branch --no-merged
# 合并到当前分支未提交时可以执行命令取消合并
git merge --abort
创建分支

-b表示用于指定新分支的名称,在创建新分支的同时将其设置为当前分支。

git checkout -b develop master
# 如果单纯的创建分支可以使用下面命令
git branch develop
# 切换分支
git checkout develop
更新分支

在更新分支前需要确保本地仓库和远程仓库中的分支是同步的。可以通过执行下面命令实现,这个命令会从远程仓库中获取最新分支信息

git fetch origin
# 在本地分支中合并远程分支
git merge origin/(分支名称)
# 更新指定分支
git fetch origin 分支名称:本地分支名称
# 更新所有分支
git pull -all
合并分支

默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将master分支指向develop分支。使用--no-ff参数后,会执行正常合并,在master分支上生成一个新节点,保留更详细的分支历史。

在开发分支上进行文件提交操作,按照需要选择是否推送,执行完commit命令后就可以执行合并操作:

git merge --no-ff develop
删除分支
# 根据分支名称删除本地分支
git branch -d <分支名称>
# 修改本地分支名称
git checkout -b <要修改的本地分支名称>
# 删除远程分支
git push <远程仓库名称> --delete <远程分支名称>
# 删除远程分支并重新命名
git push <远程仓库名称> --delete <远程分支名称>:<新命名分支名称>

rebase操作

作用:把分叉的提交历史"整理"成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了

目的:使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比

# 输入命令
git rebase
# 再输入
git log

标签操作

# 创建标签
git tag <标签名称>
# 列出所有标签
git tag
# 创建一个带注释的标签
git tag -a <标签名称> -m ""
# 查看标签信息
git show <标签名称>
# 把标签推送到远程仓库
git push origin <标签名称>
# 推送所有标签到远程仓库
git push --tags
# 删除本地标签
git tag -d <标签名称>
# 删除远程标签
git push origin :<标签名称>

扩展

.gitignore配置文件

#开头的是注释,以/结尾的是目录,以 / 开头防止递归,以 ! 开头表示取反

  • 使用 glob 模式进行文件和文件夹的匹配
  • 星号 * 匹配零个或多个任意字符
  • [abc] 匹配任何一个列在方括号中的字符
  • 问号 ? 只匹配一个任意字符
  • 在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配 [0-9]
  • 两个星号 ** 表示匹配任意中间目录(a/**/z 可以匹配a/z目录、a/b/za/b/c/z 等目录)

Git分支管理及命名规范

查看提交历史

个人博客已上线,欢迎来访~
传送门:夜雨炊烟

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜雨炊烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值