热门搜索 :
考研考公
您的当前位置:首页正文

Git&GitHub入门教程

来源:东饰资讯网

1. Git简介

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


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

1.1 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 
-- 查看
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指针
    重置暂存区
    重置工作区
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

3.1 申请账号

image.png

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 

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

扩展阅读

Top