一、什么是git

git是一个开源的分布式版本控制软件,能够有效并高效的处理很小到非常大的项目。

版本控制:类似于毕业论文、剪辑视频等,需要反复修改和保留原历史数据,在开发中可以解决多人同时开发的代码问题,有效既高效

二、Git 工作区、暂存区和版本库

1、基本概念

A、工作区(Working Directory)

程序员进行开发变更的地方是你现在看到的,是最新的。

通常,我们的开发是复制远程仓库中的分支,并根据该分支进行开发。 开发中是工作区的操作。

B、暂存区(Stage/Index)

. git目录下的索引文件。 暂存区记录git add添加文件的相关信息(文件名、大小、时间),不保存文件实体,而是用id指示每个文件实体。 可以使用git status显示暂存区的状态。 暂存区标记了当前工作区中哪些内容由git管理。

程序员在完成某个需求或功能后,如果需要提交到远程仓库,第一步是通过git add提交到临时存储区,然后通过git进行管理。

C、本地仓库(local repository)

对象已保存提交的每个版本。 它比工作区和暂存区的内容更旧。

在git commit之后,将索引目录树同步到本地仓库,以便于从下一步开始通过git push同步本地仓库和远程仓库。

D、远程仓库(remote repository)

远程仓库的内容可能与本地仓库同步,也可能不同步,因为本地仓库与多个站点之间存在分布式协作关系,但这是最旧的内容。

2、总结

  • 任何对象都将在工作区中诞生和修改。

  • 所有修改均在进入索引区域后进行版本控制;

  • 只有把修改提交给当地仓库,该修改才能在仓库留下痕迹;

  • 可以与合作者共享本地修改,并将其推送至远程仓库进行共享。

三、服务器

可以使用gitee、github、或者自己安装git服务器,这里使用gitee,https://gitee.com/

注册账号

四、git客户端

https://git-scm.com/download/win,下载并安装

五、使用git

1、添加SSH公钥

(1)查看配置

git config --list

(2)配置全局的name和email

 git config --global user.name "chengfurong-china"
 git config --global user.email "cfr_95@tom.com"

(3)输入 ssh-keygen -t rsa -C “cfr_95@tom.com,连续按回车键到提示的路径找到文件

(4)找到此文件后,点击进入,复制文件中的内容(如果出现双击进不去该文件:在当前目录输入cmd,定位到当前文件夹,输入 type id_rsa.pub 命令回车,复制内容即可)

(5)打开gitee,进入设置---->SSH公钥

2、gitee创建仓库

3、创建本地仓库

使用 init 命令可以初始化一个仓库(repository),同时在当前目录下会生成一个用来跟踪管理版本库的 .git 文件夹

git init

4、添加文件

在此目录下添加项目,

添加完成之后,使用 git status 命令查看当前仓库工作区的状态

git status

使用 git add 命令将所有新文件添加到暂存区

git add .

使用 git commit 命令将新文件提交到仓库

git commit -m  "first commit"

5、推送到远程仓库

(1)关联到远程库(设置了ssh公钥后,需要使用ssh地址)

添加关联

git remote add origin git@gitee.com:chengfurong-china/git06.git

删除关联

git remote rm origin

查看关联

git config --list

(2)获取远程库代码与本地代码同步并合并

– 通过命令 git pull 同步并合并(如果远程库不为空必须做这一步,否则后面的提交会失败)

执行此命令后会要求输入用户名、密码,验证通过后即开始上传。

git pull --rebase origin master

(3)本地库内容推送到远程

– 使用 git push 命令,实际上是把当前分支master推送到远程。

执行此命令后会要求输入用户名、密码,验证通过后即开始上传。

git push origin master

6、常用命令

(1)创建仓库命令

下表列出了 git 创建仓库的命令:

命令

说明

git init

初始化仓库

git clone

拷贝一份远程仓库,也就是下载一个项目。


(2)提交与修改

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。

下表列出了有关创建与提交你的项目的快照的命令:

命令

说明

git add

添加文件到暂存区

git status

查看仓库当前的状态,显示有变更的文件。

git diff

比较文件的不同,即暂存区和工作区的差异。

git commit

提交暂存区到本地仓库。

git reset

回退版本。

git rm

将文件从暂存区和工作区中删除。

git mv

移动或重命名工作区文件。

(3)提交日志

命令

说明

git log

查看历史提交记录

git blame <file>

以列表形式查看指定文件的历史修改记录

(4)远程操作

命令

说明

git remote

远程仓库操作

git fetch

从远程获取代码库

git pull

下载远程代码并合并

git push

上传远程代码并合并

六、分支管理

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。

使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

Git 分支实际上是指向更改快照的指针。

有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。

查看当前分支:

git branch

创建分支命令:

git branch dev

切换分支:

git checkout master

合并某分支到当前分支:

git merge dev

删除分支:

git branch -d dev

七、冲突管理

远程仓库两人同时拉取

git pull --rebase origin master

两人同时修改同一个文件

git add .
git commit -m "xx"

其中一人 推送给 远程服务器 成功

git push origin master

另外一人 推送给 远程服务器 失败

git push origin master

解决

重新拉取

git pull --rebase origin master

编辑冲突的文件

git add .
git commit -m   ""
git  rebase  --continue

--continue 继续

--abort 取消

git  push origin master

第一人再拉取获取最新的版本

git pull --rebase origin master