Git介绍

基本概念

日常使用

修改文件

BUG分支

推送分支

拉取分支

创建与合并分支

解决冲突

撤销修改

版本回退

git标签

什么是标签及标签的作用

标签操作

 

基本概念

我们先来理解下Git 工作区、暂存区和版本库概念

  1. 工作区:就是你在电脑里能看到的目录。
  2. 暂存区:英文叫stage, 或index。一般存放在 ".git"目录下。
  3. 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

通常我们进行的操作步骤一般是

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

实际上执行的过程如下

日常使用

修改文件

提个问题:

如果对一个文件进行如下步骤,那么结果会怎样?

第一次修改 -> git add -> 第二次修改 -> git commit

 

 

你看,我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

BUG分支

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

git stash #可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash list #查看临时提交的工作现场

git stash pop #恢复工作现场,同时删除stash

git stash apply+git stash drop #恢复工作现场,删除stash

git stash apply stash@{0} #如果有多次提交,则使用选择要恢复的工作现场

git stash clear #清除所有工作现场

推送分支

git push origin master

如果推送的远程分支不存在,则会被新建。如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull

拉取分支

git pull #取回远程主机某个分支的更新,再与本地的指定分支合并。

git fetch #更新git remote 中所有的远程repo所包含分支的最新commit-id,不会自动合并。

创建与合并分支

查看分支:git branch

查看全部分支:git branch -a

创建分支:git branch <name>

切换分支:git checkout <name> 如果带--<name>,这说明是回滚文件

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

解决冲突

git diff <file> # 比较当前文件和暂存区文件差异 git diff --staged # 比较暂存区和版本库差异 git diff --cached # 比较暂存区和版本库差异

git diff HEAD -- file # 比较的是工作区中的文件与版本库中文件的差异

撤销修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout --file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,

第一步用命令git reset HEAD <file>,就回到了场景1

第二步按场景1操作。

指令解释:

git checkout file适用于两种情况:

一种是将自修改后还没有被放到暂存区,撤销修改就回到和版本库(HEAD)一模一样的状态;

一种是已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

git reset HEAD <file>

适用于已将文件添加至暂存区,还未进行commit操作时,可以把暂存区的修改撤销掉

版本回退

场景:已经提交了不合适的修改到版本库时,想要撤销本次提交。

操作指令:

  1. git log和git log --pretty=oneline #查看git提交的日志
  2. git reset --hard HEAD^或git reset --hard HEAD~1或git reset --hard commitId #版本回退指令,HEAD表示当前版本,^表示上一个版本,^^表示上上一个版本,依次类推,或者HEAD~1表示上一个版本 HEAD~2表示上上一个版本,依次类推
  3. git push -f #强制推送覆盖远程分支

执行如上指令后,远程分支将会被还原到制定的commitId上。需注意:如果该分支也有其他成员参与开发,并且其他成员本地代码分支上有此前你需要撤销的commitId,则其他成员提交代码时,会将你已经在远程代码分支上撤销完成的代码重新提交上去,造成最终代码撤销失败,如果要避免此问题,可以尝试git  revert指令

git  revert  #同样也是版本回退,但与git reset的区别是它每操作一次会重新提交一个commitId,这样就避免了多人开发同一分支时引起的覆盖问题

git revert --abort  #终止此次revert操作

其他指令:

git reset --mixed  #还原 HEAD、Index # 默认参数

git reset --soft  #还原 HEAD

git reset  --hard  #还原 HEAD、Index、Working Directory

git标签

什么是标签及标签的作用

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

标签操作

git tag:查看标签

git show <tagname>:查看标签信息

git tag <tagname>:用于新建一个标签,默认为HEAD,也可以指定一个commit id;

git tag <tagname> <commitID>:指定一个commit id新建标签;

git tag -a <tagname> -m "blablabla...":可以指定标签信息;

git push origin <tagname>:可以推送一个本地标签;

git push origin --tags:可以推送全部未推送过的本地标签;

git tag -d <tagname>:可以删除一个本地标签;

git push origin :refs/tags/<tagname>:可以删除一个远程标签。

 

解决IDEA LF和CRLF转换error设置

git config --global core.autocrlf input    
#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

 

