【实用工具】-Git+GitLab

news2024/12/23 14:53:45

1. Git介绍

1.1 什么是Git?

Git是一个分布式版本控制系统,用于跟踪和管理项目代码的变化。它是由Linus Torvalds于2005年创建的,旨在帮助开发者更好地协作、追踪代码的更改,并轻松地回滚到之前的版本。

Git相比传统的集中式版本控制系统,具有许多优势。它不仅允许每个开发者都拥有完整的项目副本(本地仓库),还能在不依赖中央服务器的情况下进行工作。这使得Git在网络连接不稳定或服务器不可用的情况下依然能够进行版本控制和开发工作。

1.2 Git的基本概念

在使用Git之前,了解一些基本概念是非常重要的。

1.2.1 仓库(Repository)

Git仓库是存储代码和版本历史的地方。它包含了项目的所有文件以及与这些文件相关的元数据。每个项目通常都有一个主仓库,可以在本地计算机或托管服务(如GitLab)上创建。

1.2.2. 提交(Commit)

提交是Git中最基本的操作之一。它代表了对项目代码的一次更改。每次提交都有一个唯一的标识符(SHA-1哈希值),用于跟踪和引用该次更改。

1.2.3. 分支(Branch)

分支是Git中用于独立开发某个功能或解决某个问题的副本。默认情况下,每个项目都有一个主分支(通常是"master"或"main"),而其他功能分支则从主分支上创建。分支的好处在于可以让团队成员并行工作,不会干扰彼此的代码。

1.2.4. 合并(Merge)

合并是将一个分支的更改合并到另一个分支的过程。当一个功能开发完成或问题解决后,可以将相关的分支合并回主分支,使得主分支也拥有这些更改。

1.2.5. 远程仓库(Remote Repository)

远程仓库是存储在网络或服务器上的Git仓库副本。通过与远程仓库交互,团队成员可以共享代码、协作开发,并将本地的更改推送到远程仓库或拉取远程仓库的最新更改。

1.3 安装和配置Git

在开始使用Git之前,首先需要安装Git并进行一些基本配置。

  1. 安装Git: 根据你的操作系统,下载并安装Git。Git可以在Windows、Mac和Linux等多种平台上运行。安装完成后,在命令行终端中输入 git --version 可以验证是否安装成功,并查看Git的版本信息。

  2. 配置Git: 在安装Git后,需要配置用户名和邮箱地址,这些信息将出现在你的提交记录中。

    在命令行终端中输入以下命令,并将其中的用户名和邮箱地址替换为你自己的信息:

    git config --global user.name "Your Name"
    git config --global user.email "your.email@example.com"
    

现在,你已经安装并配置好了Git,可以开始使用Git来跟踪和管理你的项目代码了。接下来,我们将学习如何初始化仓库、进行提交和创建分支等基本操作。

如果对命令内容不熟悉可以使用

git --help
以及
git help 特定指令进行查询

2. 常见的云端代码仓库介绍

在软件开发中,云端代码仓库是团队协作和代码托管的关键工具。下面介绍几个常见的云端代码仓库平台:GitHub、Gitee和华为CodeHub。

2.1. GitHub

GitHub是全球最大的开源代码托管平台,于2008年成立。它提供了一个简单易用的在线Git仓库管理系统,以及许多强大的协作功能。GitHub主要特点包括:

  • 广泛的开源项目: GitHub上有数以百万计的开源项目,包括各种编程语言、框架和工具等。
  • Issues和Pull Requests: 团队成员可以通过提交Issue来报告问题或提出功能请求。同时,Pull Requests允许团队成员共享并讨论他们对项目的修改,方便代码审查和合并工作。
  • GitHub Actions: 提供内置的持续集成/持续部署(CI/CD)工具,方便在代码提交时自动构建、测试和部署项目。
  • 协作和社交: 用户可以在项目上进行讨论、提交问题和请求,以及关注感兴趣的项目。

2.2. Gitee

Gitee(码云)是中国最大的代码托管平台,成立于2013年。它类似于GitHub,提供了Git仓库托管和团队协作的功能。Gitee的主要特点包括:

  • 快速访问速度: Gitee服务器位于中国境内,对于中国开发者,访问速度更快。
  • 企业版服务: Gitee提供企业版服务,为企业用户提供更多定制化和增值功能。
  • GVP(Gitee Valuable Project): Gitee对一些优质项目提供免费的资源和支持,帮助项目更好地成长。

2.3. 华为CodeHub

华为CodeHub是由华为公司推出的云端代码托管平台,用于代码存储和团队协作。它主要面向华为内部开发,不过也支持注册个人账户。CodeHub的主要特点包括:

  • 企业级支持: 专为大型企业和项目而设计,提供安全可靠的代码管理和团队协作功能。
  • 全球化服务: 华为CodeHub的服务器部署在全球各地,确保全球用户的访问速度和稳定性。

