Git&GitHub入门教程

作者: Coding小聪 | 来源:发表于2018-10-20 15:16 被阅读4次

1. Git简介

Git是和SVN一样的版本控制工具,它和SVN最大的区别是SVN是集中式的版本""控制工具,而Git是分布式版本控制工具。


集中式和分布式版本控制工具

Git是Linux之父Linus在2005年为了管理Linux代码而使用C语言开发的版本控制系统。Git的官网:https://git-scm.com/

1.1 Git安装

下载地址:| Windows | Linux/Unix |

在Windows上安装Git非常简单,全程点击"next"不需要任何思考。具体的安装步骤可以参考官方的这篇教程4 起步 - 安装 Git

1.2 代码托管中心(Git服务器)

一个团队使用Git来进行开发的时候,最好的方式是按照集中式的思想搭建一个中心的Git服务器,团队中的成员都可以从该服务器中推送和拉取代码。

对于Git服务器,既可以是我们自己搭建,也可以选择使用第三方的服务。

  • GitLab
  • GitHub(第三方的代码托管中心)
  • 码云(国产的GitHub)

1.3 Git结构


工作区:我们代码等资源所存放的目录,除了其中的.git隐藏目录。
暂存区:一般存放在"git目录"下的index文件(.git/index)中
本地库:git commit之后,暂存区的所有内容会提交到本地库。

这一块的内容可以参考:工作区和暂存区

Git跨团队合作示意图

2. Git命令行操作

2.1 初始化本地仓库

mkdir HelloGit
cd HelloGit
git init

git init命令执行之后会将当前目录初始化成本地仓库,Git自动为我们创建了唯一一个master分支,默认是往该创建好的master分支提交修改。

git init
.git隐藏目录中的内容如下所示
.git目录内容
注意,一般情况下请不要动.git隐藏目录中的内容。

2.2 设置签名

Git 全局设置:

-- 设置
git config --global user.name "codingXcong"
git config --global user.email "coding_zgc@163.com"
-- 查看
git config --global user.name
git config --global user.email

其中,--global是可选,其表示系统用户级别,去除--global则表示单个仓库级别。config配置信息保存的路径为.git/config

注意:设置用户名和邮箱主要是区分不同开发人员的身份,它和github或码云的登录信息没有任何关系。

2.3 基本操作

2.3.1 添加
-- 添加单个文件
git add [file name] --将工作区的文件添加到暂存区
-- 添加当前目录下所有的文件
git add .
2.3.2 提交
-- 提交单个文件
git commit -m "commit message" [file name] --将暂存区的内容提交到本地库
-- 提交暂存区所有的文件
git commit -m "commit message"

在执行提交之前,文件必须要先通过git add添加到暂存区。

2.3.3 删除
--从工作区中删除文件
git rm [filename]

--从暂存区中删除文件
git rm --cached [filename]

--从工作区、暂存区、本地库三个地方删除文件
git rm [filename]
git commit -m 'delete somefile'

--从暂存区、本地库中删除文件,但是工作区还存在。
git rm --cached [filename]
git commit -m 'delete somefile'
2.3.4 查看提交记录
git log
git log显示的某一条commit记录
commit后跟着的字符串表示该次提交的索引值。
--让某一条commit记录显示在一行当中
git log --oneline 

图中第一列黄色的字符串表示该次提交的局部索引值。如果提交的记录太多,可以通过以下方式来多屏控制:

  • 空格,向下翻页
  • b,向上翻页
  • q,退出

我们还可以通过git reflog实现相同的效果

git reflog
git reflog

其中HEAD@{}中的数字,表示移动到当前版本需要多少步。

2.3.5 提交记录的前进和后退
--基于提交记录的前进和后退
git reset

我们可以先通过git reflog命令获取各个提交记录,然后通过各提交记录的局部索引值实现不同提交版本之间的切换(HEAD指针的切换)。

git reflog显示各提交记录的局部索引值
git reset --hard fd01f6e   --回到初始化的时候
git reset --hard 9f825f0   --回到第二次提交的版本

git reset指令还有另外两个参数--soft--mixed,它们和--hard的区别如下:

  • --soft参数,本地代码不会发生变化
    仅仅在本地库移动HEAD指针
  • --mixed参数,本地代码不会发生变化,默认为这个参数
    在本地库移动HEAD指针
    重置暂存区
  • --hard参数,本地代码会发生变化
    在本地库移动HEAD指针
    重置暂存区
    重置工作区

