Git 常用操作总结

版本控制系统(VCS)是管理文件和目录所做的更改的工具,每一次提交便记录下目录及其文件的内容,以及较上一版本的更改。通过这样去跟踪项目的更改过程,方便与他人进行协作,或者撤销不想要的更改以回退到此前的任一个版本。常见的有GitSVNCVSRCS等,其中最常用的便是Git

一、关键术语

  • 本地储存库(local repository):包含项目文件的本地目录
  • 远程储存库(remote repository):托管在服务器(如 GitHub、GitLab、BitBucket)上的项目文件目录
  • 克隆(clone):复制储存库到新的路径
  • 提交(commit):每次提交操作产生一个项目的快照
  • 分支(branch):从某个提交开始从主分支中分离出去的一个项目副本
  • 合并(merge):将两个分支合并(一般需要处理文件冲突)
  • .gitignore:在提交中选择性忽略的文件(例如过大的数据集、私人信息等)
  • 暂存区(staging area):保留部分更改在下一次提交
  • Git stash:类似暂存区,用于缓存可能稍后要撤销的更改
  • Commit ID:每个提交的哈希值编码,用于唯一确认
  • HEAD:最近提交的代号,避免定位时需要输入一长串的哈希值,可用 HEAD~n 表示最近的第 n 次提交

二、初始设置

设置用户信息,团队协作时用来确定更改人,以便于沟通。

git config --local user.email useremail@domain.com
git config --local user.name username 

指定设置的范围:

  • 只在当前项目目录有效(默认):--local
  • 对于当前系统用户的所有项目有效:--global
  • 对于当前机器的所有用户的所有项目有效:--system

列出所有设置值:

git config --list

查看某个设置值:

git config --get <key>

为常用操作设置别名:

git config --global alias.ga add
git config --global alias.gc commit

ga filename
gc -m "commit description"

三、基本操作

从远程服务器复制储存库

git clone <remote-repo-url>
git clone -branch <branch_name> <repo-url>      # 指定复制的分支
git clone <repo_url> <dir_name>     # 复制到指定的路径

两种克隆方式:HTTP 链接和 SSH 链接

git clone https://github.com/username/reponame.git
git clone git@github.com:username/reponame.git

在本地目录新建储存库

git init
git init [directory]

管理远程储存库

git remote      # 列出远程储存库
git remote add <connection_name> <url_to_remote>    # 链接远程储存库
git remote rm <connection_name>     # 删除链接
git remote rename <connection_name> <new_name>      # 重命名链接

四、文件操作

添加文件到暂存区以及从暂存区移除文件

git add <filename_or_directory>
git rm <filename_or_directory>
git add .   # 接受正则,“.”代表添加全部

更改操作(先执行上面的添加操作,再执行更改提交)

git status  # 显示更改情况,包括已暂存未提交或已更改未暂存
git diff    # 更加详细版本的 git status,包含具体更改内容
git diff <id1> <id2>    # 比较任意两个提交版本
git commit -m "commit description"      # 提交暂存区的更改
git commit -am "commit description"     # 提交所有的更改,包括未暂存的
git commit --amend -m "new description" # 重新编辑最近的提交的描述信息

贮藏操作(临时保存工作副本以便稍后返回,而不需要提交)

git stash       # 储存更改
git stash -U    # 较上,包括未跟踪的文件
git stash --all # 较上,包括所有文件,甚至 ignored 的文件
git stash pop   # 应用此前的储存,并清除储存区
git stash apply # 应用但不清除
git stash drop  # 删除但不应用

撤销更改(检查提交,并在有需要时撤销之前的提交)

git checkout HEAD~2         # 切换到最近的第二个提交版本
git checkout <commit_id>    # 按 id 切换到某一个提交版本
git reset HEAD~1            # 撤销提交,但不会改变工作目录的文件
git reset --hard <commit_id>    # 回到该版本,文件也跟着改变
git revert <commit_id>      # 只撤销该次提交包含的更改,而 reset 会撤销该提交以及此后的所有更改

五、仓库操作

(1)分支

如下图,常规操作为,在主分支的基础上,创建新的分支,此时新分支为主分支的副本,内容一致。接下来在新分支进行新的工作(例如为程序加入新的功能),同时主分支可以继续原来的工作(如完善原有的功能),最后处理文件冲突并合二为一。按照同样的原理可以创建多个分支,并根据需要在不同的分支之间进行合并。

请添加图片描述