总结

GitHub、Gitee和华为CodeHub都是功能强大的云端代码仓库平台,提供了团队协作、代码托管和持续集成等功能,便于开发者在云端进行代码管理和协作。根据项目需求、地理位置和企业政策等因素,开发者可以选择适合自己的代码托管平台。

3.GitLab安装部署

在CentOS上安装GitLab

  1. 安装依赖软件包:

    打开终端并执行以下命令,安装GitLab的依赖软件包:

    sudo yum install -y curl policycoreutils-python openssh-server postfix
    sudo systemctl enable sshd postfix
    sudo systemctl start sshd postfix
    sudo firewall-cmd --permanent --add-service=http
    sudo systemctl reload firewalld
    

    这里安装了curl、policycoreutils-python、openssh-server、postfix等软件包,它们是GitLab运行所必需的。

  2. 添加GitLab软件源并安装GitLab:

    在终端中执行以下命令来添加GitLab的软件源并安装GitLab:

    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
    sudo EXTERNAL_URL="http://your-gitlab-domain.com" yum install -y gitlab-ee
    

    注意,将 http://your-gitlab-domain.com 替换为你实际的GitLab域名或IP地址。

  3. 配置并启动GitLab:

    安装完成后,运行以下命令配置并启动GitLab:

    sudo gitlab-ctl reconfigure
    

    这将配置GitLab并启动所有必需的服务。

  4. 设置管理员用户名和密码:

    前提条件:需要保证Gitlab、Redis同时处于启动状态。可以运行gitlab-ctl start或者gitlab-ctl restart命令进行启动或者重启。

    在终端中执行以下命令,设置GitLab管理员用户名和密码:

    gitlab-rails console -e production
    # 低版本可以尝试使用下面一句命令:
    gitlab-rails console production
    

    进入GitLab控制台后,执行以下命令来设置管理员用户名和密码:

    user = User.where(id: 1).first
    user.username = 'your_admin_username'
    user.password = 'your_admin_password'
    user.password_confirmation = 'your_admin_password'
    user.save!
    exit
    

    your_admin_usernameyour_admin_password 替换为你自己的管理员用户名和密码。

    注意:

    GitLab默认启用了密码策略检查,以提高账号的安全性。这种检查会阻止使用容易被猜测或常见的密码。你需要选择一个更强大且不易被破解的密码。

    以下是一些创建密码时的建议:

    1. 长度: 选择至少8个字符的密码。更长的密码更安全。
    2. 混合字符: 使用大小写字母、数字和特殊字符的组合。例如,使用大写字母、小写字母、数字和特殊字符(例如:@#$%^&*)。
    3. 避免常见词汇和短语: 避免使用容易被猜测的常见词汇、日期、个人信息和常见短语作为密码。
    4. 不要重复使用密码: 避免在多个平台和账号上使用相同的密码。使用密码管理器来生成和存储随机且独一无二的密码。
  5. 配置域名:

    /etc/gitlab/gitlab.rb 文件中配置你的域名:

    sudo nano /etc/gitlab/gitlab.rb
    

    在文件中添加以下内容,将 your-gitlab-domain.com 替换为你实际的GitLab域名或IP地址:

    external_url 'http://your-gitlab-domain.com'
    

    保存文件并退出。

  6. 重新配置并重启GitLab:

    运行以下命令重新配置并重启GitLab,使域名配置生效:

    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    

现在,你已经成功安装并配置了GitLab服务,管理员用户名、密码和域名也已经设置完成。你可以通过浏览器访问你的GitLab域名或IP地址,并使用管理员账号登录进行进一步的配置和管理。请记得根据实际情况修改相关配置,并遵循官方文档和最佳实践进行安装和配置。

4.Git操作 - Git 基础

Git是一个强大的版本控制系统,它可以帮助开发者跟踪和管理项目的代码变化。在本节中,我们将介绍Git的基本操作,包括初始化仓库、添加文件、提交更改和查看历史记录。

4.1. 初始化仓库

在开始使用Git之前,我们需要初始化一个新的本地Git仓库。在你的项目目录下打开终端,执行以下命令:

git init

这将在当前目录创建一个新的Git仓库,并在项目根目录下生成一个隐藏文件夹.git,用于存储Git的配置和版本历史信息。

4.2. 添加文件

我们可以是用

git status 

查看git目录下文件的提交和控制状态

在将文件纳入Git版本控制之前,我们需要将文件添加到暂存区(Staging Area)。执行以下命令来添加文件:

git add <filename>

或者,如果你希望一次性将所有修改过的文件都添加到暂存区,可以使用以下命令:

git add .

4.3. 提交更改

一旦文件添加到暂存区,我们可以将这些更改提交到本地仓库,生成本地版本。执行以下命令进行提交:

提交方法有三种:

第一种:手动添加记录

git commit

然后会打开vi工具,需要对提交内容进行一个说明,可以使用esc退出编辑,:wq保存编辑

image-20230719202154184

第二种:

git commit -m "Commit message"

Commit message 是本次提交的描述信息,可以简洁地说明这次提交的内容和目的。

注意:当修改或者添加文件或者删除文件后还是要执行git add 然后查看你的状态,再进行git commit操作

第三种:

可以将两步骤操作合成一步执行

git commit -am '备注'

注意次步骤只能add和提交已经被追踪的文件,可以理解为只能进行修改和删除操作的添加和提交

4.4. 查看历史记录

Git Log 是一个用于查看 Git 提交历史的命令。它可以显示项目中每个提交的详细信息,包括作者、日期、提交哈希和提交说明等。在本篇教学笔记中,我们将介绍七种常用的 Git Log 操作。

4.4.1. git log

git log 命令用于显示项目的提交历史。默认情况下,它会按照时间顺序列出所有的提交记录,最新的提交会显示在最上面。每个提交记录包括提交哈希、作者、提交日期和提交说明。

git log

4.4.2. git log -p -2

git log -p -2 命令会显示最近的两个提交记录,并显示每个提交的具体变动内容。这样可以查看每个提交引入了哪些修改。

git log -p -2

4.4.3. git log --author

git log --author 命令允许我们按照提交作者的名字筛选提交记录。这在多人协作的项目中非常有用,可以快速查找某个作者的提交历史。

git log --author="John Doe"

4.4.4. git log --oneline

git log --oneline 命令会以简洁的方式显示提交历史,每个提交只占一行,只显示提交哈希和提交说明。

git log --oneline

4.4.5. git log --graph

git log --graph 命令可以绘制 ASCII 图形展示分支合并历史,更直观地查看分支的合并情况。

git log --graph

4.4.6. git log --pretty=oneline

git log --pretty=oneline 命令将提交历史以自定义的格式显示,这里使用了 oneline 格式。

git log --pretty=oneline

4.4.7. git log --pretty=format

git log --pretty=format 命令允许我们以更灵活的方式自定义提交历史的输出格式。我们可以使用特定的占位符来展示提交信息。

git log --pretty=format:"%h - %an, %ar : %s"

上面的命令将以类似于 “提交哈希 - 作者名,相对时间 : 提交说明” 的格式显示提交历史。

4.5 追踪文件修改前和修改后的区别

在 Git 中,可以使用 git diff 命令来比较修改前后的区别。这个命令可以帮助我们查看工作目录和暂存区之间的差异,或者查看暂存区和最新提交之间的差异。下面介绍两种常用的 Git Diff 操作。

4.5.1. git diff

git diff 命令用于比较工作目录中的修改和暂存区之间的差异。它会显示出文件的具体修改内容,包括添加、删除和修改的行。

git diff

上述命令会显示出工作目录中未暂存的修改与当前的暂存区的差异。

4.5.2. git diff --staged或 git diff --cached

git diff --stagedgit diff --cached 命令用于比较暂存区和最新提交之间的差异。它会显示出已暂存的修改与最新提交的差异。

git diff --staged

上述命令会显示出已暂存的修改与最新提交之间的差异。

这两种 Git Diff 操作可以帮助我们了解修改前后的区别,帮助我们审查和理解所做的修改。注意,在使用 git diff 命令时,可以通过添加文件路径参数来限制对特定文件的差异比较。

请记住,Git Diff 只显示修改的内容,而不会更改任何文件或提交任何更改。它仅用于显示差异信息以帮助开发者进行代码审查和版本控制

4.6 Git 文件忽略

在 Git 中,我们可以通过 .gitignore 文件来指定要忽略的文件和目录,这些被忽略的文件将不会被加入到版本控制中。以下是几种常用的文件忽略方式:

4.6.1. .gitignore

.gitignore 文件是一个文本文件,用于列出要忽略的文件和目录。我们可以在该文件中添加模式来匹配要忽略的文件或目录。

示例 .gitignore 文件内容:

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

4.6.2. /node_modules

/node_modules 表示忽略项目根目录下的 node_modules 目录及其内容。通常,该目录包含大量的第三方依赖库,不应该被加入版本控制,因为它们可以通过 package.jsonpackage-lock.jsonyarn.lock 这样的文件来重建。

4.6.3. *.log

*.log 表示忽略所有以 .log 为后缀的文件。这在项目中通常用于忽略日志文件,因为日志文件通常会不断增长并占据空间,不适合加入版本控制。

4.6.4. *.zip

*.zip 表示忽略所有以 .zip 为后缀的文件。这在项目中通常用于忽略压缩文件,因为它们可能是生成的或者用于分发而不应该包含在版本控制中。

4.6.5. git rm -r --cached .

如果某些文件已经被错误地提交到版本控制中,并且希望将它们从版本控制中移除但保留在工作目录中,可以使用 git rm 命令的 --cached 选项。这将把指定文件从暂存区中删除,但会保留在本地工作目录中。

git rm -r --cached .

上述命令会将当前目录下所有文件从暂存区中删除,包括之前错误提交到版本控制的文件。

记住,在忽略文件之前,请确保它们未被提交到版本控制中。因为一旦文件被提交,.gitignore 对其将不再起作用,需要使用 git rm 命令将其从版本控制中移除。

4.7 Git 还原操作

在 Git 中,可以使用不同的命令和策略来还原文件或提交。下面是一组完整的 Git 还原操作内容,包括还原修改的文件、还原暂存的文件和还原提交历史。

4.7.1 还原修改的文件

如果你在工作目录中对文件做了修改,但尚未将其添加到暂存区,可以使用以下命令来还原该文件:

git checkout -- [filename]

这个命令会将 [filename] 文件还原到最近一次提交时的状态。注意,该操作将丢失工作目录中对文件的修改,请在执行前确认。

4.7.2 还原暂存的文件

如果你已经将某个文件添加到暂存区,但又希望将其还原到最近一次提交时的状态,可以使用以下命令:

git reset HEAD [filename]

该命令将会将 [filename] 文件从暂存区中移除,但保留其在工作目录中的修改。

然后,你可以使用以下命令来还原工作目录中的文件到最近一次提交的状态:

git checkout -- [filename]

这个命令会将 [filename] 文件还原到最近一次提交时的内容,丢弃工作目录中的修改。

还可以借助git checkout回复版本到之前的内容

git checkout [版本号] -- [fileName]

4.7.3 还原提交历史

如果你想还原到之前的某个提交状态,可以使用以下命令:

git log

这个命令会显示提交历史记录,并获取你想要还原的提交的哈希值。

然后,使用以下命令来还原到指定的提交状态:

git reset --hard [commit-hash]

这个命令会将当前分支指向指定的提交,丢弃之后的所有提交。请谨慎使用,因为这会删除之后的提交记录。

注意:还原提交历史的操作是不可逆的,请确保你理解这一点,并在执行前备份你的代码或联系项目的其他开发者。

这是一组完整的 Git 还原操作内容,包括还原修改的文件、还原暂存的文件和还原提交历史。根据你的具体需求,选择适当的还原策略来恢复文件或提交。记住,在执行任何 Git 还原操作之前,最好先确认你的操作,以免丢失重要的更改或提交。

4.7.3.1. git reset --hard HEAD^

使用 git reset --hard HEAD^ 命令可以将当前分支的 HEAD 指针和工作目录恢复到上一次的提交状态。这个命令将会丢弃最近一次的提交及其后的所有提交。

git reset --hard HEAD^

上述命令中的 HEAD^ 表示上一次的提交,通过执行该命令,你会回退到上一次的提交状态。

4.7.3.2. git reset --hard HEAD^^

类似地,使用 git reset --hard HEAD^^ 命令可以将当前分支的 HEAD 指针和工作目录恢复到倒数第二次的提交状态。这个命令会丢弃最近两次的提交及其后的所有提交。

git reset --hard HEAD^^

上述命令中的 HEAD^^ 表示倒数第二次的提交,通过执行该命令,你会回退到倒数第二次的提交状态。

4.7.3.3. git reset --hard HEAD [hashcode]

另一种方式是使用提交的哈希值来还原到特定的提交状态。你可以使用 git log 命令来获取需要还原的提交的哈希值。

git log

获取到需要还原的提交的哈希值后,可以使用以下命令进行还原:

git reset --hard [hashcode]

上述命令中的 [hashcode] 是你需要还原到的特定提交的哈希值。

请注意,在执行还原操作前,确保已备份重要的代码和提交。还原操作是不可逆的,并且会丢失未保存的修改和之后的提交记录

查看指针版本号:

git reflog

5.Git操作 - 分支管理

分支是Git中非常强大的功能之一,它允许你在项目上独立地开发某个功能或修复问题,而不影响主分支的稳定性。在本节中,我们将学习如何创建分支、切换分支、合并分支以及解决合并冲突。

在 Git 中,分支是非常有用的功能,可以让我们在项目开发中轻松管理不同的代码版本。下面是一组常用的 Git 分支操作命令,包括创建、切换和删除分支。

5.1. 创建分支

要创建一个新的分支,可以使用以下命令:

git branch [branch_name]

这将在当前提交所在的位置创建一个名为 [branch_name] 的新分支,但你仍然停留在当前分支中。

5.2. 切换分支

要切换到已经存在的分支,可以使用以下命令:

git checkout [branch_name]

这将使你切换到名为 [branch_name] 的已存在分支,并将你的工作目录切换到该分支上。

或者,如果你想一次性创建并切换到一个新的分支,可以使用以下命令:

git checkout -b [branch_name]

这将创建一个新分支 [branch_name] 并将你的工作目录切换到该分支上。

5.3. 删除分支

如果你想删除一个已经合并的分支,可以使用以下命令:

git branch -d [branch_name]

这将删除名为 [branch_name] 的已合并分支。如果分支未合并(尚未合并到主分支),使用 -d 选项将无法删除,这是为了防止意外删除未合并的更改。

如果你确定要删除未合并的分支,可以使用以下命令:

git branch -D [branch_name]

这将强制删除名为 [branch_name] 的未合并分支。请谨慎使用 -D 选项,因为它将不可逆转地删除分支。

但是其实在删除分支时,可以恢复分支,比如在删除分支时描述了hash值和分支名称

image-20230720021533974

我们可以新建分支进行恢复

git branch master 9cfb21e

只要分支的名称和hash值写的和删除的版本一致即可

5.4 查询分支

git branch

5.5 合并分支

在 Git 中,合并分支是将一个分支的更改合并到另一个分支的过程。这样可以将不同分支上的代码和修改合并为一个新的提交,从而将功能或修复应用到主分支或其他目标分支。下面是一般情况下合并分支的操作:

5.5.1. 切换到目标分支

首先,需要切换到你想要合并到的目标分支。例如,如果你想将 Feature 分支合并到主分支(通常是 mainmaster 分支),可以使用以下命令:

git checkout main

5.5.2. 合并分支

使用以下命令来合并源分支(例如 Feature 分支)到目标分支(主分支):

git merge feature

上述命令将把 Feature 分支上的更改合并到当前所在的主分支中。

5.5.3. 解决冲突(如果有)

解决 Git 合并分支时的冲突问题是开发中常见的任务。当两个分支同时修改了相同的文件的相同部分时,Git 无法自动确定应该保留哪个更改,从而产生冲突。以下是解决合并冲突的步骤:

5.5.3.1. 使用 git merge [branch_name] 进行合并

首先,使用 git merge [branch_name] 命令将目标分支和源分支进行合并。比如,要将 Feature 分支合并到主分支(通常是 mainmaster 分支),可以执行以下命令:

git checkout main  # 切换到主分支
git merge feature  # 合并 Feature 分支到主分支

5.5.3.2. 使用 git status 查看冲突原因

执行合并后,如果存在冲突,可以使用 git status 命令查看冲突的文件和原因:

git status

git status 将会显示冲突的文件列表,并告诉你需要解决冲突。

5.5.3.3. 使用 git merge --abort 放弃合并

如果在合并过程中遇到问题或想放弃合并,可以使用 git merge --abort 命令回到合并前的状态,忽略合并:

git merge --abort

5.5.3.4. 手动选择正确的内容

打开发生冲突的文件,Git 会用 <<<<<<<=======>>>>>>> 标记冲突的部分。你需要手动编辑文件,决定要保留哪些更改和如何解决冲突。修改完冲突后的文件后,保存文件。

5.5.3.5. 使用 git add 添加解决冲突后的文件

完成冲突的解决后,使用 git add 命令将解决冲突后的文件标记为已解决:

git add [resolved_file1] [resolved_file2]  # 添加解决冲突后的文件

5.5.3.6. 使用 git commit 提交解决冲突的更改

最后,使用 git commit 命令提交解决冲突后的更改:

git commit -m "Resolve merge conflicts"  # 提交解决冲突后的更改

现在,冲突已经解决,合并成功完成。

5.6 查看版本线图

在 Git 中,可以使用不同的选项来查看版本历史的线图,展示提交之间的关系和分支结构。下面是几个常用的命令来查看版本线图:

5.6.1. git log

使用 git log 命令可以显示完整的提交历史,包括每个提交的详细信息,但不会以图形化的方式展示版本线图。

git log

5.6.2. git log --oneline

使用 git log --oneline 命令可以以简洁的方式显示提交历史,每个提交只显示一行,包括提交哈希和提交说明。

git log --oneline

5.6.3. git log --oneline --graph

使用 git log --oneline --graph 命令可以显示提交历史的线图,以图形化方式展示分支结构。

git log --oneline --graph

5.6.4. git log --oneline --graph --all

使用 git log --oneline --graph --all 命令可以显示包括所有分支在内的提交历史的线图。

git log --oneline --graph --all

5.6.5. git log --oneline --graph -[number]

使用 git log --oneline --graph -[number] 命令可以限制显示的提交数量。替换 [number] 为你想要显示的提交数量,例如,要显示最近的5个提交,可以使用:

git log --oneline --graph -5

这将显示最近的5个提交的线图。

以上命令中的 --oneline 选项将简化输出,使得线图更加紧凑易读。而 --graph 选项将显示提交历史的线图,帮助你更好地理解项目的版本结构。

6.Git操作 - 远程仓库

远程仓库是存储在网络或服务器上的Git仓库,它允许团队成员共享代码、协作开发,并保留代码的备份。在本节中,我们将学习如何关联远程仓库、推送更改、拉取更改以及解决合并冲突。

6.1. 关联远程仓库

在将本地仓库与远程GitLab仓库关联之前,你需要在GitLab上创建一个空白仓库。然后,在本地仓库目录中执行以下命令:

git remote add origin <remote-repository-url>

<remote-repository-url> 替换为你的远程GitLab仓库的URL。这个命令将在本地仓库中添加一个名为 origin 的远程仓库别名。

6.2. 推送更改

当你在本地仓库做了一些更改,并希望将这些更改推送到远程仓库时,执行以下命令:

git push origin <branch-name>

这将把 <branch-name> 分支的更改推送到远程仓库中。如果你想将所有本地分支的更改都推送到远程仓库,可以使用 --all 参数:

git push --all origin

6.3. 拉取更改

当你的团队成员在远程仓库中做了一些更改,并且你希望获取这些最新更改时,执行以下命令:

git pull origin <branch-name>

这将从远程仓库的 <branch-name> 分支获取最新更改,并将它们合并到你当前所在的本地分支。

6.4. 解决冲突

在拉取远程仓库更改时,有时会发生冲突。这通常是因为你的本地更改与远程仓库的更改在相同的位置产生了冲突。解决冲突的步骤与之前在分支合并时解决冲突的步骤类似。

首先,Git会在冲突文件中标记出冲突的地方。你需要编辑这些文件,解决冲突并保存更改。然后,执行以下命令来完成合并:

git commit -m "Merge remote-tracking branch 'origin/branch-name'"

以上命令将合并完成的更改提交到本地分支。

注意: 当解决冲突时,要仔细检查代码确保没有错误,确保最终提交的代码是正确的。

通过上述远程仓库的操作,你可以与团队成员协作开发,并及时获取最新的代码更改。远程仓库使得多人协作开发变得更加容易和高效,同时保证代码的一致性和安全性。记得在推送和拉取代码前,先进行提交,确保工作区是干净的,这样可以避免冲突和意外的代码更改。

7.GitLab操作

GitLab是一个功能强大的代码托管平台,它提供了丰富的功能来支持团队协作和持续集成/持续交付。在本节中,我们将学习如何搭建本地GitLab服务器、创建项目、添加成员、使用Issue跟踪问题和任务、处理合并请求以及简介持续集成和持续交付的概念。

7.1. 搭建本地GitLab

要在本地搭建GitLab服务器,你可以使用Omnibus安装包或者源代码进行安装。这里我们以Omnibus安装包为例,简要介绍搭建步骤:

  • 下载Omnibus安装包
  • 执行安装脚本并配置GitLab
  • 启动GitLab服务

请注意,详细的搭建步骤可以参考GitLab官方文档或其他教程。

7.2. 创建项目

在成功搭建本地GitLab服务器后,你可以在GitLab上创建新的项目。登录到GitLab,并按照以下步骤创建项目:

  • 点击顶部导航栏中的"New Project"按钮
  • 输入项目名称、描述等信息
  • 选择可见性和访问权限
  • 点击"Create Project"按钮,完成项目的创建

7.3. 添加成员

在项目创建完成后,你可以邀请其他人加入项目并进行协作开发。按照以下步骤添加成员:

  • 进入项目页面,点击"Settings"选项卡
  • 选择"Members"子选项卡
  • 输入成员的GitLab用户名或邮箱地址
  • 设置成员的权限级别(如Developer、Maintainer等)
  • 点击"Add to project"按钮,邀请成员加入项目

7.4. Issue跟踪

GitLab提供了强大的Issue跟踪功能,用于记录和管理项目中的问题和任务。在项目页面的"Issues"选项卡中,你可以创建新的Issue、分配责任人、设置优先级、标签等。

7.5. Merge Requests

Merge Requests是GitLab中用于提交和处理代码合并的功能。开发者可以通过创建Merge Requests将自己的代码提交到主分支,并经过其他成员的审查和讨论后,最终合并到主分支中。

7.6. CI/CD

持续集成(CI)和持续交付(CD)是现代软件开发中重要的流程。GitLab提供了内置的CI/CD工具,帮助你在代码提交时自动构建、测试和部署项目。通过配置.gitlab-ci.yml文件,你可以定义CI/CD流程并实现自动化的构建和部署。

以上就是GitLab操作的一些关键步骤。通过搭建本地GitLab服务器,创建项目并邀请成员,你可以实现团队的协作开发。使用Issue跟踪问题和Merge Requests处理代码合并,使开发过程更加有序和高效。并且,通过配置CI/CD流程,你可以实现持续集成和持续交付,提高软件交付的速度和质量。记得根据实际需求和项目规模,灵活使用GitLab的功能来支持你的开发流程。

image-20230720184216181

image-20230720184301827

7.7 创建秘钥

ssh-keygen

(2)

然后出现【Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Lenovo/.ssh/id_rsa):】,按【回车】,

