一、git 基本指令

git 安装案例

1、创建版本库

  • 在项目文件夹内, 执行: git init

2、提交文件

指令描述
git status进行查看文件状态
git add 文件名将文件添加到暂存区
git commit提交文件到本地库
git commit -m “注释内容”编写注释,完成提交

3、查看文件提交记录

  • 执行 git log 文件名 进行查看历史记录

image-20200815003430227

  • git log –pretty=oneline 文件名 (简易信息查看)

image-20200815003346667

4、回退历史

  • git reset –hard HEAD^ 回到上一次提交
  • git rest – hard HEAD~n 回退 n 次操作(回退 2 次版本以上,就建议使用此指令)

5、版本穿越

  • 进行查看历史记录的版本号,执行 git reflog 文件名

image-20200815104450491

  • 执行git reset –hard 版本号

image-20200815104516177

6、还原文件

  • git checkout – 文件名

image-20200815104738820

7、删除某个文件

  • 先删除文件,在git add 提交

8、git 结构

image-20200815105512715

  • 工作区:就是电脑的本地的磁盘目录
  • 本地库:工作区有个掩藏目录.git,它就是 Git 的本地版本库
  • 暂存区:一般存放在”git 目录”下的 index 文件(.git/index)中,所以我们把暂存区有时也叫索引区(index)。

9、创建分支

  • git branch <分支名>
  • git branch -v 查看分支

10、切换分支

  • git checkout <分支名>
  • 一步完成: git checkout -b <分支名>

11、合并分支

  • 先切换到主干 git checkout master
  • git merge <分支名>

12、冲突

​ 冲突一般是指同一个文件同一位置的代码,在两个版本合并的时版本管理软件无法判断到底应该保留那个版本,因此会提示该文件发生冲突,需要手工判断解决冲突。

合并时冲突

​ 程序合并时发生冲突系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。

image-20200815112008105

解决冲突:

  • 此时通过 git diff 可隐找到发生冲突的文件及冲突的内容。

image-20200815112800702

  • 然后修改冲突文件的内容,再次git add<file>git commit 提交后,后缀MERGING消失,说明冲突解决完成。

image-20200815113039881

二、git 与 github

图示:

image-20200815153127132

1、增加远程地址

  • git remote add <远端代号> <远端地址>

    <远端代号> 是指远程链接的代号,一般直接用 origin 做为代号,也可以自定义。

    <远端地址>默认远程链接的 url

    例如:git remote add origin https://github.com/user111/Helloworld.git

2、推送到远程库

  • git push <远端代号> <本地分支的名称>

    <远端代号> 是指远程链接的代号

    <分支名称> 是指要提交的分支名字,比如 master。

    例如:git push origin master

3、从 GitHub 上克隆一个项目

  • git clone <远端地址><新项目目录名>

    <远端地址> 是指远程链接的地址

    <项目目录名> 是指为克隆的项目在本地新建的目录名称,可以不填,默认是 Github 的项目名。

    命令执行完成后,会自动为这个远端地址建一个名为 origin 的代号。

    例如: git clone https://github.com/user111/Helloworld.git hello_world

4、从 gitHub 更新项目

  • git pull <远端代号><远端分支名>

    <远端代号> 是指远程链接的代号

    <远端分支名> 是指远端的分支名称,如 master.

    例如:git pull origin master

5、协作冲突

image-20200815154701509

image-20200816120251135

三、https VS ssh

​ ssh 模式与 https 模式的一个重要的好处就是,每次 push、pull、fetch 等操作时,不用重复填写用户名密码。(前提是你必须是这个项目的拥有者或合作者,且配置好了 ssh key)。

1、配置 SSH key

  • 步骤 1:检查电脑上是否已经生成 SSH Key 在 git bash 下执行如下命令

image-20200816112735836

  • 步骤 2:创建 SSH Key: ssh-keygen -t rsa -C XXXXXX@hainan.net 成功的话在~/下生成.shh 文件夹,进去,打开 id_rsa.pub, 复制里面的 Key。

image-20200816113318204

  • 步骤 3:进入.sshwe 文件包,打印 id_rsa.pub 的内容,复制全部内容

image-20200816113553081

  • 步骤 4:登入 GitHub 后,右上角点击 setting

image-20200816113742813

  • 步骤 5:在左侧菜单中选择 SSH and GPG keys

image-20200816115006081

  • 步骤 6:Title 随便写,Key 把之前 id_rsa.pub 的内容复制进去,点击 Add SSH Key,设置 shh key 完成。

image-20200816115246668

  • 测试连通性:找到一个项目,要改用 ssh 连接

image-20200816115627221

  • 要建立新的远程代号

    git@github.com:yuebuqun3333/jianfa.git(参考上面)

git remote add originssh git@github.com:yuebuqun3333/jianfa.git

​ 以后再提交代码的时候就不用输入密码(第一次使用会要求输入个人 yes)

git push originssh master

四、Git 工作流

1、Git 工作流

​ 简单来说就是,一个项目的成员们在工作中统一使用 Git 的方式。

2、集中式工作流

  • 像 SVN 一样,集中式工作流以中央仓库为项目所修改的单店=点实体。所有的修改都是提交到 Master 这个分支上。
  • 这种方式与 SVN 的主要区别就是开发人员有本地库,Git 很多特性并没有用到

image-20200816120924144

3、GitFlow 工作流

  • Gitflow 工作流通过为功能开发、发布准备和维护设立独立的分支,让发布迭代的过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

image-20200816121151089

image-20200816121213530

4、分支种类

  1. 主干分支 master

    主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。

  2. 开发分支 develop

    主要负责管理正在开发过程的代码。一般情况下应该是最新的代码。

  3. bug 修理分支 hotfix

    主要负责管理生产环境下出现的紧急修复代码。从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。

  4. 发布版本分支 release

    较大的版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。

  5. 功能分支 feature

    为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。 开发完成后会合并到开发分支