【顶级EI复现】计及连锁故障传播路径的电力系统 N-k 多阶段双层优化及故障场景筛选模型(Matlab代码实现)内容概要:本文介绍了名为《【顶级EI复现】计及连锁故障传播路径的电力系统 N-k 多阶段双层优化及故障场景筛选模型(Matlab代码实现)》的研究资源,重点围绕电力系统中连锁故障的传播机制,提出了一种N-k多阶段双层优化模型,并结合故障场景筛选方法提升系统安全性与鲁棒性。该模型通过Matlab代码实现,可用于模拟复杂电力系统在多重故障下的响应特性,支持对关键故障路径的识别与优化决策,适用于高水平科研复现与工程仿真分析。文中还列举了大量相关技术方向的配套资源,涵盖智能优化算法、电力系统管理、机器学习、路径规划等多个领域,并提供了网盘链接以便获取完整代码与资料。; 适合人群:具备电力系统、优化理论及Matlab编程基础的研究生、科研人员及从事能源系统安全分析的工程技术人员,尤其适合致力于高水平论文(如EI/SCI)复现与创新的研究者。; 使用场景及目标:①复现顶级期刊关于N-k故障与连锁传播的优化模型;②开展电力系统韧性评估、故障传播分析与多阶段防御策略设计;③结合YALMIP等工具进行双层优化建模与场景筛选算法开发;④支撑科研项目、学位论文或学术成果转化。; 阅读建议:建议读者按照文档提供的目录顺序系统学习,优先掌握双层优化与场景筛选的核心思想,结合网盘中的Matlab代码进行调试与实验,同时参考文中提及的智能算法与电力系统建模范例,深化对复杂电力系统建模与优化的理解。
### Git版本控制系统简介及基本使用教程 Git 是一款分布式的版本控制系统,允许开发者跟踪代码变更,合并更新,并确保代码安全。它最初由 Linus Torvalds 于 2005 年开发,用于管理 Linux 内核的开发过程。Git 的核心特性在于其分布式架构,每个开发者的本地仓库都包含完整的项目历史记录,这与集中式版本控制系统不同[^1]。 #### Git 的基本概念 - **版本控制**:版本控制是一种记录一个文件或一组文件随着时间变化的方法。它可以让你回溯到早期版本,比较不同版本之间的差异,以及恢复丢失的数据。 - **分布式版本控制**:在分布式版本控制系统中,每个开发者的本地机器上都有一个完整的仓库副本,包括所有的历史记录和版本信息。这意味着即使没有网络连接,也可以进行提交、查看历史等操作。 - **分支**:分支是 Git 中非常重要的一个概念,它允许你在不影响主分支的情况下开发新功能或修复错误。你可以创建多个分支,每个分支独立发展,最终可以合并回主分支。 - **提交(Commit)**:提交是 Git 中的基本操作之一,它将对文件的更改保存到仓库的历史记录中。每次提交都会生成一个唯一的哈希值作为标识。 #### Git 的用途 - **代码管理**:Git 最常见的用途是管理源代码,特别是在团队协作环境中。它可以帮助团队成员轻松地共享代码、合并更改并解决冲突。 - **版本追踪**:通过 Git,开发者可以轻松追踪代码的变化,了解谁在何时做了哪些修改。这对于调试和维护项目非常重要。 - **备份与恢复**:由于 Git 保存了项目的完整历史记录,因此可以轻松地恢复到任何历史版本,这对于防止数据丢失非常有用。 - **协作开发**:Git 支持多人同时在一个项目上工作,每个人都可以在自己的分支上进行开发,完成后将更改合并到主分支中。 #### Git 的基本使用教程 ##### 安装 Git Git 可以在多种操作系统上运行,包括 Windows、macOS 和 Linux。你可以从 Git 的官方网站下载适合你操作系统的安装程序,并按照提示完成安装过程[^2]。 ##### 配置 Git 安装完成后,首先需要配置 Git 的全局设置,包括用户名和邮箱地址。这些信息会出现在每次提交的日志中: ```bash git config --global user.name "Your Name" git config --global user.email "your.email@example.com" ``` ##### 初始化仓库 要开始使用 Git 管理一个项目,首先需要初始化一个 Git 仓库。可以在项目的根目录下执行以下命令: ```bash git init ``` 这将在当前目录下创建一个新的 `.git` 子目录,其中包含了所有必要的 Git 仓库文件。 ##### 添加文件到暂存区 在提交更改之前,需要将文件添加到暂存区。可以使用 `git add` 命令来完成这一操作: ```bash git add README.md ``` 如果要添加所有文件,可以使用通配符: ```bash git add . ``` ##### 提交更改 一旦文件被添加到暂存区,就可以使用 `git commit` 命令将其提交到仓库: ```bash git commit -m "Initial commit" ``` 这里的 `-m` 参数后面跟的是提交信息,用于描述这次提交的内容。 ##### 查看状态 可以使用 `git status` 命令查看当前仓库的状态,例如哪些文件已经被修改但尚未提交: ```bash git status ``` ##### 创建分支 创建分支可以让你在不影响主分支的情况下进行开发。可以使用 `git branch` 命令创建新分支: ```bash git branch feature-branch ``` ##### 切换分支 创建分支后,可以使用 `git checkout` 命令切换到该分支: ```bash git checkout feature-branch ``` ##### 合并分支 当新功能开发完成后,可以将该分支合并回主分支。首先切换到主分支,然后使用 `git merge` 命令合并: ```bash git checkout master git merge feature-branch ``` ##### 解决冲突 在多人协作开发中,可能会出现多个开发者对同一文件进行了修改的情况。这时 Git 会提示冲突,并需要手动解决冲突。解决冲突后,需要再次提交更改。 ##### 推送更改到远程仓库 如果你有一个远程仓库(如 GitHub、GitLab 等),可以将本地更改推送到远程仓库: ```bash git remote add origin https://github.com/yourusername/yourrepository.git git push -u origin master ``` ##### 克隆远程仓库 如果你想获取别人已经存在的 Git 仓库,可以使用 `git clone` 命令克隆远程仓库到本地: ```bash git clone https://github.com/yourusername/yourrepository.git ``` ##### 拉取远程仓库的更新 为了保持本地仓库与远程仓库同步,可以定期使用 `git pull` 命令拉取远程仓库的最新更新: ```bash git pull origin master ``` 以上就是 Git 的基本概念和使用教程。通过这些基础操作,你可以开始使用 Git 来管理你的项目,并享受其带来的便利性和灵活性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值