(3)

会出现【Created directory ‘/c/Users/Lenovo/.ssh’.
Enter passphrase (empty for no passphrase):】提示输入密码(此时密码是不可见状态),

(4)

【Enter same passphrase again:】,重复输入密码,按回车,

image-20230720142929400

.ssh中有一个文件【id_rsa.pub】,创建的密钥就储存在这里,但是不能双击打开,

image-20230720142946458

用windows的命令行,进入.ssh 中的

image-20230720143006885

用命令【more id_rsa.pub】获取内容,下面这串就是你的密钥(可以复制下来)。

image-20230720143020001

Git中添加密钥

1)刚才复制下来的密钥粘贴到【公钥】框内,标题可以自己起,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/777664.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全 Day17-计算机网络知识02

计算机网络知识02 1. 交换机2. 网络知识名词3. ARP3.1 ARP通讯原理3.2 arp欺骗3.3 ARP欺骗与预防3.4 排查ARP病毒 4. 路由器 1. 交换机 什么是交换机 实现一个网络内多台主机之间通讯的设备用于电信号转发和放大的网络设备 常见的交换机&#xff1a;以太网交换机&#xff0c;电…

【Java】SpringBoot下写一个全局捕获异常的怎么实现?

文章目录 前言一、全局异常处理方式一1.1 自定义全局异常类1.2 手动抛出异常1.3 测试打印 二、全局异常处理方式二2.1 定义基础接口类2.2 定义枚举类2.3 自定义异常类2.4 自定义数据传输2.5 自定义全局异常处理2.6 测试代码 总结 前言 在日常项目开发中&#xff0c;异常是常见…

