Git 基础操作和分支操作 快速入门

一、简介

  • Git是一种分布式版本控制系统,不仅可以提取最新的版本信息,整个代码仓库以及其提交的历史记录都可以完全提取一个镜像出来,任何协调工作出现问题时都可以根据任一个镜像进行恢复。
  • Git存储原理和其他版本控制工具不同,其他的版本控制系统一旦文件发生改变,存储的是每个文件逐步累积的差异,而Git当文件发生改变的时候存储的是每个版本的快照,如果该文件不发生改变,则不再重新存储该文件,而是保留指向之前存储文件的链接。这也使得Git更像一个小型文件系统。
  • Git几乎所有的操作都在本地执行,如创建副本之类和浏览项目历史,在需要提交的时候联网即可。Git一般只添加数据,少有数据丢失的风险。
  • Git有三种状态,已修改(modified)、已暂存(staged)、已提交(committed),Git项目有三个阶段:Working Directory(工作区)、Staging Area(暂存区)、git directory(Git目录)
    -在这里插入图片描述

二、git 工作流

基础工作流

初始化仓库

git init

若远程仓库已有代码可以git clone下来
查看文件状态

git status

跟踪/暂存新文件

git add xxxxx
git add .   //添加所有文件

建立本地分支

git branch branchName

提交到本地git仓库

git commit -a     //跳过使用暂存区域,直接提交
git commit -m "修改xxx"         //添加提交备注

添加远程仓库,其实是可关联本地仓库和github远程仓库,shortname为起的仓库名字,url为远程仓库url,在公司内网使用ssh连接的方式, https会因为信任问题比较麻烦

git remote add <remoteName> <url> 

显示链接到的远程仓库

git remove -v

在这里插入图片描述
提交到远程仓库,将本地分支提交到远程后,分支结构:remoteName/brachName

git push <remoteName> <brachName>

在这里插入图片描述

下面这些会少用到

查看未暂存的更新内容,分析文件差异,也可通过图形化界面开发

git diff

移除暂存区文件
```bash
git rm

重命名文件

git mv xxx  xxxx

重新提交 代替上次提交结果 修补提交

git commit --amend

撤销文件的修改 返回修改前一个版本 (危险 慎用!)

git checkout -- xxxx

查看远程仓库更多信息
```bash
git remote show <remoteName>

重命名远程仓库

git remote rename <oldname>  <newname>

删除远程仓库,其实只是删除本地仓库和远程仓库的连接,(对远程仓库本身无影响)

git remote remove xxxx

三 分支

 Git的创建分支、合并分支、切换分支等操作十分便捷。首次提交时ggit仓库会存在着五个三种对象,三个blob对象,保存文件快照,一个树对象,记录着目录结构和bold对象索引,一个commit对象,保存提交对象和树对象的指针。之后多次提交产生的提交对象,会包含上次提交对象(父对象)的指针。
Git分支实质上是包含所指对象校验和的文件,所以切换等操作就进行地很快,也不用保存着很大的文件。创建分支时,该分支创建指针指向当前提交的对象。当创建了多个分支,git会使用–个head指针来指向当前的分支,以区分当前是在哪个分支上。

git branch branchName

查看本地分支

git branch

在这里插入图片描述
查看远程仓库

git branch -r

在这里插入图片描述
分支切换,这里我们切换回主分支

git checkout branchName

在这里插入图片描述
一个注意点,git add之后再切换分支,会发现新的分支上什么都没有,所以本地的操作git add commit一系列操作是建立在分支基础上的,但push之类的并不影响
在这里插入图片描述
在这里插入图片描述

四 版本回退

查看项目分叉历史

git log    //简单查看分叉历史
git log --oneline --decorate --graph --all   //查看提交历史、各个分支指向、项目的分支分叉等情况

在这里插入图片描述
回退,这里会看到HEAD指针回退到了第一次提交的版本

//推荐使用
git reset --soft idName

在这里插入图片描述

//注意避坑!!!本命令别乱用!!会强制回退并清空分支上所有缓存区代码!!!!应该是没救了,除非改一下原始代码让git重新检测到,再提交
git reset --hard idName

在这里插入图片描述
在这里插入图片描述

其实也可以用revert -n命令,和reset命令的区别是,reset会丢失返回前的那个版本,而revert命令实际上是复制旧的内容新建了一个版本,之前的不会丢失

git revert -n 版本号

最后用push命令更新远程仓库的代码

五 冲突解决

使用pull可以更新本地分支的代码,而Git fetch:只是从远程获取最新版本到本地,不会merge(合并)

//将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
//如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin master

若没有代码冲突,则会自动合并,若冲突则合并失败,如下:
在这里插入图片描述
在这里插入图片描述
通过观察冲突的部分,手动解决后,再使用 git add . git commit 的方法告诉git已解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值