Git、Github、Gitlab与Gitee之间的关系

  • Git 是一种版本控制系统,是一个命令,是一种工具,有点像cmd(命令行工具)。
  • Github 是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱。
  • Gitlab 类似 github,一般用于在企业内搭建git私服,要自己搭环境。
  • Gitee 即码云,是 oschina 免费给企业用的,不用自己搭建环境,可以建立自己的私有仓库。
  • Git-ce 是社区版,gitlab-ee是企业版,收费的。

Github 的快速入门

1. 注册 github

https://zhuanlan.zhihu.com/p/369486197

2. github 的主页介绍

  1. 主页

    • Your profile,个人简介
  2. 个人简介页面

    • Edit profile,修改个人简介;
    • Overview,个人主页概览;
    • Repositories,仓库;
    • Star,点星记录;
    • Followers,粉丝;
    • Following,关注的 GitHub 账号;
    • Contribution activity:个人贡献历史记录
  3. 编辑个人简介:Edit profile

    • Name(昵称)
    • Bio(自我介绍)
    • Company(公司)
    • Location(位置)

    还可以 Settings->Public profile 修改详细的信息

3. 在 github 中对仓库的操作

3.1 创建

  1. 点击新建仓库

  2. 选择一些设置

    • Repository name,仓库名称;

    • Description,可选描述,也就是写不写都可以;

    • Public,默认的仓库类型;

    • Initialize this repository with a README,初始化仓库的信息文件,建议勾选

    • Add .gitignore,添加在 git add 时应该忽略的文件类型

    • gitignore 的使用方法:在 git 目录下创建一个.gitignore文件,然后在这个文件当中列举出我们不希望提交的文件即可。

      凡是列在这个文件当中的名称,当我们在使用 git add 的时候都会替我们忽略掉。我们也没有必要从头开始编写这个gitignore文件,因为git当中已经替我们写好了很多模板,我们可以直接拿过来参考:https://github.com/github/gitignore

    • gitignore 文件的语法:

      • 表示注释

      • 忽略整个文件夹

        如果我们想要忽略某个路径下文件夹内的所有内容,那么可以写出文件夹的路径再加上斜杠作为结尾即可。

        举例,假如希望过滤掉 src/build 文件夹下的所有内容,可以这么写:

        src/build/

        那么这个路径下的所有内容都会被忽略,这个路径是相对路径。

      • ! 表示取反

        可以用!命令来取反,表示我们指定的可以不遵守忽略条件的文件名。比如想要保留src/build路径下叫做 main.go 的文件,那么可以加上一行:

        !main.go
      • glob模式匹配

        * 可以代表一切的字符串,可以是0个也可以是任意多个字符

        [abc]表示匹配方括号当中的任何一个字符

        ?表示匹配任何一个字符

        [0-9]表示匹配0-9当中任意一个数字

        两个*号表示任何中间目录,比如src/**/build。可以匹配到src/test/build,也可以匹配到src/current/build。

        比如你想要过滤掉所有的txt格式的文件,你可以这么写:

        *.txt

        比如你想要过滤掉build路径下的所有json文件,你可以这么写:

        build/*.json

3.2 删除

  1. 进入自己的仓库页面

  2. 点击 Settings

  3. 到页面最下方

  4. 点击 Delete

4. GitHub 术语解释

  • Repository:简称Repo,可以理解为“仓库”,我们的项目就存放在仓库之中。也就是说,如果我们想要建立项目,就得先建立仓库;有多个项目,就建立多个仓库。
  • Issues:可以理解为“问题”,举一个简单的例子,如果我们开源一个项目,如果别人看了我们的项目,并且发现了bug,或者感觉那个地方有待改进,他就可以给我们提出Issue,等我们把Issues解决之后,就可以把这些Issues关闭;反之,我们也可以给他人提出Issue。
  • Star:可以理解为“点赞”,当我们感觉某一个项目做的比较好之后,就可以为这个项目点赞,而且我们点赞过的项目,都会保存到我们的Star之中,方便我们随时查看。在 GitHub 之中,如果一个项目的点星数能够超百,那么说明这个项目已经很不错了。
  • Fork:可以理解为“拉分支”,如果我们对某一个项目比较感兴趣,并且想在此基础之上开发新的功能,这时我们就可以Fork这个项目,这表示复制一个完成相同的项目到我们的 GitHub 账号之中,而且独立于原项目。之后,我们就可以在自己复制的项目中进行开发了。
  • Pull Request:可以理解为“提交请求”,此功能是建立在Fork之上的,如果我们Fork了一个项目,对其进行了修改,而且感觉修改的还不错,我们就可以对原项目的拥有者提出一个Pull请求,等其对我们的请求审核,并且通过审核之后,就可以把我们修改过的内容合并到原项目之中,这时我们就成了该项目的贡献者。
  • Merge:可以理解为“合并”,如果别人Fork了我们的项目,对其进行了修改,并且提出了Pull请求,这时我们就可以对这个Pull请求进行审核。如果这个Pull请求的内容满足我们的要求,并且跟我们原有的项目没有冲突的话,就可以将其合并到我们的项目之中。当然,是否进行合并,由我们决定。
  • Watch:可以理解为“观察”,如果我们Watch了一个项目,之后,如果这个项目有了任何更新,我们都会在第一时候收到该项目的更新通知。
  • Gist:如果我们没有项目可以开源或者只是单纯的想分享一些代码片段的话,我们就可以选择Gist。不过说心里话,如果不FQ的话,Gist并不好用。

Git 的快速入门

Windows

1. Git下载

https://git-scm.com/

2. Git 初体验及其常用命令介绍

2.1 进入 Git Bash 的命令窗口

  1. 在 F 盘下创建一个目录:Code,在其中新建一个名为 hit.txt 的文件

    注意:在进行任何的 git 操作之前,都必须切换到 Git 的仓库目录,即先进入我们定义的 Git 仓库的最顶层文件目录下,由此进入 Git Bash,这样之后的操作才可以顺利展开

  2. 在 Code 目录中右键点击 Git Bash Here

2.2 常用命令

2.2.1 git status

​ 在命令行窗口的光标处,输入git status命令,查看仓库的状态:

​ 如上图所示,结果显示 Code 不是一个 Git 仓库,这是很正常的反应,因为我们还没有在计算机中声明 Code 为 Git 仓库,之前说 Code 是 Git 仓库只是我们口头上的说的,计算机当然不会认可

2.2.2 git init

​ 在命令行窗口的光标处,输入git init命令,初始化 Git 仓库:

​ 如上图所示,结果显示已经初始化Code为一个空的 Git 仓库啦!重新输入git status命令检查一下仓库的状态:

​ 如上图所示,git报错 fatal: unsafe repository,具体原因:https://www.aspirantzhang.com/network/git-fatal-unsafe-repository.html

​ 输入 git config --global --add safe.directory F:/Code 之后继续输入 git status,可以看到在我们初始化仓库之后,Code目录已经成为一个 Git 仓库了,并且默认进入 Git 仓库的master分支,即主分支。

​ 在这里,我们需要注意的是Untracked fies提示,它表示demo仓库中有文件没有被追踪,并提示了具体没有被追踪的文件为hit.txt,还提示了我们可以使用git add命令操作这个文件

2.2.3 git add

​ 在命令行窗口的光标处,输入git add hit.txt命令,将hit.txt文件添加到 Git 仓库:

​ 如上图所示,如果没有报错,就说明命令已经执行啦!接下来,输入git status命令查看仓库状态:

​ 如上图所示,已经显示Initial commit初始化提交了,同时已经没有Untracked files提示了,这说明文件hit.txt已经被添加到 Git 仓库了,而在我们没有进行git add操作之前,文件hit.txt并不被 Git 仓库认可,因此才会出现提示初始化仓库为空的现象。

注意:git add命令并没有把文件提交到 Git 仓库,而是把文件添加到了「临时缓冲区」,这个命令有效防止了我们错误提交的可能性

2.2.4 git commit

​ 在命令行窗口的光标处,输入 git commit -m "text commit" 命令,将hit.txt文件提交到 Git 仓库:

​ 如上图所示,我们成功将文件hit.txt提交到了 Git 仓库,其中commit表示提交,-m表示提交信息,提交信息写在双引号""内。接下来,再输入git status命令查看仓库状态:

​ 如上图所示,结果显示nothing to commit, working tree clean,这表示已经没有内容可以提交了,即全部内容已经提交完毕

2.2.5 git log

​ 在命令行窗口的光标处,输入 git log 命令,打印 Git 仓库提交日志:

​ 如上图所示,显示了我们的提交记录,提交记录的内容包括Author提交作者、Date提交日期和提交信息。

2.2.6 git branch

​ 在命令行窗口的光标处,输入git branch命令,查看 Git 仓库的分支情况:

​ 如上图所示,显示了仓库Code中的分支情况,现在仅有一个master分支,其中master分支前的*号表示“当前所在的分支”,例如* master就意味着我们所在的位置为Code仓库的主分支。输入命令git branch a,再输入命令git branch,结果如下图所示:

​ 如上图所示,我们创建了一个名为a的分支,并且当前的位置仍然为主分支。

2.2.7 git checkout

​ 在命令行窗口的光标处,输入git checkout a命令,切换到a分支:

​ 如上图所示,我们已经切换到a分支啦!也可以通过命令git branch查看分支情况:

​ 也可以在创建分支的同时,直接切换到新分支,命令为git checkout -b,例如输入git checkout -b b命令:在a分支下创建b分支(b为a的分支),并直接切换到b分支

2.2.8 git merge

​ 切换到master分支,然后输入git merge a命令,将a分支合并到master分支:

​ 如上图所示,我们已经将a分支合并到主分支啦!注意:在合并分支的时候,要考虑到两个分支是否有冲突,如果有冲突,则不能直接合并,需要先解决冲突;反之,则可以直接合并

2.2.9 git branch -d & git branch -D

​ 输入 git branch -d a 可删除 a 分支

​ 如上图所示,a 分支已被删除,注意:有时通过 git branch -d 命令无法删除 a 分支,这时可以通过 git branch -D 进行强制删除

2.2.10 git tag

​ 输入 git tag v1.0 命令为当前分支添加标签:

​ 如上图所示,已成功为当前分支添加标签,通过 git tag 可以查看该标签。通过 git checkout v1.0 即可切换到该标签下的代码状态

3. 利用 SSH 完成 Git 与 GitHub 的绑定

3.1 生成 SSH key

  1. 在 Git Bash 中输入ssh命令,查看本机是否安装 SSH:

  2. 输入ssh-keygen -t rsa命令,表示指定 RSA 算法生成密钥,敲三次回车键,期间不需要输入密码,之后会生成两个文件,分别为id_rsa和id_rsa.pub,即密钥id_rsa和公钥id_rsa.pub. 对于这两个文件,其都为隐藏文件,默认生成在以下目录:

    Linux 系统:~/.ssh

    Mac 系统:~/.ssh

    Windows 系统:C:\Users\username\.ssh

3.2 添加 SSH key

  1. 进入 GitHub 主页,先点击右上角所示的倒三角▽图标,然后再点击Settins,进行设置页面

    点击我们的头像亦可直接进入设置页面:

  2. 点击SSH and GPG Keys进入此子界面,然后点击New SSH key按钮:

    如上图所示,我们只需要将公钥id_rsa.pub的内容粘贴到Key处的位置(Titles的内容不填写也没事),然后点击Add SSH key 即可

3.3 验证绑定是否成功

  1. 在 Git Bash 中输入ssh -T git@github.com进行测试:

    如上图所示,此结果即为Git 与 GitHub 绑定成功的标志

4. 通过 Git 将代码提交到 GitHub

4.1 本地没有 Git 仓库

​ 可以直接将远程仓库clone到本地。通过clone命令创建的本地仓库,其本身就是一个 Git 仓库了,不用我们再进行init初始化操作啦,而且自动关联远程仓库。我们只需要在这个仓库进行修改或者添加等操作,然后commit即可

  1. 进入 GitHub 个人主页

  2. 进入 demo 项目后,点击 Clone or download,复制上图所示的地址链接

  3. 进入我们准备存储 Git 仓库的目录,进入 Git Bash,输入

    git clone https://github.com/SomaFon/demo.git

  4. 将要添加到该仓库中的文件复制到文件中

  5. 从此目录进入 Git Bash,然后输入git status命令查看仓库状态:

    如上图所示,demo 已经是一个 Git 仓库了,而且在输入 git status 命令后显示有一个文件未被追踪,也就是我们刚刚复制过来的文件没有提交

  6. 在真正提交代码之前,需要先进行git add操作:

  7. 输入 git commit -m "text commit" 将 hit.txt 提交到仓库

  8. 输入git log命令查看仓库日志:

  9. 输入git status命令查看仓库状态:

  10. 输入 git push origin main 将本地仓库的内容push到远程仓库

    在第一次向远程仓库提交代码的时候,需要输入账号及密码进行验证,验证成功后,显示如上结果:

  11. 刷新 github 中的仓库

4.2 本地有 Git 仓库

​ 此时已经进行了多次commit操作

  1. 建立一个本地仓库:

  2. 进入该仓库,进入 init 初始化操作:

  3. 输入 git remote add origin https://github.com/SomaFon/Blog.git 关联远程仓库,其中origin为远程仓库的名字:

  4. 输入git pull origin master命令,同步远程仓库和本地仓库:

  5. 查看本地仓库,已同步

  6. 在本地仓库新建一个名为test.txt的测试文件:

  7. 输入git add和git commit命令,将文件test.txt添加并提交到仓库:

  8. 输入git push origin master命令,将本地仓库修改的内容提交到远程仓库:

参考:

https://zhuanlan.zhihu.com/p/369486197

https://zhuanlan.zhihu.com/p/264995020

Git 教程 | 菜鸟教程 (runoob.com)

Git、Github、Gitlab与Gitee的更多相关文章

  1. git,github,gitlab,码云的区别

    git 是版本控制工具. github https://github.com/和gitlab https://about.gitlab.com/都是基于git仓库的web开发流程代码托管平台.两者的区 ...

  2. 【GIT-精讲】从零玩转Git/GitHub/GitLab

    关于版本控制 一.什么是版本控制 版本控制(Version Control Systems)版本控制(Revision control)是一种软件工程技巧 在开发的过程中,确保由不同人所编辑的同一档案 ...

  3. 本地Git仓库与GitHub/GitLab仓库同步

    本地仓库即为在你的电脑上的项目文件,远程仓库即为服务器仓库,如GitHub.GitLab或其他等.此处以GitHub介绍本地仓库与远程仓库的同步.可先创建本地仓库,也可先创建GitHub仓库,但都需要 ...

  4. Git本地库既关联GitHub又关联Gitee

    创建代码仓库 使用gitee举例(github和gitee差不多) 1.在gitee右上角点击+,选择新建仓库

  5. git推送项目到github并使用gitee做镜像仓库

    2022最新版github入门教程,教你如何一步步创建自己的github账号并初始化仓库,然后使用git工具配置个人工作环境.配合gitee仓库,作为github的镜像仓库使用.这篇文章很基础,对萌新 ...

  6. github/gitlab 管理多个ssh key

    github/gitlab 管理多个ssh key 以前只使用一个 ssh key 在github上提交代码,由于工作原因,需要再添加一个ssh key在公司的 gitlab上提交代码,下面记录下配置 ...

  7. CentOS7上GitHub/GitLab多帐号管理SSH Key

    由于公司团队使用 GitLab 来托管代码,同时,个人在 Github 上还有一些代码仓库,可公司邮箱与个人邮箱是不同的,由此产生的 SSH key 也是不同的,这就造成了冲突 ,文章提供此类问题的解 ...

  8. 【Linux】配置SSH Key到GitHub/GitLab

    Linux配置SSH Key到GitHub/GitLab 准备工作 首先检查下本机是否已经安装了SSH,在终端输入ssh即可: 如果没有安装进行yum安装 # yum -y install opens ...

  9. Git和Gitlab在使用过程中所遇到的问题

    01-关于gitLab添加ssh key后,git clone还提示输入密码问题 本地用户连接远程仓库需要用 HTTP方式连接,SSH方式会出现提示输入密码 git clone http://.... ...

  10. GitHub && GitLab

    1.github介绍 Git作为一个开源的分布式版本控制系统,已经被越来越多的人使用,随之需要的就是需要有个专门的地方存储.管理通过Git上传的项目,这就是gitHub gitHub是一个面向开源及私 ...

随机推荐

  1. 断点续传(上传)C#版

    断点续传(上传)Java版 1. 客户每次上传前先获取一下当前文件已经被服务器接受了多少 2. 上传时设定偏移量 服务端代码如下: /// <summary> /// 断点续传,获取已上传 ...

  2. Java 项目工程搭建 --创建父工程

    Java 项目工程搭建 --创建父工程 Java 项目工程搭建 --创建子模块(依赖父工程) Intellij 2018 更多详细内容见尚硅谷阳哥视频,实际项目中更多的是copy,修改pom Inte ...

  3. ubuntu下完全卸载重装docker教程

    操作需在管理员权限下运行 卸载docker 1.删除docker的所有包 apt-get autoremove docker docker-ce docker-engine docker.io con ...

  4. 采购订单创建、修改、审批增强ME21N/ME22N/ME28/ME29N

    一.采购订单创建修改增强 BADI:ME_PROCESS_PO_CUST 通过POST方法中的参数im_header,获取对应的数据 订单头 "----------------------- ...

  5. 【计算机网络】JWT token、Session

    JWT token https://www.bilibili.com/video/BV1VM4y117qr/?spm_id_from=333.999.0.0&vd_source=d112766 ...

  6. 为什么加了@Transactional注解,事务没有回滚?

    在昨天的<事务管理入门>一文发布之后,有读者联系说根据文章尝试,加了@Transactional注解之后,事务并没有回滚.经过一顿沟通排查之后,找到了原因,在此记录一下,给后面如果碰到类似 ...

  7. 阿里云 Serverless 应用引擎(SAE)2

    8月7日,阿里云 Serverless 应用引擎(SAE)2.0正式公测上线!全面升级后的SAE 2.0具备极简体验.标准开放.极致弹性三大优势,应用冷启动全面提效,秒级完成创建发布应用,应用成本下降 ...

  8. js md5 和java md5后的值不一样

    开发发现js 对字符串md5 和 java对字符串md5 计算的结果居然不一样,后来找了一个匹配的这里记录一下 注:加密的对象中不能有空格,有空格md5后的结果就不一致,都是眼泪.. js md5算法 ...

  9. vue学习笔记 十四、页面跳转

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  10. arguments使用

    arguments在函数中可以使用,表示包含了当前函数调用时传入的实参. arguments通过索引值获取实参,索引值从开始,按顺序依次表示函数调用时传过来的实参. 1 // arguments的使用 ...