Nginx 用户指南:安装、配置和基本使用

前言 本用户指南将帮助您了解如何安装、配置和基本使用 Nginx。Nginx 是一款高性能的开源 Web 服务器和反向代理服务器&#xff0c;具有强大的性能和灵活性&#xff0c;可以满足各种 Web 服务器需求。 安装 Nginx a. 在 Ubuntu 上安装&#xff1a; $ sudo apt update $ sud…

(转载)神经网络遗传算法函数极值寻优(matlab实现)

本博客的完整代码获取&#xff1a; https://www.mathworks.com/academia/books/book106283.html 1案例背景 对于未知的非线性函数,仅通过函数的输入输出数据难以准确寻找函数极值。这类问题可以通过神经网络结合遗传算法求解,利用神经网络的非线性拟合能力和遗传算法的非线性…

【前端动画】科技感扫描效果 css动画animation

扫描出现动画 参考了网友写的二维码扫描 <template><div><div class"scan-content"><img style"width: 2rem;height: 2rem;" src"../../assets/images/eye.png" alt"" /><div class"line">…

四个现实中的商品样例,帮助你理解如何使用css【前端CSS入门样例】

实现商品列表 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>商品列表图片</title><style>.row > img {width: 15%;}</style></head><body><div class"row"><img sr…

