Git与Github学习笔记

Git与Github学习笔记

版本控制工具与代码托管中心

Git

分布式版本控制工具

Git命令操作

1.本地库初始化:

命令:git init

在目标文件夹中创建.git隐藏文件,存放本地库相关各种配置信息等。

注意:.git目录里存放的是本地库相关的子目录和文件,不要删除也不要胡乱修改。

2.设置签名

命令:需设置级别

  1. 仓库/项目级别:仅在当前本地库范围内有效

git config user.name <user.name>

git config user.email <user.email>

信息保存到./.git/config文件中

  1. 系统用户级别:登录当前操作系统的用户范围

git config –global user.name <user.name>

git config –global user.email <user.email>

信息保存到当前系统用户家目录的.gitconfig隐藏文件中

级别优先级:

二者都有,仓库/项目级别优先

级别不可为空

格式: 这里设置的签名与代码托管中心的账号密码没有任何关系

用户名:***

邮箱:***

区分不同开发人员的身份

3.查看状态

命令:git status

4.将文件添加到暂存区

命令:git add

5.将文件移出暂存区

命令:git rm –cached <file>

6.将暂存区文件提交到本地库

命令:git commit <file>

执行命令后将会打开vim编辑器,去让提交者编辑描述此次修改内容,类似于注释功能。

若不想进入vim编辑器,可以直接git commit -m "note" <file>

首次提交将被记录为root-commit

可以使用-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过 git add 添加到暂存区:git commit -a <file>

7.查看版本记录

命令:git log

多屏显示控制方式,空格向下翻页,’b’向上翻页,’q’退出。

若版本信息过多较为冗杂,可以使用git log --pretty=oneline或者git log --oneline(若以此法,哈希值只显示一部分)每个版本信息只显示一行。

git log --oneline 显示的仅先版本加上历史版本,若版本回溯,则不会显示回溯前的版本

HEAD指针指向当前版本。

命令:git reflog

显示所有的历史记录

oneline的基础上(一行显示内容,只显示开头部分哈希值,和提交注释)会显示历史每一版本距现版本的HEAD指针的偏移位数。

HEAD@{移动到当前版本需要的步数}

8.版本前进后退

基于索引值操作

命令:git reset –hard [局部索引值]

也就是开头部分的哈希值

使用^符号

只能回溯版本,不可实现版本前进

命令:git reset –hard HEAD^

使用几个^符号代表回退几个版本。

使用~符号

只能回溯版本,不可实现版本前进

命令:git reset –hard HEAD~n

~符号后跟的数字代表回退多少个版本。

关于reset命令的三个参数:

soft参数

​ 仅在本地库移动HEAD指针

mixed参数:

​ 在本地库移动HEAD指针

​ 重置暂存区

hard参数:

​ 在本地库移动HEAD指针

​ 重置暂存区

​ 重置工作区

9.删除文件并找回

前提:删除前,文件存在时的状态提交到了本地库。

命令:git reset –hard [指针位置] (指针位置:历史记录或当期位置)

原理:hard参数是通过记录的历史版本对工作区,本地库,暂存区进行重置

10.比较文件差异

命令:git diff

将工作区中的文件和暂存区进行比较

未提交过的文件无法参与比较

命令:git diff [本地库中的历史版本] <file>

将工作区中的文件和本地库历史记录比较

不带文件名将对多个文件进行比较

分支管理

1.分支

在版本控制过程中,使用多条线同时推进多个任务。

好处:

· 同时并行推进多个功能开发,提高开发效率。

· 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

2.分支操作

查看分支

命令:git branch -v

创建分支

命令:git branch <分支名>

切换分支

命令:git checkout <分支名>

合并分支

命令:git merge <分支名>

需切换至接受修改的分支上,用命令指定将合并过来的分支

解决冲突

删除git向文件中添加的提示性的特殊符号

修改文件直至满意

git add <文件名>

git commit 直接commit 不用指定文件名

Git基本原理

1.哈希

特点:

  1. 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
  2. 哈希算法确定,输入数据确定,输出数据也就确定。
  3. 哈希算法不可逆

Git底层采用的是SHA-1算法,Git通过哈希校验来验证数据完整性

2.Git保存版本的机制

集中式版本控制工具的文件管理机制:

以文件变更列表的方式存储信息。这类系统将他们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。

Git的文件管理机制

Git把数据看作是小型文件系统的一组快照。每次提交更新时Git都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以Git的工作方式可以称之为快照流。

3. Git分支管理机制

Git分支管理的本质是创建和移动指针

Github

这里操作比较简单就不分级写了。

Github创建个人仓库,在本地使用git init命令初始化一个本地仓库,然后使用git remote add <远程仓库地址别名>命令添加远程仓库,使用git remote -v可以查看已经添加的远程仓库。

命令:git push <远程仓库地址别名> <要上传的分支名>

将本地库推送到远程库

命令:git clone <远程仓库地址>

完整将远程仓库下载到本地,同时完成本地仓库初始化和远程仓库地址添加。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2022-2023 Syclover.Kama
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信