Git 实用命令项目基操【合集】
文章目录
- 1. 分支篇
- 2. 查看篇
- 3. 回退篇
- 4. 合并篇
- 5. 事故篇
1. 分支篇
# 查看本地分支列表
git branch
# 查看远程版本库分支列表
git branch -r
# 查看本地与远程所有的分支列表
git branch -a# 从当前分支创建新的dev分支
git branch dev# 删除dev分支
git branch -d dev
# 删除远程dev分支
git push origin --delete dev# 重命名分支
git branch -m dev dev1# 从当前分支拉出新的分支dev
git checkout -b dev
# 从远程分支拉取到本地
git checkout -b dev origin/dev
# 根据tag拉出新的分支
git checkout -b branch_name tag_name
# 把新建的分支push到远端
git push origin dev# 切换到dev分支
git switch dev
git checkout dev# 查看关联远程的分支信息及权限
git remote -v
# 删除关联的远程分支origin
git remote remove origin
# 添加远程分支关联
git remote add origin https://xxx.git# 将远程分支覆盖本地代码
git fetch --all
git reset --hard origin/master (这里master要修改为对应的分支名)
git pull
2. 查看篇
查看状态与日志
# 查看当前工作区状态
git status# 查看提交记录
git log
# 查看所有的log
git reflog
# 查看feature1分支是否push到远程分支
git log feature1 ^origin/feature1
查看差异
# 工作区 vs 暂存区
git diff
# 暂存区 vs 本地版本库(最近一次commit)
git diff --cached
# 工作区 vs 本地版本库(最近一次commit)
git diff HEAD
# 工作区 vs 指定commit-id的差异
git diff commit-id
# 暂存区 vs 指定commit-id的差异
git diff --cached commit-id
# commit-id-1 vs commit-id-2
git diff commit-id-1 commit-id-2
3. 回退篇
git reset --hard commit_id# 放弃工作区修改(如果是所有文件把文件名改成 . 点就行)
git checkout -- xxx.js
# 放弃暂存区修改,回退到Unstaged状态
git reset HEAD .
# 回退提交
git reset HEAD@{index}
参数
--mixed
:为默认值,等同于git reset
。 将文件回退到工作区
,此时会保留工作区
中的文件,但会丢弃暂存区
中的文件;
--soft
:将文件回退到暂存区
,此时会保留工作区和暂存区
中的文件;
--hard
:将文件回退到修改前
,此时会丢弃工作区和暂存区
中的文件;
4. 合并篇
# 添加几个文件到暂存区
git add xx.js yy.js
# 添加所有文件到暂存区
git add .
# 提交暂存区的修改到本地版本库
git commit -m "本次修改的comment"
# push到远程仓库分支 origin-关联的仓库名 master-分支名
git push origin master# 合并dev分支修改到当前分支
git merge dev -m "merge from dev"
# 合并某一次提交到当前分支(产生一次提交,需要push)
git cherry-pick fsa0dsads
# 强制将远程分支覆盖本地分支
git fetch --all
git reset --hard origin/master
git pull# 非快速合并 会产生一条commit
git merge dev --no-ff -m "merge dev"
5. 事故篇
常在河边走,哪有不湿鞋;人在江湖飘,哪有不挨刀!
事故1:刚提交了一次代码,突然发现少了一个空格或多了一个分号,类似这些小问题又得重新提交一遍,如果按正常的提交又会产生一次提交记录,这样会多出很多的提交记录,我们是拒绝的,那怎么做呢?
一般的小伙伴会想到先提交一次再用git rebase -i
通过变基来合并提交,这也可以,但是我想大家隆重介绍比它快一万倍的--amend
,See:
git add .
git commit --amend --no-edit
上面的命令是在前一次提交后,发现有小问题然后就再提交一次,只需要加个参数--amend
就会自动合并上一次的提交,--no-edit
参数是不需要修改注释,如果需要修改就不加这个参数就行了。
需要注意的是--amend
不要滥用,如果一直用这个来合并,最终就只有一条提交记录了,如果是别的功能修改就不要使用--amend
让它生成新的提交记录。
事故2:新的开发任务还没编写完成,本地有部分代码还不能提交,而需要马上解决一个bug,此时该怎么做?
这里需要用到git stash
命令,它的作用就是保存当前的工作区
与暂存区
的状态,把当前的工作隐藏起来,等以后需要的时候再恢复,git stash
这个命令可以多次使用,每次使用都会新加一个stash@{num},num是编号
# 隐藏当前的工作区与暂存区,可以切换到别的分支继续工作
git stash# 查看被隐藏的stash列表
git stash list# 恢复最新的stash到工作区(原来暂存区的需要重新进行add暂存)
git stash pop# 删除所有的stash
git stash clear
先保存当前工作区和暂存区的修改,此时的工作区会显示上一次提交后的样子,修改和暂存的文件被隐藏了 ,这时候就相当于working tree clean状态,可以切换到别的分支去修改bug或紧急任务,等那边的问题解决了,再回到这个分支来执行git stash pop
恢复之前的工作到工作区,注意之前保存到暂存区的需要重新暂存。
注意:工作区有文件已修改没有添加到暂存区或没有提交,都不能切换到别的分支。
事故3:本来应该提交到新分支的东西,提交到了主分支!
# 从当前状态的主分支新建一个分支
git branch new-master
# 取消主分支的最新一次提交
git reset HEAD~ --hard
# 切换到新分支
git checkout new-master
注意:如果你已经推送到了远程分支,那一切都晚了。如果你已经修改了别的文件,那第二行应该是git reset HEAD@{number}
,而不是HEAD~
,以回到最初犯错的时间和地点。
事故4:提交到了错误的分支上!
解决办法1:git stash
保留现场
# 取消最新的提交,保留工作区现场原状
git reset HEAD~ --soft
# 保存现场到stash
git stash# 切换到正确的分支
git switch dev
# 还原现场
git stash pop
# 这里可能会有冲突,如果有就解决下冲突
# 然后再添加暂存,提交
git add .
git commit -m "balabala..."
解决办法2:cherry-pick
(摘樱桃
Git 实用命令项目基操【合集】相关推荐
- ThinkPHP6项目基操目录
前言 ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色 ...
- 最佳助攻!25款轻巧实用的SKETCH插件大合集
最佳助攻!25款轻巧实用的SKETCH插件大合集 CocoaChina Sketch绝对是除了PS和AI之外在Mac 平台上最热门的设计工具,它更新迅速,功能完备,并且非常契合目前对于UI设计的需求, ...
- ThinkPHP6项目基操(15.实战部分 阿里云短信redis)
阿里云短信redis 一.安装阿里云短信SDK 二.封装到项目lib中 三.radis记录验证码 1. 安装redis服务 2. 可视化redis管理软件 3. PHP安装redis扩展 4. 配置缓 ...
- stata代码命令全集:跟检验do文件、stata常用命令、代码大合集、面板熵值法
一.常用模型代码整理 1.数据来源: 2.时间跨度:无 3.区域范围:无 4.指标说明: 包含如下模型代码: l OLS模型 l Heckman两阶段模型 l PSM+DID模型 l 固定效应模型( ...
- 墙裂推荐,2023年最强、最实用的IDEA插件推荐合集
插件目录 Alibaba Java Coding Guidelines(阿里巴巴java开发规范) Alibaba Cloud AI Coding Assistant(阿里云AI代码助理) Code ...
- OneIndex:基于onedrive的公共网盘搭建——使用命令行(OneIndex合集1)
OneIndex能将onedrvie的文件索引出来,让更多人能查看下载,同时也比限速下载的百度网盘好一点,当然这和微软给你分配的服务器地区有关.这个程序不占用服务器空间流量.这下面的内容转载于程序作者 ...
- AI Studio 精品项目 | NLP实战合集
点击左上方蓝字关注我们 积小流成江海,在各位开发者的支持下,AI Studio积累了一批涵盖各个技术方向与行业场景的精品实训项目,成为无数小白同学进步的指明灯. NLP精品项目合集 随着基于深度学习的 ...
- 同等质量下那种图片格式小_最实用的Window小工具合集,总有一款适合你!
HELLO,我是利兄~ 我们在日常办公的时候,总是被一些小事情难住,这个时候,一些小工具就可以为我们提供帮助. 今天利兄就来推荐一波办公的时候可能会用到的小工具合集,记得收藏哦. 1.图片下载助手 这 ...
- SwiftUI 2020年开源项目和教程合集
你说flash好用,苹果给封杀了.你说h5很灵活,苹果悄悄清洗h5.你说kotlin好用,苹果给你造了Swift.你说flutter好用,苹果就自己造了SwiftUI.苹果的原则很简单,我的世界必须都 ...
最新文章
- FPGA之道(37)Verilog中的编写注意事项
- 提供《华容道与数据结构》代码供测试
- 『Windows Tips』Windows 自带屏幕截图的使用
- 返回动态html,使用硒返回动态页面的html代码
- YOLOV3 --BUG---No labels in D:\yolov5\train_data\train.cache. Can not train without labels.
- .NET Core 2.0体验
- nginx unit
- 05_视图控制器_1
- 图片调整大小后变得不清晰了怎么办?
- 两个正态总体均值差的置信区间
- 聚名企服商标注册流程及资料(2022新版新手教程)
- java工程师js_Ajax, 励志做一名Java全干工程师
- Windows7双系统卸载Ubuntu
- 什么是描述性统计分析( descriptive statistics)?主要包含哪些内容?
- android 盒子排名,2020年电视盒子排行榜:盘点今年性能最高的五款电视盒子
- cs231n学习笔记——图像分类
- 使用 7-Zip 的命令行版本来压缩和解压文件
- 文件太大不用愁,好用的压缩软件来喽!
- 国内纺织与服装领域知名的调查研究咨询公司
- Google Noto Sans CJK 字体