【NOSQL】MongoDB

MongoDB MongoDB简介体系结构Linux系统中的安装启动和连接&#xff08;1&#xff09;先到官网下载压缩包——>解压——>重命名新建几个目录&#xff0c;分别用来存储数据和日志&#xff1a;新建并修改配置文件官网下载MongoDB Compass MongoDB简介 MongoDB是一个开源、高…

从零开始学习 Java:简单易懂的入门指南(二)

Java基础语法 1. 注释1.1使用的技巧1.2注意点 2. 关键字2.1 概念2.2 第一个关键字class 3. 字面量3.1区分技巧 4. 变量4.1 什么是变量&#xff1f;4.2 变量的定义格式4.2.1 格式详解4.2.2 常用的数据类型4.2.3 变量的注意事项 4.3 变量的练习 5. 数据类型5.1 Java语言数据类型的…

CentOS7系统MBR、GRUB2、内核启动流程报错问题

目录 &#x1f969;Linux启动流程 &#x1f969;MBR修复 &#x1f36d;1、模拟损坏 &#x1f36d;2、重启测试 &#x1f36d;3、修复MBR &#x1f36d;4、测试系统 &#x1f969;GRUB2修复 &#x1f36d;1、模拟损坏 &#x1f36d;2、修复GRUB2 &#x1f36d;3、测试系统 &…