git branch --list   # 列出所有分支
git branch -a       # 列出所有分支,包括远程储存库中的
git branch <new_branch_name>        # 创建新的分支
git checkout <branch_name>          # 切换到某个分支
git checkout -b <new_branch_name>   # 创建新分支并切换到新分支
git branch -d <branch_name>         # 安全删除分支,避免删除未合并的更改
git branch -D <branch_name>         # 忽视更改强行删除
git branch -m <new_name>            # 重命名
git push <remote_repo> branch~      # 上传分支到远程储存库
git push <remote_repo> --delete <branch_name>   # 从远程储存库中删除分支
git diff <branch1> <branch2>        # 对比两个分支
git diff <branch1> <branch2>        # 对比两个分支中的某个文件

# 切换到主分支并合并
git checkout main
git merge <other_branch>

(2)其他

git fetch       # 同步 .git 文件夹,但不改变项目中的文件
git merge       # 合并远程和本地(会更改文件)
git pull        # 同步并合并(会更改文件)
git log         # 查看提交历史
git log --stat  # 详细版,包括文件更改细节
git log --after="YYYY-MM-DD" --before="yesterday"   # 按时间列出
# 还可以使用 last month、last year 之类的关键词

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/34653.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10 Web全栈 组件化设计

前端架构层次设计 前端技术体系庞大&#xff0c;层级也非常分明&#xff0c;在架构设计领域中不能一概而论&#xff0c;任何应用种类都有自己独立的架构体系。比如在前端开发领域&#xff0c;在框架基础上进行应用构建的开发者锁思考的问题&#xff0c;与在组件库设计方面的开…

【文件 part 6 - 格式化读写文件函数 随机读写】

