github 知识点+命令 总结(最全,适合初学者)

一、git相关概念

1、git文件的三种状态

  • committed 已提交 ,表示数据已经安全的保存在本地数据库中
  • modified 已修改 ,表示修改了文件,但还没保存到数据库中
  • staged 已暂存 ,表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

2、Git项目的三个工作区域:Git 仓库、工作目录以及暂存区域。

在这里插入图片描述
工作区 是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域 是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引’’,不过一般说法还是叫暂存区域。
Git 仓库 是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。

3、Git 工作流程

(1)在作目录中修改文件。
(2)暂存文件,将文件的快照放入暂存区域。(git add)
(3)提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。(git commit -m ‘’)

即:modified(工作目录)–>staged(暂存区域)–>committed(Git仓库)

工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。所以使用 Git 时文件的生命周期如下:

在这里插入图片描述

二、Git仓库配置

1、在自己的git上面创建一个名为text的仓库

2、在本地创建文件夹,打开Git Bash

3、创建一个名为text的文件夹,设置用户名称和邮件地址,作为一个标识。

4、git init

mkdir text
git config --global user.name "1623354901"
git config --global user.email 1623354901@qq.com
#git init 把这个目录变成git 可以管理的仓库
git init

# 一旦使用 --global 选项,那么该命令只需要运行一次,以后无论你在该系统上做任何事情,Git 都会使用那些信息。当想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。


这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,不要手动改动这个目录里面的文件,否则,会把git仓库给破坏了
在这里插入图片描述

5、提交内容到仓库

在text目录下新建一个记事本文件 readme.txt 内容如下:11111111
(1)使用git add readme.txt将文件添加到暂存区

git add readme.txt

(2)使用命令git commit 将文件提交到仓库

git commit -m "readme.txt"


(3)通过 git status 查看状态,是否有文件未提交

在这里插入图片描述
修改readme.txt文件内容,再次使用git status查看结果

内容显示文件已经被修改,未被提交

git diff readme.txt

在这里插入图片描述
如上可以看到,readme.txt文件内容从一行11111111改成 二行 添加了一行22222222内容。检查内容修改无误后,就可以提交到仓库了,步骤和之前一样

git add readme.txt
git status
git commit -m 'readme.txt增加了22222222'
git status

在这里插入图片描述

6、版本回退

在readme.txt文件中加入一行33333333

添加到暂存区,并提交到仓库

查看历史记录

#显示从最近到最远的显示日志
git log
#将每次内容显示为一行
git log --pretty=oneline

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

版本回退

#回退到上一个版本
git reset --hard HEAD^
#回退到上上个版本
git reset --hard HEAD^^
#以此类推
#回退到前50版本
git reset --hard HEAD~50
#回退后再次回退到最新版本
git reset --hard版本号
#获取版本号方法
git reflog

在这里插入图片描述

在这里插入图片描述

7、提交多个文件

们在readme.txt再添加一行内容为4444444,接着在目录下新建一个文件为test.txt 内容为test,我们先用命令 git status来查看下状态,如下:
在这里插入图片描述

8、Git撤销修改和删除文件操作

(1)撤销修改
在readme.txt文件中增加内容5555555555
在这里插入图片描述
撤销此次操作方法
1>直接更改文件,add commit
2>恢复到上一个版本,使用git reset --hard HEAD^
3>gitcheck – file,丢弃工作区的修改
在这里插入图片描述
注意
readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态

另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态

例如,在文件中加入666666666,放到暂存区,在增加7777777777,不添加到暂存区,使用撤销命令,查看内容,只把内容7777777777撤销了

在这里插入图片描述
注意:命令git checkout – readme.txt 中的 – 很重要,如果没有 – 的话,那么命令变成创建分支了。

(2)删除文件
在这里插入图片描述

三、远程仓库

1、github上面注册github账号
2、创建SSH Key,在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:ssh-keygen -t rsa –C “youremail@example.com”
在这里插入图片描述
这时候在.ssh目录下看看有没有公钥(id_rsa.pub),私钥(id_rsa)

在这里插入图片描述
3、登陆github,打开settings中的SSH and GPG keys,在Key文本框里黏贴id_rsa.pub文件的内容。添加key,然后就能看到自己的key了

在这里插入图片描述
4、远程同步
(1)创建一个新的仓库,命名为test

在这里插入图片描述
然后设置同步
在本地仓库下运行

git remote add origin https://github.com/1623354901/test.git
#将本地仓库分支master内容推送到远程仓库中去
# -u:Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
git push -u origin master

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

以后在本地再做了修改之后,通过

git push origin master

把本地master分支的最新修改推送到github上了
5、创建与合并分支
原理:廖雪峰网站分支部分里讲解的很详细

#创建分支
git checkout -b dev
#上边命令相当于
#git branch dev
#git checkout dev
#查看当前分支
git branch

在这里插入图片描述

git branch命令会列出所有分支,当前分支前面会标一个*号。
然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:Creating a new branch is quick
然后提交:

git add readme.txt
git commit -m "branch test"

现在,dev分支的工作完成,我们就可以切换回master分支:

git checkout master

切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:
在这里插入图片描述
在这里插入图片描述
现在,我们把dev分支的工作成果合并到master分支上:

git merge dev

在这里插入图片描述
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

合并完成后,就可以放心地删除dev分支了:

git branch -d dev

在这里插入图片描述

6、解决冲突
新建一个分支feature1

git checkout -b feature1

修改readme.txt最后一行,改为:
Creating a new branch is quick AND simple.
在feature1分支上提交:

git add readme.txt
git commit -m "AND simple"

切换到master分支:

git checkout master

在这里插入图片描述
在master分支上把readme.txt文件的最后一行改为:
Creating a new branch is quick & simple.

git add readme.txt 
git commit -m "& simple"

现在,master分支和feature1分支各自都分别有新的提交,变成了这样:
在这里插入图片描述
种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突

在这里插入图片描述
果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件:
在这里插入图片描述
直接查看readme.txt的内容:
在这里插入图片描述
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存:Creating a new branch is quick and simple.
再提交
在这里插入图片描述
现在,master分支和feature1分支变成了下图所示:
在这里插入图片描述
用带参数的git log也可以看到分支的合并情况:
在这里插入图片描述
删除feature1分支
7、分支管理策略
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值