Git集成Gitlab,Github,Gitee

Git

一、Git概述

Git大家都听过,是一个免费的、开源的分布式控制系统。

1. 版本控制工具

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

  • 集中式版本控制工具

    例如SVN、CVS等工具,都包含一个单一的集中管理的服务器,保存了所有文件的修订版本。协同工作的人们通过客户端连接到服务器,取出最新的文件并同步更新。

    优点:

    • 每个人都可以在一定程度上看到项目中的其他人正在做些什 么。
    • 管理员也可以轻松掌控每个开发者的权限
    • 管理一个集中化的版本控制系统

    缺点:服务器宕机,就无法协同工作。

  • 分布式版本控制工具

    例如Git等工具, 服务端保存了最新版本的代码,客户端想协同工作首先要将代码仓库完整地镜像下来,并可以在本地进行版本管理并同步更新。

    优点:

    • 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
    • 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

2. Git机制

工作代码→通过添加add,到暂存区,可以修改→通过提交commit,存储到本地库,无法更改

image-20220601164956025

3. Git和代码托管中心

代码托管中心,即远程库是基于网络服务器的远程代码仓库。主要分为两类:

  • 基于局域网:GitLab
  • 基于互联网:
    • GitHub
    • Gitee

二、Git安装

官网地址: https://git-scm.com/

安装:

双击Git-2.31.1-64-bit.exe

→ 同意协议

→ 配置安装位置(非中文,不包含空格目录)

→ 选择Git配置

→ 确认Git安装目录名称 → 选择Git默认编辑器

→ 选择默认分支名设置

→ 是否修改Git环境变量

→ 选择客户端联机协议OpenSSL

→ 配置Git 文件的行换行符,选择第一个自动转换(Windows 使用 CRLF,Linux 使用 LF)

→ 选择 Git 终端类型,选择默认的 Git Bash 终端

→ 选择 pull 合并的模式,选择默认fast-forward or merge

→ 选择 Git 的凭据管理器, 保存登录状态

→ 其他配置

→ 选择实验室功能,技术还不成熟,有已知的 bug,不要勾选,然后点击右下角的 Install 按钮,开始安装 Git

安装成功,打开Git Bash,输入Git --version查看Git版本信息。

三、Git常用命令

常用命令

命令 作用
git config --global user.name 用户名 设置用户签名
git config --global user.email 邮箱 设置用户邮箱
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m "日志信息" 文件名 提交到本地库
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭

1. 设置用户签名

$ git config --global user.name Vicstal
$ git config --global user.email 2428991957@qq.com
$ cat ~/.gitconfig
[user]
        name = Vicstal
        email = 2428991957@qq.com

Git 首次安装必须设置一下用户签名,否则无法提交代码。

并且这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任 何关系。

2. git-init-初始化本地库

在本地库项目文件夹路径下,初始化本地库

Sang@LAPTOP-CF4TUDVT MINGW64 /d/codeProject/HelloGit (master)
$ git init
Initialized empty Git repository in D:/codeProject/HelloGit/.git/

3. git status-查看本地库状态

Sang@LAPTOP-CF4TUDVT MINGW64 /d/codeProject/HelloGit (master)
$ git status
On branch master  当前分支名
No commits yet    提交的文件
Untracked files:  未被追踪的文件
  (use "git add <file>..." to include in what will be committed)
        hello.txt
nothing to commit (create/copy files and use "git add" to track)

4. git add-添加暂存区

让文件可以被追踪到。

命令 作用
git add 文件名 添加文件到暂存区
git rm --cached 文件名 删除暂存区文件
$ git add hello.txt
warning: LF will be replaced by CRLF in hello.txt.    自动转换换行符警告
The file will have its original line endings in your working directory

$ git rm --cached hello.txt        
     

5. git commit-提交本地库

命令 作用
git commit -m "版本信息" 文件名 将暂存区的文件提交到本地库
git reflog 查看日志
git log 查看详细日志
$ git commit -m "firstCommit" hello.txt
$ git status
On branch master
nothing to commit, working tree clean

$ git reflog
6ab51f3 (HEAD -> master) HEAD@{0}: commit (initial): firstCommit

$ git log
commit 6ab51f358830f2df4a3abb0412b917e3840c7732 (HEAD -> master)
Author: Vicstal <2428991957@qq.com>
Date:   Wed Jun 1 19:27:53 2022 +0800

    firstCommit