【C++】string类模拟实现

&#x1f680; 作者简介&#xff1a;一名在后端领域学习&#xff0c;并渴望能够学有所成的追梦人。 &#x1f681; 个人主页&#xff1a;不 良 &#x1f525; 系列专栏&#xff1a;&#x1f6f8;C &#x1f6f9;Linux &#x1f4d5; 学习格言&#xff1a;博观而约取&#xff0…

基于 Docker + Nginx + Gitlab-runner 实现前端自动化部署流程

本篇会用到Docker&#xff0c;Gitlab-runner等相关工具&#xff0c;如果对其不是特别了解&#xff0c;可以参考下相关文档&#xff1a; GitLab RunnerDocker 快速入门CI/CD&#xff1a;持续集成/持续部署 在早期部署前端项目时&#xff0c;我们通常会通过ftp把前端代码直接传…

AcWing 239. 奇偶游戏—带边权并查集、带扩展域并查集解法

AcWing 239. 奇偶游戏—带边权并查集、扩展域 问题带边权并查集解法扩展域解法并查集所要掌握的知识技能如下图所示 问题 题目链接: AcWing 239. 奇偶游戏 问题描述 分析 这道题比较有意思&#xff0c;可以由前缀和的思想来解决&#xff0c;[l,r]为偶数&#xff0c;说明[0,l…

