Git笔记

本文详细介绍了Git的三个区域及其操作,包括git reset如何撤回add和commit,git checkout如何同步文件及切换分支,以及git rebase的理解和冲突处理,帮助读者深入理解Git的工作流程。

想到哪写到哪

首先明确Git的三个区,工作区 -> 暂存区 -> 版本区

这个博客写的很好 https://www.cnblogs.com/songxiaohua/p/9626849.html

一、git reset的用法

1. 一种是已经add,还没有commit,想要撤回add操作,使文件从暂存区移动到工作区,使用如下命令

git reset HEAD 文件名

2. 另一种是已经commit,想要回退到其他版本,有三种操作

<1> --hard (危险命令,慎用)

将三个区(工作区、暂存区和版本区)和想要回退的版本一模一样,即清空工作区和暂存区

git reset --hard HEAD^ (此处可以写多个^,且必须和HEAD挨着,也可以在^后面加上数字,表示回退次数如^2,Mac可能要用~)
or
git reset --hard 版本号

<2> --soft

不动工作区和暂存区的东西,仅使版本区的文件回退至对应版本。若你暂存区或者工作区修改的文件和回退的文件产生冲突,则暂存区或工作区的文件不会受到影响,仍然存在于工作区或暂存区

git reset --soft HEAD^
or
git reset --soft 版本号

<3> --mixed(默认就是这个)

不动工作区的东西,但是会清空暂存区的东西。若你暂存区或者工作区修改的文件和回退的文件产生冲突,则将暂存区的冲突文件放至工作区,总之最后你的暂存区一定是干净的!

git reset --mixed HEAD^
or
git reset --mixed 版本号

二、checkout的使用

1. 使工作区的文件和暂存区 / 版本区的对应文件保持一致,若暂存区和版本区均有该文件,则优先和暂存区的文件保持一致

git checkout -- 文件名
or
git checkout -- . (全部工作区的文件)

2. 切换分支

git checkout 分支名
git checkout -b 新的分支名 (创建自己的分支,并切换到该分支)

三、rebase

谈谈我的理解,我在dev1分支执行如下命令

git rebase dev2

会发生什么事呢?

首先,这是在本地,和远程没有关系。dev1和dev2这两个分支一定是会形成一个“Y”字形的,即一个二叉树,首先Git会找到两个分支的最近公共祖先,即那个交汇处,接着,为了方便叙述,我令那个交汇处为节点N,沿着节点N顺着dev1的那条分支,我叫它s1,沿着节点N顺着dev2的那条分支,我叫它s2。然后,s1上肯定有很多节点,按节点顺序一个一个对其进行考察,分为下面三种情况

<1> 这个节点在s2分支中不存在

则直接添加到s2的末尾

<2> 这个节点在s2分支中存在,且内容无变化

不进行任何操作,即跳过这个节点,继续顺着s1这条路线考察下一个节点,直至最后一个

<3> 这个节点在s2分支中存在,且内容有变化

产生冲突,rebase失败,怎么办?不要慌,此时又有以下三种选择

① 这个节点我不考察了!我跳过去!即你抛弃了s1的那个冲突文件,还是选择s2里面的文件内容,下面的命令是危险命令,因为如果你skip了这个节点,那么就意味着你选择遵从s2而不是s1,那么你在s1中的这个节点将被丢弃掉!慎用啊!

git rebase --skip (危险命令,慎用!)

② 呜呜呜,我不想rebase了,我要再考虑考虑再rebase,我要回到原始状态!

git rebase --abort

③ 我就是要解决冲突!我自己手动改!(其实这里,你又有三种选择,一个是s1往s2对齐,一个是s2往s1对齐,一个是都不对齐,我自己把s1和s2的都改了,并且都改成一样的!)

嗯,等你改完以后,你想继续rebase,执行下面的命令

git add 你修改的文件
git rebase --continue

这样就rebase结束啦!

### Git 使用教程与学习笔记整理 Git 是一个分布式版本控制系统,广泛应用于软件开发中的代码管理和团队协作。以下是关于 Git 的使用教程和学习笔记的总结,涵盖基础命令、安装方法及常用操作。 #### 1. Git 安装方法 在不同的操作系统下,Git 提供了多种安装方式: - **Linux 系统**:可以通过包管理器安装,例如在基于 Debian 的系统上使用以下命令: ```bash sudo apt-get install git ``` 如果需要从源码编译安装,则可以依次执行 `./config`、`make` 和 `sudo make install` [^2]。 - **Windows 系统**:推荐使用官方提供的安装包进行安装。此外,已安装 Git 的用户可通过以下命令更新到最新版本: ```bash git update-git-for-windows ``` #### 2. 基础命令 Git 提供了一系列命令用于日常的版本控制操作: - **初始化仓库**: ```bash git init ``` 该命令用于创建一个新的 Git 仓库。 - **克隆远程仓库**: ```bash git clone <仓库地址> ``` 克隆现有仓库到本地,便于后续开发和修改 [^3]。 - **查看状态**: ```bash git status ``` 显示当前工作目录的状态,包括哪些文件已被修改但尚未提交。 - **添加文件至暂存区**: ```bash git add <文件名> ``` 将指定文件添加到暂存区,准备提交。若要添加所有文件,可使用 `git add .` [^3]。 - **提交更改**: ```bash git commit -m "提交信息" ``` 将暂存区的内容提交到本地仓库,并附带一条描述性的信息 [^3]。 - **推送更改至远程仓库**: ```bash git push origin <分支名> ``` 将本地提交的更改推送到远程仓库的指定分支上 [^3]。 - **拉取远程更改**: ```bash git pull origin <分支名> ``` 从远程仓库获取最新的更改并合并到本地分支中。 #### 3. 分支管理 分支管理是 Git 的核心功能之一,允许开发者在同一项目上并行开发多个特性或修复 bug。 - **查看分支**: ```bash git branch -v ``` 列出所有本地分支及其最新的提交记录 [^3]。 - **创建新分支**: ```bash git branch <分支名> ``` 创建一个新的分支,但不会自动切换到该分支 [^3]。 - **切换分支**: ```bash git checkout <分支名> ``` 切换到指定的分支,以便在该分支上进行开发 [^3]。 - **创建并切换分支**: ```bash git checkout -b <分支名> ``` 一次性完成创建新分支并切换的操作 [^3]。 - **合并分支**: ```bash git merge <分支名> ``` 将指定分支的内容合并到当前分支中 [^3]。 - **删除分支**: ```bash git branch -d <分支名> ``` 删除不再需要的分支 [^3]。 #### 4. 远程仓库操作 远程仓库通常用于团队协作,确保所有成员都能访问相同的代码库。 - **添加远程仓库**: ```bash git remote add origin <远程仓库地址> ``` 将远程仓库与本地仓库关联起来 [^3]。 - **查看远程仓库信息**: ```bash git remote -v ``` 显示所有远程仓库的详细信息 。 - **推送本地分支到远程仓库**: ```bash git push -u origin <分支名> ``` 将本地分支推送到远程仓库,并设置为默认跟踪分支 [^3]。 #### 5. 日常开发流程 在实际开发过程中,建议遵循以下步骤以保持良好的版本控制习惯: 1. 拉取远程仓库的最新代码: ```bash git pull origin main ``` 2. 添加所有修改的文件到暂存区: ```bash git add . ``` 3. 提交更改并附带清晰的提交信息: ```bash git commit -m "描述本次提交的内容" ``` 4. 推送更改到远程仓库: ```bash git push origin main ``` 通过以上流程,可以有效地管理项目的版本历史,并与其他开发者协同工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值