6. 更新文件

$ vim hello.txt		
$ git add hello.txt
$ git status
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   hello.txt    				可追踪的文件
       
$ git commit -m "v3.0" hello.txt
 1 file changed, 1 insertion(+), 1 deletion(-)   1处修改 1行新增 1行删除

$ git reflog
685fd80 (HEAD -> master) HEAD@{0}: commit: v3.0   现在指向3.0版本
c229daa HEAD@{1}: commit: v2.0
6ab51f3 HEAD@{2}: commit (initial): firstCommit

7. git reset-版本穿梭

命令 作用
git reset --hard 7位版本号 版本穿梭
$ git reset --hard c229daa
HEAD is now at c229daa v2.0

四、Git分支

1. Git分支

项目的版本控制中,可以有多个分支应对不同种任务。分支从主线中分离开来,不会影响主线运行。

image-20220601195451995

优点:

  • 同时并行推进多个功能开发,提高开发效率
  • 分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

2. 常用命令

命令 作用
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 将指定分支合并到当前分支上

3. 合并分支

$ git branch hot-fix
$ git branch -v
  hot-fix 6436445 hot-fix v1.0
* master  685fd80 v3.0
$ git checkout hot-fix
$ vim hello.txt
$ git add hello.txt
$ git commit "hot-fix v1.0" hello.txt

$ git checkout master
$ git merge hot-fix
Updating 685fd80..6436445
Fast-forward
 hello.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

4. 合并分支(代码冲突)

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替 我们决定使用哪一个。必须人为决定新代码内容。

合并冲突问题:

#hot-fix分支的hello.txt
hello, git 55555
hello, git
#master分支的hello.txt
hello, git
hello, git 66666

#在master分支下合并,失败
$ git merge hot-fix
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.

Sang@LAPTOP-CF4TUDVT MINGW64 /d/codeProject/HelloGit (master|MERGING)

冲突文件:

<<<<<<< HEAD
hello, git 555555
hello, git
=======
hello, git
hello, git 6666666
>>>>>>> hot-fix

解决方法:

  1. 自己修改冲突文件,保留需要的代码

    hello, git 555555
    hello, git 6666666
    
  2. 将冲突文件添加到暂存区

    $ git add hello.txt
    
  3. 执行提交(注意:此时使用 git commit 命令时不能带文件名)

    git commit -m "v5.0"
    

分支原理

  • master、hot-fix 其实都是指向具体版本记录的指针。所以创建分支的本质就是多创建一个指针
  • 当前所在的分支,其实是由 HEAD 决定的。
  • HEAD 如果指向 master,那么我们现在就在 master 分支上。 HEAD 如果执行 hotfix,那么我们现在就在 hotfix 分支上。

五、Git代码托管中心

1. 团队协作

通过pull, push, clone更新获取代码

image-20220602122132733

2. 跨团队协作

跨团队通过fork项目 ➡修改代码 ➡ push提交 ➡ 发送pull 请求 ➡ 当前团队通过merge合并代码

image-20220602122122445

六、GitHub

远程仓库操作

命令 作用
git remote -v 查看远程仓库别名
git remote add 别名 远程地址 为远程仓库起别名
git push 别名 分支 将本地分支推送到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 远程仓库地址别名 远程分支名 将远程仓库对于最新内容拉下来后与本地分支合并

1. 创建远程仓库别名

为使用的远程仓库创建别名,便于方便和管理

命令 作用
git remote add 别名 远程地址 为远程仓库起别名
$ git remote add HelloGit https://github.com/Vicstal/HelloGit.git

$ git remote -v
HelloGit        https://github.com/Vicstal/HelloGit.git (fetch) 拉取别名
HelloGit        https://github.com/Vicstal/HelloGit.git (push)  推送别名

2. git push-推送本地分支到远程仓库

命令 作用
git push 别名/地址 分支 将本地分支推送到远程仓库

需要登录GitHub账户

Sang@LAPTOP-CF4TUDVT MINGW64 /d/codeProject/HelloGit (master)
$ git push HelloGit master

Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 16 threads
Compressing objects: 100% (14/14), done.
Writing objects: 100% (21/21), 1.49 KiB | 508.00 KiB/s, done.
Total 21 (delta 7), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (7/7), done.
To https://github.com/Vicstal/HelloGit.git
 * [new branch]      master -> master

3. git pull-拉取远程仓库到本地分支

拉取远程仓库最新分支到本地

