前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git总结-看这一篇就够了!

Git总结-看这一篇就够了!

作者头像
唔仄lo咚锵
发布2020-09-15 15:28:01
9630
发布2020-09-15 15:28:01
举报

Git

  • 版本控制
    • 什么是版本控制?
    • 本地和集中式版本控制
    • 分布式版本控制-Git
  • Git理论
    • 工作区
    • 分支
    • HEAD指针与reset和checkout
    • fetch、clone和pull
  • 安装配置
    • Git安装
    • Git配置
  • 使用示例
    • 设置SSH
    • 关联远程仓库
    • upload
    • download
  • IDEA集成Git
  • 附:常用的Linux命令

版本控制


什么是版本控制?

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。并行开发、提高开发效率,减轻开发人员的负担,节省时间,同时降低人为错误。简单说就是便于管理多人协同开发项目的技术。

本地和集中式版本控制

  • 本地版本控制 本地版本控制简单说就像我们在自己本地电脑上做的备份或快照等,记录每次更新,适合个人使用。(比如常见的文档修改1版,2版,终版,究极版,究极不改版,完结版等等)
  • 集中版本控制 集中就是把数据保存到服务器上而不是本地,这样便于多人协同开发,协同开发者从服务器上同步更新或上传自己的修改。但这样用户本地只有同步更新前的版本,存在服务器损坏则丢失全部数据的风险,需要定期备份等。

分布式版本控制-Git

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆,在本地机器上拷贝一个完整的Git仓库。这样就可以在本地查看所有版本历史,可以离线在本地提交,在连网时push即可,不会因为服务器损坏或者网络问题,造成不能工作的情况。同时只要有一个用户的设备没有问题就可以恢复所有的数据。

Git理论


工作区

Git本地有三个工作区,再加上远程的git仓库共四个工作区:

  1. 工作目录(Working Directory) 工作区,就是你平时存放项目代码的地方
  2. 暂存区(Stage/Index) 暂存区,用于临时存放你的改动
  3. 资源库(Repository) 仓库区,就是安全存放数据的位置
  4. git仓库(Remote Directory) 远程仓库,托管代码的服务器
在这里插入图片描述
在这里插入图片描述

工作流程

  1. 在工作目录中添加或修改文件
  2. 将需要进行版本管理的文件放入暂存区
  3. 将暂存区的文件提交到仓库

分支

分支默认是master主分支,可以创建新的分支用于不同的用途或不同部门的人并行开发,比如开发,测试,发布,紧急修复等等。从主线上分离出来进行另外的操作,而又不影响主线就像线程一样,或者看作互不影响的平行宇宙,当需要的时候还可以进行合并分支等操作。 常用指令:

代码语言:javascript
复制
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch-name]
# 合并指定分支到当前分支
$ git merge [branch-name]
#切换分支
$ git checkout [branch-name]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

HEAD指针与reset和checkout

  • HEAD指针   Git中存在一个HEAD指针,在每次提交时HEAD指针会向前进一位,同时HEAD指针只存在于暂存区和仓库区。也就是说如果我们使用git add命令,那么此时HEAD指针会进入到暂存区,继续用git commit,此时会进入到仓库区。
  • git reset   git reset其实就是把HEAD指针回退一位。即如果你在仓库区,那么你回退一位就是暂存区,如果你在暂存区,那么指针会回退到上一次的仓库区。reset命令提供了三种使用方法。分别是–soft --mixed --hard:
代码语言:javascript
复制
git  reset  --soft #移动指针
git  reset  --mixed #移动指针+清空暂存区
git  reset  --hard #移动指针+清空暂存区+清空工作区
  • git checkout 简单说,checkout就是把当前代码更新成HEAD指针指向的提交。除了前面提到的git checkout [branch-name]切换分支,其原理就是将HEAD指针指向另一个分支,同时将其覆盖。还可以git checkout [file-name],把内容更新成上一版提交,但前提是HEAD指针指向的提交与当前你所在的区域不同。

小结:

