版本控制工具Git的使用

589 阅读7分钟

一、Git的命令行操作

1.Git的本地库初始化

本地库初始化,也就是把本地库创建出来

命令:git init

创建一个文件夹,在文件夹右键菜单中打开Git Bash Here窗口,输入命令

image3617860c5d4415a7.png
image3617860c5d4415a7.png

可以看到显示初始化了一个空的git仓库在我们创建的文件夹,我们可以勾选查看隐藏文件就可以看到这个生成的文件夹。

注意:.git目录中存放的是本地库相关的目录和文件,不要删除也不要胡乱修改。

2.设置签名

用这个字符串可以区分开开发人员的身份。

形式:

用户名:chenjiaxing

邮箱:2609076192@qq.com

这里设置的签名和登录远程库(也就是代码托管中心)的帐号密码没有任何关系。

命令:

git config --global user.name chenjiaxing

git config --global user.email 2609076192@qq.com
  • 项目级别/仓库级别:仅在当前本地库范围内有效

  • git config

  • 系统用户级别:登录当前操作系统的用户范围

  • git config --global

级别优先级:项目级别优先于系统用户级别,二者都有时,采用项目级别的签名。 如果只有系统用户级别的签名,就以系统用户级别为准。

二者都没有不允许!

一般设置用户级别的就不用我们创建每个项目都去设置它,一般项目级别的配置信息在.git文件夹中,而用户级别的在当前系统用户目录下的.gitconfig文件中,可以使用cd ~名称切换到当前用户文件夹,然后进行查看。

3.Git基本命令

1)状态查看

git status   
查看工作区、暂存区状态

当在一个新初始化的项目中输入命令时:

2)添加

git add [file name]
将工作区的“新建/修改” 添加到暂存区

3)提交

git commit -m "commit message" [file name]
将暂存区的内容提交到本地库

4)查看历史记录

多屏显示控制方式:

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

git log:

git log --pretty=oneline:

git log --oneline:

git reflog:

提示:HEAD@{移动到当前版本需要多少步}

5)前进后退

本质:指针的移动

  • 基于索引值操作[推荐]

    git reset --hard [局部索引值]

    如:git reset --hard a6ace91
  • 使用^符号: 只能后退

    git reset --hard HEAD^

    注:一个^表示后退一步, n 个表示后退 n 步
  • 使用~符号: 只能后退

    git reset --hard HEAD~n

    注: 表示后退 n 步

reset 命令的三个参数对比 :

  • --soft: 参数 :仅仅在本地库移动 HEAD 指针
  • --mixed:参数在本地库移动 HEAD 指针、 重置暂存区
  • --hard: 参数: 在本地库移动 HEAD 指针 、重置暂存区 、重置工作区

6)找回删除的文件

前提: 删除前, 文件存在时的状态提交到了本地库。
操作:

git reset --hard [指针位置]

删除操作已经提交到本地库: 指针位置指向历史记录

git reset --hard a6ace91

删除操作尚未提交到本地库: 指针位置使用 HEAD

git reset --hard HEAD

7)比较文件差异

操作:

将工作区中的文件和暂存区进行比较

git diff [文件名]  

将工作区中的文件和本地库历史记录比较
不带文件名比较多个文件

git diff [本地库中历史版本] [文件名]

二、Git分支

1.什么是分支

在版本控制过程中, 使用多条线同时推进多个任务。

比如我们的主分支是master,现在要开发一个蓝色的皮肤功能feaure_blue和一个游戏的功能feature_game。这时候两个分支可以同时进行开发,谁也不用等谁,当功能开发完成后,可以申请合并到主分支中。

如果开发过程中遇到了bug,我们可以直接创建一个错误修复分支hot_fix,进行bug修复,而不影响主程序的运行。

2.分支的操作

  • 创建分支

    git branch [分支名]
  • 查看分支

    git branch -v
  • 切换分支

    git checkout [分支名]
  • 合并分支

  • 第一步: 切换到接受修改的分支(被合并, 增加新内容) 上
    git checkout [被合并分支名]

  • 第二步: 执行 merge命令
    git merge [有新内容分支名]

冲突:当我们创建了分支后,其实两个分支我们是都可以修改的,当我们正好修改的两个分支的同一个地方,两个修改的地方又不一致的时候,就会产生版本冲突的问题。

冲突 :

冲突的解决:

  • 第一步: 编辑文件, 删除特殊符号
  • 第二步: 把文件修改到满意的程度, 保存退出
  • 第三步:git add [文件名]
  • 第四步: git commit -m "日志信息"(注意: 此时 commit 一定不能带具体文件名 )

三、Git远程操作

1.在Github创建远程库

第一步:在Github创建帐号,登录

第二步:

第三步:

2.创建远程库地址别名

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

3.推送

git push [别名] [分支名]

4.克隆

git clone [远程地址]

功能:

  • 完整的把远程库下载到本地
  • 创建 origin 远程地址别名
  • 初始化本地库

5.团队成员邀请

点击Collaborators,输入新成员的Github用户名,点击Add collaborator

也可以复制邀请地址发送给新成员,进入地址同意后即可加入团队

6.拉取

pull=fetch+merge
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]
git pull [远程库地址别名] [远程分支名] 

7.解决冲突

  • 如果不是基于 GitHub 远程库的最新版所做的修改, 不能推送, 必须先拉
    取。
  • 拉取下来后如果进入冲突状态, 则按照“分支冲突解决” 操作解决即可。

四、跨团队操作

也就是非本团队成员想在不加入本团队的基础上进行协同开发。

1.Fork

团队外成员点击fork按钮将代码仓库复制到自己帐号

2.本地修改, 然后推送到远程

3.pull request

向团队的代码发起合并请求

4.输入修改的标题,说明信息

5.仓库创建者审核、合入代码

仓库创建人点击pull request可以查看合并请求

可以进行审核代码:

审核没有问题有可以同意合并:

五、设置SSH免密登录

1.进入当前用户家目录

cd ~

2.删除.ssh目录

rm -rvf .ssh

3.运行命令生成.ssh 密钥目录

//xx.xx@xxx.xx替换成自己的邮箱

ssh-keygen -t rsa -C "xx.xx@xxx.xx"

注意: 这里-C 这个参数是大写的 C

4.进入.ssh 目录查看文件列表

ll -la

可以看到生成了两个文件id_rsaid-rsa.pub,id-rsa.pub这个文件中存储的就是生成的秘钥信息。来查看一下

cat id_rsa.pub

5.将秘钥添加到github

复制id_rsa.pub文件内容, 登录 GitHub,点击用户头像SettingsSSH and GPG keys

6.创建ssh别名

git remote add origin_ssh git@github.com:2609076192/mydoc.git

然后就可以使用这个别名来进行代码的提交和拉取操作了

7.提交测试