命令 作用
git pull 别名 分支名 将远程仓库对于最新内容拉下来后与本地分支合并
$ git pull HelloGit master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 641 bytes | 80.00 KiB/s, done.
From https://github.com/Vicstal/HelloGit
 * branch            master     -> FETCH_HEAD
   a66faf6..0879bbf  master     -> HelloGit/master
Updating a66faf6..0879bbf
Fast-forward
 hello.txt | 1 +
 1 file changed, 1 insertion(+)

4. git clone-克隆远程仓库

命令 作用
git clone 远程地址 将远程仓库的内容克隆到本地

无需登录,clone 会做如下操作:

  • 拉取代码
  • 初始化本地仓库
  • 创建别名
$ git clone https://github.com/Vicstal/HelloGit.git
Cloning into 'HelloGit'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 24 (delta 8), reused 20 (delta 7), pack-reused 0
Receiving objects: 100% (24/24), done.
Resolving deltas: 100% (8/8), done.

#clone自动创建别名
Sang@LAPTOP-CF4TUDVT MINGW64 /d/codeProject/HelloGit2/HelloGit (master)
$ git remote -v
origin  https://github.com/Vicstal/HelloGit.git (fetch)
origin  https://github.com/Vicstal/HelloGit.git (push)


5. 本地团队合作

模拟其他团队操作仓库

5.1 克隆分支

# 在文件夹下clone项目
Sang@LAPTOP-CF4TUDVT MINGW64 /d/codeProject/HelloGit2 (master)
$ git clone https://github.com/Vicstal/HelloGit.git

#进入HelloGit2/HelloGit克隆的项目里
#在windows的凭证管理器中删除GitHub账号名

5.2 邀请加入团队

Github库

➡ settings ➡ Manage access ➡ Invite a collaborator

➡ 输入成员名

➡ 复制邀请函Pending Invite ➡ 团队成员接受邀请 Accept invitation

5.3 拉取推送分支

成功之后可以在 atguigulinghuchong 这个账号上看到 git-Test 的远程仓库。并可以推送到远程仓库:

$ git push HelloGit master
Logon failed, use ctrl+c to cancel basic credential prompt.
Username for 'https://github.com': atguigulinghuchong
Counting objects: 3, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 309 bytes | 309.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/atguiguyueyue/git-shTest.git
 7cb4d02..5dabe6b master -> master
 
$ git pull HelloGit master

6. 跨团队合作

6.1 fork分支

跨团队要想合作,首相fork远程仓库到本地库

image-20220602144056747

在本地修改代码,并推送

$ git pull git-shTest master
$ vim hello.py
$ git add hello.py
$ git commit
$ git push git-shTest master

6.2 跨团队merge分支

  1. 其他团队提交pull请求

  1. 自己他团队merge请求

7. SSH免密登录

  1. 生成SSH:如果已有ssh,在C:/user/用户名下删除.ssh, 进入bash
# 运行命令生成.ssh 秘钥目录
$ ssh-keygen -t rsa -C 远程仓库github名
$ 三次回车
# 打开id_rsa.pub,复制
  1. 添加SSH

    复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像 ➡ Settings ➡ SSH and GPG keys ➡ new SSH key ➡ Title:随意, Key:复制的公钥 ➡ Add SSH Key

  2. 免密拉取,推送分支

git push/pull SSH连接 分支名

七、Idea集成Git

1. 配置Git忽略文件

在使用idea集成git时,设置需要忽略的文件,这些文件不参与服务器上部署运行,把它们忽略掉能屏蔽IDE工具之间的差异。

  1. 在C:/Users/用户名下创建git.ignore

    # Compiled class file
    *.class
    # Log file
    *.log
    # BlueJ files
    *.ctxt
    # Mobile Tools for Java (J2ME)
    .mtj.tmp/
    # Package Files #
    *.jar
    *.war
    *.nar
    *.ear
    *.zip
    *.tar.gz
    *.rar
    # virtual machine crash logs, see 
    http://www.java.com/en/download/help/error_hotspot.xml
    hs_err_pid*
    .classpath
    .project
    .settings
    target
    .idea
    *.iml
    
  2. 在C:/Users/用户名/.gitconfig 文件中引用忽略配置文件

    [user]
    	name = Layne
    	email = Layne@atguigu.com
    [core]
    	excludesfile = C:/Users/Sang/git.ignore
    

    注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”

2. Idea集成Git

