Git学习

Git:分布式版本控制系统

gitee/github:代码托管平台

三种状态

状态说明
已提交(Committed)数据安全地保存在本地数据库,Git中存有特定版本的文件
已修改(Modified)修改了文件,但是还没保存到数据库,即做了修改但还没有放到暂存区中。
已暂存(Staged)对一个已修改的文件当前版本做了标记,使之包含在下次提交的快照中。即文件已修改,放入暂存区

这样导致Git用途有了三个阶段

在这里插入图片描述

工作区:对项目某个版本独立提取出来的内容。(电脑中的目录)

暂存区:一个文件,保存了下次将要提交的文件列表信息,一般再Git仓库目录中。(一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。)

Git仓库目录:Git用来保存项目的元数据和对象数据库的地方。(工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。)

工作流程

  • 再工作区中修改文件
  • 将想要下次提交的更改选择性暂存,这样智慧将更改的部分添加到暂存区。
  • 提交更新,找到暂存区的文件,将快照永久性存储到Git目录。

基本操作

目的代码
通过命令查看git所有配置信息git config --list --show-origin
设置git的用户名git config --global user.name '***'
设置git的邮箱地址git config --global user.email '***'
查看Git的某一项配置git config <key>
获取帮助文档git help <verb>
git <verb> --help
将文件提交至暂存区git add <file>
将文件提交至工作区git commit -m 'message' <file> (“-m”:提交信息)

基础命令

查看当前状态

命令作用
git status查看当前状态

转态提示信息:

  • on brance master
  • nothing to commit, working tree clean:所有工作都已提交,形成了固定的版本。
  • change no staged for commit:有文件没有加到暂存区,后面会提示那些文件没有被加到暂存区。
  • change to be committed:有文件需要被提交,后面提示那些文件被修改。
  • Untracked files:存在未跟踪的文件(新添加但未加入暂存区区域或提交的文件),即git管不到。

查看历史操作记录

命令作用
git log查看历史操作记录
git log --pretty=oneline将提交解雇打在一行上
git log --pretty=oneline --graph以图像的结果将日志打印

演示结果:

在这里插入图片描述

版本回退

命令作用
git reset head~回退一个版本
git reset head~10回退10个版本

参数选择

  • –hard:回退版本库、暂存区、工作区。(会导致修改后的代码全没了)
  • –mixed:回退版本库、暂存区。(reset默认参数)
  • –soft:回退版本库。
命令作用
git reset --hard[soft/.] commitID回滚到个别文件

在这里插入图片描述

命令作用
git reflog查找快照ID号

在这里插入图片描述

版本对比

命令作用
git diff对比暂存区与工作树版本之间的不同
git diff head对比工作树和最新提交
git diff --cached ***(版本号)对比仓库和暂存区
git diff 版本号1 版本号2对比两个历史快照

删除文件

命令作用
git checkout -- <filename>将暂存区的文件恢复到工作目录
命令作用
git rm <filename>删除(暂存区也无了,就版本库还有,提交后版本库也会没有)

重名名

命令作用
mv old_name new_name重命名成new_name(这一条命令git理解成删除old,新增new),需要git add .在commit
git mv old_name new_name重命名,直接commit提交即可

忽略文件

目的:让git识别某些格式的文件,自主不跟踪它们

方法:在工作目录中建立一个.gitignore文件

命令作用
touch .gitignore创建.gitignore文件
echo *.## > .gitignore让git忽略所有以.##后缀文件

分支

目的:保证主版本比较干净,避免多人开发导致代码紊乱

基础命令

命令作用
git branch <分支name>创建一个分支(将主版本复制一份给分支进行开发)
git checkout <分支name>切换分支

每一个分支都有自己相关独立的代码!head对应当前操作的版本。

分支合并

在这里插入图片描述

合并分支即将f12中进行修改的代码(内容)合并到主分支中。

命令作用
git merge <分支名>将分支名为***的内容合并到master中(要在head指向master时运行)

如果有两个分支修改同一个版本的话,需要做好冲突的准备,当然最好时谁创建的部分由谁修改,不要贸然修改他人代码。

删除分支

命令作用
git branch -d 分支名删除一个分支

合并提交信息

命令作用
git rebase -i head~~合并最后两个提交的信息
git rebase -i合并所有提交信息

报错

报错内容:The file will have its original line endings in your working directory

原因:linux和windows系统的换行符不同

换行符
windowsCRLF
linuxLF(git默认)

一般情况下,git进行commit操作时,会把CRLF转换成LF,pull操作时,会把LF转换成CRLF

解决方案:

git rm -r --cached
git config core.autocrlf false
作用
trueadd时将结尾的CRLF转换成LF,checkout时将文件的LF转换成CRLF
falseline ending不做任何改变,文本保持原样
inputadd时将结尾的CRLF转换成LF,checkout时保持LF(windows不置此值)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值