reset

checkout

原理

头指针回退到上一个

更新当前代码为头指针指向的提交

异同

还原本地文件(撤销)

还原本地文件(替换)

fetch、clone和pull

fetch

clone

pull

适合场景

有本地仓库主分支,下载其他分支

没有本地仓库

本地仓库和远程仓库不同步

异同

从远程获取最新到本地,不会自动merg

把仓库克隆到本地 ,无需有本地仓库(即git init)

从远程获取最新并merge到本地

小结: git pull = git fetch + git merge,这样fetch就比较有优势,可以下载后根据情况再选择是否合并,而clone就是从无到有的过程。

安装配置


Git安装

  • 前往Git官网下载,选择对应的操作系统和版本即可。以Windows64为例。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  • 镜像下载(官网隔墙比较慢),可前往淘宝镜像下载。 划到最下面选最新版
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下载好后安装默认下一步即可,安装完后菜单会有三个程序:

  • Git Bash:Unix与Linux风格的命令行,使用最多(推荐)
  • Git CMD:Windows风格的命令行
  • Git GUI:图形界面的Git

Git配置

  • 用户配置(设置用户名与邮箱)
代码语言:javascript
复制
#查看当前用户配置
git config --global --list
  1. 直接修改 C:\Users\Administrator\ .gitconfig
在这里插入图片描述
在这里插入图片描述
  1. 命令行修改
代码语言:javascript
复制
git config --global user.name "123"  #名称
git config --global user.email 123@qq.com #邮箱
  • 系统配置(默认即可)
代码语言:javascript
复制
#查看系统配置
git config --system --list

Git\etc\gitconfig (Git 安装目录下的 gitconfig)

使用示例


设置SSH

  1. 打开Git Bash,创建SSH Key 按提示输入密码等,也可以全部直接回车
代码语言:javascript
复制
ssh-keygen -t rsa -C "注册邮箱"
在这里插入图片描述
在这里插入图片描述

2. 打开.ssh下的id_rsa.pub文件,复制里面key的内容 3. 进入github,头像->settings->SSH and GPG keys->new SSH key

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输入命令行ssh -T git@github.com测试,如图就成功连上github。

在这里插入图片描述
在这里插入图片描述

关联远程仓库

  1. 创建远程仓库 在首页左上角点击New 新建远程仓库
在这里插入图片描述
在这里插入图片描述

填写仓库名,描述等,选择语言和证书。

在这里插入图片描述
在这里插入图片描述

2.clone到本地 在你想要设置仓库的目录下右键打开Git Bash,克隆到本地,git clone ssh,ssh替换成你的仓库ssh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.输入命令关联

代码语言:javascript
复制
git remote #查看已关联的远程仓库
git remote rm 仓库名 #删除
git remote add 仓库名 你的仓库ssh #添加/关联

不能重复仓库名,这里origin重复了,可以取其他名,我演示删除后再添加。

在这里插入图片描述
在这里插入图片描述

upload

  1. 修改本地仓库,新建test.txt
在这里插入图片描述
在这里插入图片描述
  1. 输入git status查看文件状态,提示Untracked未跟踪文件有test.txt,还说可以输入git add < file>提交,输入git add . 即提交所有未跟踪文件,同步暂存区。
在这里插入图片描述
在这里插入图片描述

3.此时文件状态显示暂存区有新文件test.txt,还说可以输入git restore撤销来unstage取消暂存。我们接下来提交,输入git commit -m ”注释可随意填“。

在这里插入图片描述
在这里插入图片描述
  1. 此时文件已经提交到本地仓库了,显示nothing to commit。我们接下来同步到远程仓库,输入git push -u origin master。
在这里插入图片描述
在这里插入图片描述
  1. 到github远程仓库中查看,test.txt文件已经同步上去了。
在这里插入图片描述
在这里插入图片描述

5. 注意忽略提交,在新建仓库时配套的.gitignore文件设置了忽略提交的文件类型等(如class,log,jar等就没必要提交)。

符号

