【Git】学习笔记 git入门

发布于:2022-07-20 ⋅ 阅读:(281) ⋅ 点赞:(0)

文章简介

本文记录学习git学习中的要点


Git很牛,如雷灌耳,前阵子被开源社区“抛弃”的被微软收购的全世界最大的同性交友平台GitHub,阿里的Gitee,都是Git工具

什么是Git?

Git是一个__开源__的__分布式__版本控制系统,用于敏捷高效地处理任何项目。
Linux Toralds为了帮助管理Linux内核而开发的一个开源代码的版本控制软件,同样作用的工具还有CVS, Subversion等。Git的特别在于它采用了分布式 版本库,不用服务器端软件支持。

我对分布式的印象类似P2P,“团结一切能够团结的力量”,将复杂的大任务分散到多个终端上, 以某种方法统筹结果, 管理进度。中二一点,像是“蜂群意志/虫群意志”。Mark一下,后面再认真了解

Git可以理解为高级云盘,因为有比云盘更严谨的机制设计,不同于网盘的点包括
版本控制:就像是Windows的时间戳,为当前的代码设定一个开发版本,每次提交更改也有时间戳,可以很方便地退回到某个节点,来撤销更改。
分支管理:分支是一个代码开发中会很自然地产生的需求,多人进行同步开发的时候,都希望能够在原始代码上修改自己的模块,最后再整合到一起,Git可以做到
除此之外, 当然有多人协作, 远程备份这种云服务都有的优点。

Git工作流与命令详解

开始之前

用户设置

没有进行用户设置, 不允许进行git操作,需要使用下面的命令来定义当前操作者的的信息

git config --global user.name
git config --global user.email

常用config还有
color.status
color.branch
color.interactive
color.diff
这些是color属性, 一般设置为auto,自动设置
merge.tool=vimdiff
这是diff工具, 有kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, 和 opendiff可用
core.editor=vim
这是文本编辑器,可以选择emacs,vim等

初始当前文件夹为Git文件夹

只有在Git文件夹-一个有.git文件夹包含了git相关配置的文件夹目录才是一个Git文件夹, 才可以进行除了clone以外的操作。
通过init指令可以完成这个任务

git init

上传路线

总览

已追踪Stage
未追踪
Unstage/Untracked
add
commit
push
暂存区
工作区
本地仓库
远程仓库
  • 各指令作用如图,每次commit都会生成一个独一无二的ID, 用于标记本次commit

引申-Git中的文件状态status与三区

文件状态
文件状态 默认颜色 描述
Untracked/
Unstaged
未记录
红色 对于git来说没有登记过信息,突然冒出来的文件
Unmodified
未修改
被仓库登记过,在本地工作区没有修改内容的文件
Modified
已修改
DOS中红色,idea中是蓝色 被仓库登记过,在本地工作区有过改动的文件
Staged 绿色 已经被git登记过的文件
add
commit
being Edit
remove
stage
Untracked
Unmodified
MOdified
Staged
三区划分
分区 描述
工作区WorkDirectory 本地目录
暂存区Stage/Index 被Git登记,需要稍后上传到仓库的文件
Git仓库Repositiory 唯一远程仓库内的文件

add时文件的忽略-.gitignore

用任意方式在当前文件夹创建一个.gitignore的文件, 来设定提交忽略策略,idea常用如

.git
logs
rebel.xml
target/
!.mvn/wrapper/maven-wrapper.jar
log.path_IS_UNDEFINED
.DS_Store
offline_user.md
*.class

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

文件名被该文件条目匹配的文件不会被status识别到需要add的文件树中
有时候需要进行刷提交

git -rm -r --cached .
git add .
git commit -m "清除缓存“
git push
```#### reset命令
```bash
git reset [--soft|--mixed|--hard] [commitID]

reset参数用来重置暂存区内文件的状态,三个参数可选

参数 更改引用 更改暂存区 更改工作区
hard 1 1 1
soft 1 0 0
mixed 1 1 0

push

git push 仓库别名 分支名称

分支branch

命令 描述
branch <branch-name> 新建分支
brancj 查看当前分支
checkout <branch-name> 切换到某分支
delete <branch-name>
D <branch-name>强制删除
删除分支是你吗减枝
merge 将别的分支合并到__当前分支__

log

log用来查看commit记录,按q退出,没什么好说的,当前状态会有(HEAD -> 分支名)标识

HEAD 与tag

HEAD的本质是一个指向commit对象的指针,用于追踪当前版本

tag用来为上传的文件打标签,方便版本控制

下载

总览

已追踪Stage
未追踪
Unstage/Untracked
fetch
diff
暂存区
工作区
本地仓库
远程仓库

remote远程仓库设置

指令 描述
remote -v 详细查看当前远程仓库配置,最前面的字符串是连接别名,默认有origin
remote add 别名 url 添加一个仓库
remote rm 别名 删除一个仓库连接
remote rename A B 重命名连接

clone和pull的区别

clone pull
需要init 0 1
执行多次 0 1
本文含有隐藏内容,请 开通VIP 后查看