格式化读写文件函数 /* 函数调用: */ fprintf ( 文件指针&#xff0c;格式字符串&#xff0c;输出表列&#xff09;&#xff1b; fscanf ( 文件指针&#xff0c;格式字符串&#xff0c;输入表列&#xff09;&#xff1b;/** 函数功能:* 从磁盘文件中读入或输出字符* fprint…

SAP从入门到放弃系列之生产订单结算

文章目录概览 一、概述二、结算的模式2.1、订单相关的成本归集2.2、产品相关的成本归集 最后 一、概述 当生产从计划到订单&#xff0c;生产领料、投料、报工、入库整个生产流程完成后&#xff0c;生产订单中会产生对应的财务数据&#xff0c;或者说借贷项数据&#xff08;材料…

npm启动,node.js版本过高

“dev_t”: “set NODE_OPTIONS”–openssl-legacy-provider" & npm run dev\n"

Ubuntu安装碰撞检测库FCL以及前置依赖libccd, OctoMap

Ubuntu安装碰撞检测库FCL以及前置依赖libccd, OctoMap 大致安装流程见FCL github地址&#xff0c;但是在安装libccd时存在一些问题。 建议完整浏览后再进行安装 1.编译libccd的报错 首先FCL页面已经说明libccd要直接克隆源码&#xff0c;不要下载压缩包。 其次&#xff0c;在…

MAYA传送带上放石头(新旧粒子系统)

播放试试 使用老的粒子系统 particleShape1.shuliangrand(0,5); particleShape1.daxiao<<rand(0.2,0.5),rand(0.2,0.5),rand(0.2,0.5)>>; particleShape1.xuanzhuan<<rand(360),rand(360),rand(360)>>; 使用新的粒子系统 粒子向后滑落 新粒子系统能进行…

SSMP整合案例(11) 在界面中实现添加操作

上文 SSMP整合案例(10) vue端调整项目环境 发送请求 基本界面编写我们搭建了基本的页面结构 然后 我们来做个新增的功能 首先 新增 我们肯定是用户点击了这个新建之后 我们再来处理这个逻辑 我们之前的代码 新增是有绑定 一个事件的 但是这个 AddBook中并没有内容 首先 我们…

4.44ue4:相机抖动

1.创建相机抖动类 右键内容面板&#xff0c;点击创建蓝图类&#xff0c;搜索shake&#xff08;camera shake&#xff09; 2.使用相机抖动&#xff1a; 节点&#xff1a;play world .. api解释&#xff1a; epicenter&#xff1a;震源 inner Radius&#xff1a;内圈范围&a…

【梦辛工作室】java实现简易消息队列处理器 可分区 分区顺序消费MxMQ

大家好哇&#xff0c;又是我&#xff0c;梦辛工作室的灵&#xff0c;最近在巩固JUC并发包&#xff0c;突然想到如果自己的应用体量不大&#xff0c;但有需要消息队列来实现应用解耦和削峰来缓解服务器突增压力&#xff0c;比如抢票时&#xff0c;突然有比较用户同时抢票&#x…

分布式运用——rsync远程同步

分布式运用——rsync远程同步 一、rsync的背景和原理1.rsync的功能2.rsync的应用场景3.使用rsync的基本命令4.scp与rsync的区别 二、配置rsync源服务器1.关闭防火墙2.建立/etc/rsyncd.conf 配置文件3.保证所有用户对源目录/var/www/html 都有读取权限4.启动 rsync 服务程序5.关…

flutter3.7版本下使用flutter boost解决使用platview崩溃或异常问题

背景 工程使用了混合开发&#xff0c;使用flutter boost插件&#xff0c;flutter 的activity1 frament1 跳转activity2 frament2&#xff0c;frament1 包含platformView&#xff0c;按照上面老哥解决崩溃问题的基础上&#xff0c;出现activity2 frament2返回activity1 framen…

“未来之光:揭秘创新科技下的挂灯魅力“

写在前面&#xff1a; 高度信息化当下时代&#xff0c;对电脑及数字设备的需求与日俱增无处不在&#xff0c;随之而来的视觉疲劳和眼睛问题也攀升到了前所未有的高度。传统台灯对于长时间使用电脑的人群来说是完全无法解决这些问题的。一款ScreenBar Halo 屏幕挂灯&#xff0c;…

数学建模——插值(下)

本文是面向数学建模准备的&#xff0c;是介绍性文章&#xff0c;没有过多关于原理的说明&#xff01;&#xff01;&#xff01; 目录 一、2维插值原理及公式 1、二维插值问题 2、最邻近插值 3、分片线性插值 4、双线性插值 5、二维样条插值 二、二维插值及其Matlab工具箱…

微信小程序

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版&#xff0c;配图更多&#xff0c;CSDN博文图片需要手动上传&#xff0c;因此文章配图较少&#xff0c;看不懂的可以去菜鸡博客参考一下配图&#xff01; 系列文章目录 前端系列文章——传送门 后端系列文章——传送…

opencv使用applyColorMap()函数,可以将灰度图或彩色图转换成自定义的彩色图,或opencv提供的20多种色彩值

文章目录 1、applyColorMap()函数的使用&#xff1a;&#xff08;1&#xff09;函数原型&#xff1a;void applyColorMap(InputArray src, OutputArray dst, int colormap)void applyColorMap(InputArray src, OutputArray dst, InputArray userColor) &#xff08;2&#xff0…

利用Python构建宁德时代、比亚迪、隆基绿能股票时间序列预测模型

存货 import tushare as ts # 导包 import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks from scipy.stats import norm import datetime import pandas as pd import seaborn as sns # pip install seaborn import matplotlib.patches …

WideNet:让网络更宽而不是更深

这是新加坡国立大学在2022 aaai发布的一篇论文。WideNet是一种参数有效的框架&#xff0c;它的方向是更宽而不是更深。通过混合专家(MoE)代替前馈网络(FFN)&#xff0c;使模型沿宽度缩放。使用单独LN用于转换各种语义表示&#xff0c;而不是共享权重。 混合专家(MoEs) 条件计…

数通王国历险记之TCP协议下的三大协议的验证实验

系列文章目录 数通王国历险记&#xff08;1&#xff09; 前言 一&#xff0c;我们要先知道PDU是什么&#xff1f; 二、TCP协议下的三大协议的验证实验 1.FTP的验证实验 1&#xff0c;拓扑图 2.将lsw4配置一下 3&#xff0c;FTP服务器端开启FTP服务&#xff1a; 4&#x…

LIN诊断实现MCU本地OTA升级

一、目标 通过PC端上位机实现MCU本地的OTA升级,本篇文章对实现的目的、需要用到的第三方工具、LIN诊断帧、升级协议、MCU端升级过程以及PC端升级过程做详细说明。 二、目的 最近在做MCU项目时需要将样机寄给客户进行验证,在客户的验证过程中要求参数可调试,如果需要修改软…

vue下基于elementui自定义表单-后端数据设计篇

vue下基于elementui自定义表单-后端篇 自定义表单目前数据表单设计是基于数据量不大的信息单据场景&#xff0c;因为不考虑数据量带来的影响。 数据表有: 1.表单模版表&#xff0c;2.表单实例表&#xff0c;3.表单实例项明细表&#xff0c;4表单审批设计绑定表 以FormJson存…