集成Git

settings ➡ 设置Git安装目录

将项目添加到版本控制

➡ VCS ➡ Enabled Version Control Integration

将代码添加到暂存区

代码文件 ➡ 右键 ➡ Git ➡ +Add

将项目添加到暂存区

项目 ➡ 右键 ➡ Git ➡ +Add

将项目添加到本地库

项目 ➡ 右键 ➡ Git ➡ commit Directory

3. 切换版本

  1. 点击Git
  2. 点击Log
  3. 在切换的版本上右键 → checkout Revision 'a40001aa'

4. 创建分支

  1. 点击new Branch

  2. 创建新分支

    image-20220608115027021

5. 合并分支

  1. 点击分支按钮
  2. 点击要合并的分支
  3. 合并:Merge into current

image-20220608115223718

6. 合并分支——有冲突

  1. master合并hot-fix分支

  2. 自定义冲突

八、GitHub

1. 设置GitHub账号

setting ➡ version control ➡ Github ➡ 点击加号 ➡ 通过token登录github

https://blog.csdn.net/qq_44866828/article/details/118084398

➡通过Github令牌登录

https://blog.csdn.net/qq_44866828/article/details/118084398

2. 将项目分享到Github

底下可以看到推送成功信息

3. Push项目到github

  1. 点击push箭头

  2. 点击项目名,define remote

  3. 改为SSH连接推送项目

  4. 选择SSH连接的项目,push

注意:

push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致, push 的操作是会被拒绝的。

要想 push 成功,一定要保证本地库的版本要比远程 库的版本高!

因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地 代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地 代码更新到最新以后,然后再修改,提交,推送!

4. Pull项目到本地

5. clone项目

九、Gitee

1. 创建仓库

2. IDEA集成Gitee

  1. Idea安装Gitee插件

    setttings ➡ Plugins ➡ Gitee ➡ install

  2. 在idea中登录gitee账号

    settings ➡ Log in via Gitee

    ➡ 登录账号密码

3. push推送到指定仓库中

push代码时,自定义仓库连接到指定位置

4. pull远程项目到本地

Git → Pull到本地

5. 克隆Github项目到Gitee

+➡ 新建仓库 ➡ 已有仓库 ➡ 将Github的Https连接复制过来

更新项目

十、GitLab

开源的用户自建代码托管平台工具,仅支持CentOS7以上系统。官网地址:https://about.gitlab.com/

1. GitLab安装

  1. 准备好一台CentOS主机,修改Ip地址和主机名

    修改ip地址:

    vim /etc/sysconfig/network-scripts/ifcfg-ens160
    

    或者直接修改VMWare,修改ip地址

    修改主机名:

    $ vim /etc/hostname
    gitlab-server(主机名)
    
  2. 配置hosts, 将服务器主机名映射到对应的服务器ip地址

    192.168.131.128 gitlab-server
    
  3. 安装gitlab

    • 在/opt/module文件下上传文件gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm

    • 在module下创建gitlab-install.sh

      sudo rpm -ivh /opt/module/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
      sudo yum install -y curl policycoreutils-python openssh-server cronie
      sudo lokkit -s http -s ssh
      sudo yum install -y postfix
      sudo service postfix start
      sudo chkconfig postfix on
      curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
      sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ce
      
      $ chmod +x gitlab-install.sh
      
    • 执行gitlab-install.sh

      [root@gitlab-server module]# ./gitlab-install.sh
      

      报错:Errors during downloading metadata for repository ‘AppStream‘

      处理:https://blog.csdn.net/xiexingchen_y/article/details/123211959

2. Gitlab使用

  1. 初始化Gitlab服务

    [root@gitlab-server module]# gitlab-ctl reconfigure
    
  2. 启动Gitlab服务

    [root@gitlab-server module]# gitlab-ctl start
    

3. Gitlab创建远程仓库

  1. 访问gitlab地址

    192.168.131.128:80
    gitlab-server (已配置centos主机名和hosts映射)
    
  2. 修改root原始密码

  3. 登录gitlab

    user: root
    password:
    

4. Push项目到Gitlab

push, 选择 gitlab 远程连接

注意:gitlab 网页上复制过来的连接是:http://gitlab.example.com/root/git-test.git, 需要手动修改为:http://gitlab-server/root/git-test.git

posted @ 2022-06-08 22:36  言思宁  阅读(178)  评论(0编辑  收藏  举报