作用

例子

名称的最前面是感叹号!

表示将不被忽略

!lib.txt(lib.txt除外)

名称的最前面是路径分隔符/

表示要忽略的文件在此目录下,而子目录中的文件不忽略。

/temp (仅忽略项目根目录下的TODO文件,不包括其它目录temp )

名称的最后面是路径分隔符/

表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)

build/ (忽略build/目录下的所有文件 )

还可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。例: .txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中! doc/.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt (好像扯远了)

download

  1. 删除工作区test.txt文件,打开Git Bash,查看文件状态,提示deleted文件:test.txt,输入 git rm test.txt同步暂存区,类似与git add 。
在这里插入图片描述
在这里插入图片描述
  1. 同样的,提交到本地仓库,不在赘述。至此本地仓库就和远程仓库不一样了(没有test.txt)。
在这里插入图片描述
在这里插入图片描述
  1. 强制把远程仓库内容同步到本地。
代码语言:javascript
复制
git reset --hard origin/master #放弃本地修改
git pull  #从远程获取并合并,等同于git fetch + git merge
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

再刷新工作区,就能看见删掉的test.txt了。

在这里插入图片描述
在这里插入图片描述

IDEA集成Git


  1. 设置Git 打开File–>Setting->Version Control–>Git–>Path to Git executable选择你的git安装后的git.exe文件,然后点击Test,测试是否设置成功。
在这里插入图片描述
在这里插入图片描述
  1. 登录GitHub账号 File–>Setting->Version Control–>GitHub,输入账密登录
在这里插入图片描述
在这里插入图片描述
  1. 创建本地仓库 VCS–>Import Version Control–>Creat Git Respository,选择项目目录
在这里插入图片描述
在这里插入图片描述
  1. IDEA出现如下图变化:
在这里插入图片描述
在这里插入图片描述

可以打开Terminal用我们熟悉的命令行操作,也可以用右上角IDEA集成的按钮来操作。

在这里插入图片描述
在这里插入图片描述

命令行就不再赘述了,继续介绍IDEA集成。

  1. 添加到暂存区 右键项目–>Git–>add(等同于 git add .)
在这里插入图片描述
在这里插入图片描述

add完后文件会变成绿色,输入git status也可查看。

在这里插入图片描述
在这里插入图片描述
  1. commit提交到本地仓库 可以右键项目–>Git–>commit Directory 或则右上角√或左侧导航
在这里插入图片描述
在这里插入图片描述

等同于git commit -m “航空票务系统”

在这里插入图片描述
在这里插入图片描述

7.同步到远程仓库 VCS–>Import into Version Control–>Share Project on GitHub

在这里插入图片描述
在这里插入图片描述

在弹框中输入仓库名和描述,点击Share。

在这里插入图片描述
在这里插入图片描述

同步成功:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

附:常用的Linux命令


指令

作用

cd

改变目录

cd . .

回退到上一个目录,直接cd进入默认目录

pwd :

显示当前所在的目录路径。

ls(ll)

都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。

touch

新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。

rm

删除一个文件, rm index.js 就会把index.js文件删除。

mkdir

新建一个目录,就是新建一个文件夹。

rm -r

删除一个文件夹, rm -r src 删除src目录

mv

移动文件

reset

重新初始化终端/清屏

clear

清屏

history

查看命令历史。

help

帮助

exit

退出

#

表示注释

原创不易,请勿转载本不富裕的访问量雪上加霜 ) 博主首页:https://blog.csdn.net/qq_45034708

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Git
  • 版本控制
    • 什么是版本控制?
      • 本地和集中式版本控制
        • 分布式版本控制-Git
        • Git理论
          • 工作区
            • 分支
              • HEAD指针与reset和checkout
                • fetch、clone和pull
                • 安装配置
                  • Git安装
                    • Git配置
                    • 使用示例
                      • 设置SSH
                        • 关联远程仓库
                          • upload
                            • download
                            • IDEA集成Git
                            • 附:常用的Linux命令
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档