请参考:git reset soft,hard,mixed之区别深解

2.3.6 状态查看
git status   --查看工作区、暂存区状态
2.3.7 比较文件差异
git diff filepath 工作区与暂存区比较

git diff HEAD filepath 工作区与HEAD ( 当前工作分支) 比较

git diff --cached filepath 暂存区与HEAD比较

git diff branchName filepath  当前分支的文件与branchName 分支的文件进行比较

git diff commitId filepath 与某一次提交进行比较
2.3.8 分支管理
--创建分支
git brach [分支名]

--查看分支
git brach -v

--切换分支
git checkout [分支名]

-- 合并分支
1. 切换到接收合并的分支上
git checkout [接收合并的分支名]
2.执行merge命令
git merge [将要被合并的分支名]
2.3.9 文件冲突
冲突表现

冲突解决办法:

  1. 编辑文件, 删除特殊符号
  2. 把文件修改到满意的程度, 保存退出
  3. git add [文件名 ]
  4. git commit -m "日 志信息"。注意: 此时 commit 一定不能带具体文件名

3 GitHub

我们可以将GitHub看成代码托管中心或者远程仓库。GitHub的地址:https://github.com/

3.1 申请账号

image.png
GitHub官方入门教程

3.2 创建远程仓库

创建仓库

3.3 创建远程仓库别名

git remote -v 查看当前所有远程地址别名
git remote add [别名 ] [远程地址]

3.4 推送到远程仓库

git push <远程别名> <本地分支名>
git push origin master
完整一点的push指令如下
git push <远程别名> <本地分支名>:<远程主机分支名>
省略了远程主机分支名,即表示其名称和本地分支名相同。如果不存在就创建。

3.5 克隆

git clone https://github.com/codingXcong/rpc_learn.git

git clone的执行效果:

  1. 把远程库下载到本地;
  2. 初始化本地库;
  3. 创建origin远程地址别名。
下载远程库到本地 & 初始化本地库 创建origin远程地址别名

3.6拉取

git pull origin

作用:取回远程主机某个分支的更新,再与本地的指定分支合并
格式:git pull <远程仓库地址别名> <远程分支名>:<本地分支名>
git pull = git fetch + git merge

3.7 团队成员邀请

  1. 添加协作者


    add collaborator
  2. 复制邀请链接


    赋值邀请链接

然后将复制好的链接发送给要邀请加入的人

  1. 受邀人登录github,然后访问链接


  2. 加入成功后,可以在协作者列表中看到


这里有个不解的现象,在受邀人的仓库列表中看不到加入的项目。

3.8 远程协作

  • Fork项目


    Fork
  • 将Fork后的项目Clone到本地,在本地编写好代码后再推送到远程。


    clone项目到本地
    提交到远程仓库
  • pull request


    image.png

    image.png

扩展阅读

Git官方教程
码云平台帮助文档

相关文章

  • Git&GitHub入门教程

    1. Git简介 Git是和SVN一样的版本控制工具,它和SVN最大的区别是SVN是集中式的版本""控制工具,而G...

  • Git&Github入门教程笔记(3)

    最近看了看之前的文章,发现有的地方没有说明仔细,这一篇文章算是一个补充吧。 补充一:Git与Github的关系 大...

  • Git&Github入门教程笔记(1)

    一、 使用Git与Github的目的 Git与Github的功能有很多,可以自行百度查阅,我先说一下目前我所使用的...

  • Git&Github入门教程笔记(2)

    六. 使用Git创建本地git文件 1.Git常用命令 git config --global user.name...

  • Git&GitHub

    www.nowcoder.com/courses/2/1/1 一.introduction Git 版本控制系统,...

  • git&github

    环境 debian8.1github帐户一个ssh一个git 一个 安装 装入两个必须的软件sudo apt in...

  • GIT&GITHub

    获取(下载)github库的源码 1、打开git【git->Git Bash 打开gitbash】 2、进入要存放...

  • Git&Github

  • Git&GitHub

    廖雪峰教程 0.使用GitHub0.1 添加到远程库0.2 从远程库克隆0.3 GitHub使用 1.创建版本库 ...

  • Github 小白入门教程3

    首先,先放出往期教程导航GitHub小白入门教程1GitHub小白入门教程2 在很多场合下,我们可能需要将已经存放...

网友评论

    本文标题:Git&GitHub入门教程

    本文链接:https://www.haomeiwen.com/subject/gekvhftx.html