CentOS8.5 安装时配置镜像源

CentOS8.5 安装时配置镜像源 阿里云镜像地址 http://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/ 安装时录入镜像源 点击Done等待… 搞定

day30-Auto Text Effect(自动文本吐字效果)

50 天学习 50 个项目 - HTMLCSS and JavaScript day30-Auto Text Effect&#xff08;自动文本吐字效果&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewpo…

玩转 PI 系列-如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?

概述 618 买了几个便宜的 Purple PI OH 开发板 (500 块多一点买了 3 个&#x1f911;), 这个开发板类似树莓派&#xff0c;是基于 Rockchip&#xff08;瑞芯微&#xff09; 的 rx3566 arm64 芯片。如下&#xff1a; 买来是用作家庭服务器或家庭实验室的。主要考虑就是&#xf…

CTFHub | 过滤目录分隔符

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习&#xff0c;实训平台。提供优质的赛事及学习服务&#xff0c;拥有完善的题目环境及配套 writeup &#xff0c;降低 CTF 学习入门门槛&#xff0c;快速帮助选手成长&#xff0c;跟随主流比赛潮流。 0x01 题目描述…

订单逆向履约系统的建模与PaaS化落地实践 | 京东云技术团队

导读 本文重点介绍了京东零售电商业务在订单逆向履约上面的最佳技术实践&#xff0c;京东零售快退平台承接了零售几乎所有售前逆向拦截和退款业务&#xff0c;并在长期的业务和技术探索中沉淀了丰富的业务场景设计方案、架构设计经验&#xff0c;既能承接面向消费者C端用户的高…

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 17 日论文合集)

文章目录 一、检测相关(5篇)1.1 TALL: Thumbnail Layout for Deepfake Video Detection1.2 Cloud Detection in Multispectral Satellite Images Using Support Vector Machines With Quantum Kernels1.3 Multimodal Motion Conditioned Diffusion Model for Skeleton-based Vi…

记录--卸下if-else 侠的皮衣!- 策略模式

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 &#x1f92d;当我是if-else侠的时候 &#x1f636;怕出错 给我一个功能&#xff0c;我总是要写很多if-else,虽然能跑&#xff0c;但是维护起来确实很难受&#xff0c;每次都要在一个方法里面增加逻辑…

索引使用——单列索引、联合索引、索引设计原则

1.单例索引和联合索引 尽量使用联合索引&#xff0c;避免使用单列索引&#xff0c;因为使用联合索引性能相对而言会比较高&#xff0c;如果联合索引使用得当&#xff0c;可以避免回表查询&#xff0c;使用单列索引很容易造成回表查询的情况&#xff0c;造成性能降低。 create…