欢迎光临
我们一直在努力

Git远程仓库管理(希望你有所收获!!!)

目录

1 创建远程仓库

1.1 具体流程

1.2 Issue 设置

1.3 Pull Requests 设置

1.3.1 Pull Requests 的作用

1.3.2 Pull Requests 的主要功能

2 克隆远程仓库

2.1 git clone

2.2 常用用法

2.3 HTTPS 方式

2.4 SHH 方式

2.4.1 创建SSH Key

2.4.2 添加公钥

3 向远程仓库进行推送

3.1 git push

3.2 常用用法

3.3 HTTPS 推送

3.4 SSH 推送

4 向远程仓库进行拉取

4.1 git pull

4.2 常用用法

5 .gitignore

5.1 基本语法规则

5.2 常见忽略模式


本篇采用的远程仓库为Gitee,系统主要以Linux为主,但是整体操作的本质各个远程仓库和系统是一样

1 创建远程仓库


1.1 具体流程

1.新建远程项目仓库                                                                                                           

2.填写基本信息

3.创建成功

4.设置仓库 开源 or 私有

1.2 Issue 设置

Issue的主要功能:

  • 提交问题:用户可以创建新的Issue,描述Bug、需求或建议。
  • 分类标签:通过标签(Labels)对Issue分类(如bugenhancementquestion)。
  • 指派负责人:将Issue分配给特定成员处理。
  • 里程碑:关联里程碑(Milestone)以跟踪项目进度。
  • 评论讨论:在Issue下通过评论协作交流。
  • 关联代码:可关联提交(Commit)或Pull Request。

(1)创建Issue

(2)填写Issue提问具体信息

(3)处理Issue提问

1.3 Pull Requests 设置

在 Gitee(码云)仓库中,Pull Requests(PR,合并请求) 是用于将代码更改从一个分支(或 Fork 的仓库)合并到目标分支的功能模块

1.3.1 Pull Requests 的作用

  • 代码合并:将一个分支的修改请求合并到另一个分支(如 feature → main)。
  • 代码审查:团队成员可对提交的代码进行评审(Review)、讨论或提出修改建议。
  • 协作开发:常用于开源项目,允许贡献者从 Fork 的仓库提交代码到主仓库。
  • 自动化检查:支持通过 CI/CD 工具(如 Gitee Go)自动运行测试或构建。

1.3.2 Pull Requests 的主要功能

(1)创建 Pull Request

  • 从分支创建:
  • 确保你的修改已提交并推送到仓库的某个分支(如 feature-bugfix)。
  • 点击 “Pull Requests” → “新建 Pull Request”。
  • 选择 源分支(你的修改分支)和 目标分支(要合并到的分支,如 main)。
  • 填写标题和详细描述(建议说明修改目的、关联的 Issue 等)。
  • 可关联标签、里程碑或指定审查人。
    • 从 Fork 的仓库创建(开源协作):
  • 先 Fork 目标仓库到自己的账号下。
  • 本地修改后,推送到自己 Fork 的仓库分支。
  • 在原始仓库的 Pull Requests 页面点击 “新建 Pull Request”,选择你的 Fork 作为源仓库。
  • (2)审查与讨论

    • 代码评论:评审人可在 PR 的“文件更改”页面对具体代码行发表意见。
    • 状态标记:
    • Approved(通过审查) | Request Changes(需修改) | Comment(仅评论)。
    • 持续集成(CI):如果配置了 CI(如 Gitee Go),会自动检查构建状态。

    (3)合并 Pull Request

    • 合并选项:
    • Merge(普通合并,保留提交历史)。
    • Squash and Merge(压缩为一个提交,适合多个小提交)。
    • Rebase and Merge(变基合并,保持线性历史)。
    • 删除源分支:合并后可选自动删除源分支(避免冗余分支)。

    (4)创建 Pull Requests 合并请求

    2 克隆远程仓库


    SSH 协议和 HTTPS 协议是 Git 最常使⽤的两种数据传输协议:

    • SSH 协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由 Git 服务器进⾏管理。
    • 使⽤ HTTPS ⽅式时,没有要求,可以直接克隆下来。

    2.1 git clone

    (1)基本语法

    // git clone 是 Git 中最基础的命令之一,用于将远程仓库完整地复制到本地。
    git clone [选项] <仓库URL> [本地目录名]

    (2)核心功能

  • 复制远程仓库到本地
  • 自动创建远程跟踪分支(origin/master等)
  • 自动设置默认检出分支(通常是master/main)
  • 自动配置远程仓库别名为origin
  • (3)常用选项

    选项

    说明

    –depth

    创建浅克隆,只获取最近n次提交

    –branch

    克隆指定分支而非默认分支

    –single-branch

    只克隆指定分支的历史

    –no-tags

    不克隆任何标签

    –recurse-submodules

    递归克隆所有子模块

    –mirror

    创建镜像克隆(包含所有引用)

    –bare

    创建裸仓库(没有工作目录)

    -j

    并行克隆的线程数

    -c

    克隆后设置配置项

    2.2 常用用法

    (1)基本克隆

    git clone https://github.com/user/repo.git

    (2)克隆到指定目录

    git clone https://github.com/user/repo.git myproject

    (3)克隆特定分支

    git clone –branch develop https://github.com/user/repo.git

    (4)浅克隆(节省时间/空间)

    git clone –depth 1 https://github.com/user/repo.git

    (5)克隆并初始化子模块

    git clone –recurse-submodules https://github.com/user/repo.git

    (6)仅克隆最新代码(无历史)

    git clone –depth 1 –single-branch https://github.com/user/repo.git

    2.3 HTTPS 方式

    lz@VM-8-15-ubuntu:~/warehouse$ git clone https://gitee.com/lv-zhuo-si/qt-music-player.git
    Cloning into 'qt-music-player'…
    remote: Enumerating objects: 4, done.
    remote: Counting objects: 100% (4/4), done.
    remote: Compressing objects: 100% (4/4), done.
    remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
    Receiving objects: 100% (4/4), done.

    lz@VM-8-15-ubuntu:~/warehouse$ ls
    qt-music-player

    2.4 SHH 方式

    lz@VM-8-15-ubuntu:~/warehouse$ git clone git@gitee.com:lv-zhuo-si/qt-music-player.git
    Cloning into 'qt-music-player'…
    The authenticity of host 'gitee.com (180.76.198.225)' can't be established.
    ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
    This key is not known by any other names.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added 'gitee.com' (ED25519) to the list of known hosts.
    remote: Enumerating objects: 4, done.
    remote: Counting objects: 100% (4/4), done.
    remote: Compressing objects: 100% (4/4), done.
    remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
    Receiving objects: 100% (4/4), done.

    lz@VM-8-15-ubuntu:~/warehouse$ ls
    qt-music-player

    使⽤ SSH ⽅式克隆仓库,由于我们没有添加公钥到远端库中,服务器拒绝了我们的 clone 链接。需要我们设置⼀下

    2.4.1 创建SSH Key

    在用户主目录下(家目录,如:root/),看看有没有.ssh⽬录,如果有,再看看这个⽬录下有没有id_rsa 和 id_rsa.pub 这两个⽂件,如果已经有了,可直接跳到下⼀步

    如果没有,需要创建SSH Key:

    # 注意要输⼊⾃⼰的邮箱,然后⼀路回⻋,使⽤默认值即可
    hyb@139-159-150-152:~$ ssh-keygen -t rsa -C "123456789@qq.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/hyb/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/hyb/.ssh/id_rsa
    Your public key has been saved in /home/hyb/.ssh/id_rsa.pub
    The key fingerprint is:
    SHA256:sepKZUwKIXjJxYcot49tvOW+Aa+pEhdsRqVDFSmgQZo 123456789@qq.com
    The key's randomart image is:
    +—[RSA 3072]—-+
    |*+oB=+ |
    |==Oo+ . |
    |E*+o .. . |
    | *o + o |
    | o *o + S |
    |. o ==.. |
    | o ..++ |
    |. ..+.. |
    | …+o+. |
    +—-[SHA256]—–+

    顺利的话,可以在⽤⼾主⽬录⾥找到 .ssh ⽬录,⾥⾯有 id_rsa 和 id_rsa.pub 两个⽂件,这两个就是SSH Key的秘钥对, id_rsa 是私钥,不能泄露出去, id_rsa.pub 是公钥,可以放⼼地告诉任何⼈。

    lz@VM-8-15-ubuntu:~/.ssh$ ll
    -rw——- 1 lz lz 2602 Jul 9 16:23 id_rsa
    -rw-r–r– 1 lz lz 571 Jul 9 16:23 id_rsa.pub
    -rw-r–r– 1 lz lz 142 Jun 5 10:34 known_hosts

    2.4.2 添加公钥

    (1)查看自己的公钥

    lz@VM-8-15-ubuntu:~/.ssh$ cat id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQChaJTTo0+c1x2Bblr1ckpTk/CMNWo3MxrjZhTEzcEu1SFOX+aJNRdq5f/6JWeDaQRSYeniHlja//gIbv8O+nkMur85WKumJ7dsMcSiqwlwtOXCKNlZ49joxEvmLIIk9ND0TecOTzVwpTKj7xkTKX83tuGm05vAJe7AW+P5FHew+o/8wX/4jU82gum3vgvhNAvblTP6Id2pg5HeStidAp0+MWSGgAipR7XQUxqHci/rRcwXu73TR82xvpGyRzedlfomDpeJPO5dZa1gFlJgPjEoDG+e2LGNjEtRzhmb1+nQkDuMRice+6Zebmnyvtm/sIfqknzuJJTGSvZ91gS9xATsXmGd2bPyGJFr6FxXIZoW6jno7j+Pvg85WkBVaJ4cIl+QAOr+XkY6JL7dtgsWtbs6f1mq8aogIuE/cQIkA0DrjnVzJmHQSS6Dx1oTNz4+xy7dtG8jFS+oY8Z+5gujrjAtyMlSyGZpI85MwddujSIvo3pkoA1fpHrdw7zw5DFbTl0= lz@VM-8-15-ubuntu

    (2)添加自己的公钥到远程仓库

    当我们从远程仓库克隆后,实际上 Git 会⾃动把本地的 master 分⽀和远程的 master 分⽀对应起来,并且,远程仓库的默认名称是 origin 。在本地我们可以使⽤ git remote 命令,来查看远程库的信息

    lz@VM-8-15-ubuntu:~/warehouse/qt-music-player$ git remote
    origin

    ⽤ git remote -v 显⽰更详细的信息

    lz@VM-8-15-ubuntu:~/warehouse/qt-music-player$ git remote -v
    origingit@gitee.com:lv-zhuo-si/qt-music-player.git (fetch)
    origingit@gitee.com:lv-zhuo-si/qt-music-player.git (push

    • fetch:表示当前拥有向远程仓库进行拉取的权限
    • push:表示当前拥有向远程仓库进行推送的权限

    3 向远程仓库进行推送


    3.1 git push

    git push 是 Git 中用于将本地分支的提交推送到远程仓库的关键命令

    注意事项:

    提交时要注意,如果我们之前设置过全局的 name 和 e-mail,这两项配置需要和 gitee 上配置的用户名和邮箱⼀致,否则会出错。或者从来没有设置过全局的 name 和 e-mail,那么我们第⼀次提交时也会报错。这就需要我们重新配置下了,同样要注意需要和 gitee 上配置的用户名和邮箱⼀致。

    (1)基本语法

    git push [选项] [远程名称] [本地分支名]:[远程分支名]

    (2)常用选项

    选项

    说明

    -u,–set-upstream

    设置上游分支,后续可直接使用git push

    -f,–force

    强制推送(覆盖远程分支)

    –force-with-lease

    更安全的强制推送,只在远程没有新提交时覆盖

    –all

    推送所有分支

    –tags

    推送所有标签

    –dry-run

    模拟推送,显示将要执行的操作但不实际推送

    -v,–verbose

    显示详细输出

    3.2 常用用法

    (1)推送当前分支到远程同名分支

    git push origin HEAD
    #或简写
    git push

    (2)推送特定分支

    git push origin 本地分支名:远程分支名

    (3)设置上游分支并推送(首次推送推荐)

    git push -u origin 分支名
    # 之后可以简写为
    git push

    (4)删除远程分支

    git push origin –delete 分支名
    # 或
    git push origin :分支名

    (5)强制推送(谨慎使用)

    git push –force origin 分支名
    # 更安全的替代方案
    git push –force-with-lease origin 分支名

    (6)推送标签

    git push origin 标签名 # 推送单个标签
    git push origin –tags # 推送所有标签

    3.3 HTTPS 推送

    (1)设置身份信息

    git config –global user.name 'lv-zhuo'
    git config –global user.email '1392502082@qq.com'

    (2)推送

    在使用 git push 推送到远程仓库时,需要我们输入在 gitee 的 邮箱和密码 确认身份(一定要是克隆仓库所属下的账号和密码)

    lz@VM-8-15-ubuntu:~/as-cnet/Git Note$ git push origin master
    Username for 'https://gitee.com': 1392502082@qq.com
    Password for 'https://1392502082@qq.com@gitee.com':

    3.4 SSH 推送

    SSH方式 推送的主要问题在于需要正确的配置SSH密钥

    (1)设置身份信息

    git config –global user.name 'lv-zhuo'
    git config –global user.email '1392502082@qq.com'

    (2)生成密钥

    根据提示信息输入内容,密码不需要设置

    lz@VM-8-15-ubuntu:~/warehouse$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/lz/.ssh/id_rsa):
    /home/lz/.ssh/id_rsa already exists.
    Overwrite (y/n)? y
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/lz/.ssh/id_rsa
    Your public key has been saved in /home/lz/.ssh/id_rsa.pub
    The key fingerprint is:
    SHA256:umGEFdHZF+/63LHSkHvxHqO7Ay1RFEBrq0tNBvUyPzM lz@VM-8-15-ubuntu
    The key's randomart image is:
    +—[RSA 3072]—-+
    | oo o.+++. |
    | .o o +o |
    | . . *… |
    | o o.=. |
    | . . S +oEo |
    | . . =o =+. |
    | + o .+ ++o|
    | . o. . *.+*|
    | . . +Ooo|
    +—-[SHA256]—–+

    (3)查看密钥

    lz@VM-8-15-ubuntu:~/warehouse$ cat ~/.ssh/id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDn4vIafFE+O2vqw6WxuRh+dMNWBiMGtIs4A/WN0Ujdr+neRnxUU6+jXI43yNS3xx0C4V/Tfk7rlvd9ttYe6IsxqcAV6mLijknmMMcXo3CM3uARi+e+CCZv3a8h5qFbz2JmYWHof2oGflIdkSTEcY3zQHaWN4hK4z8Tyto6LZaaTAYiaaLL7UPoWt++FcbXIHkdQs/TeDQuX0uHSPKehv+lrqgERM3DWSc/YhFatwwbBWAQejGTCjl8KacBuP4zrBKQsgdnwgPYnMj61nCAoDA7lPC8UOPO8xiSnmcRcGwwf/0skxc+4sAEODW0vbXILsLejjhK+CgMs7r89LnPOWDD+EDS7pz6s9TQAZ+Qyk46SZBcj94jziWqTyKRfOoZNEmAj+S5j8WS/FkvZR+ksk4BPyZ3gdwOXgUnrdI+QoyTaQs64pGL1yQV5U3JRWknfCsNQF6k4Q8aipAvgyxZBSv4RVz98rJDgYERMy59giH5gZb2/zq+LSXmJVN2JT2+Wyc= lz@VM-8-15-ubuntu

    4 向远程仓库进行拉取


    4.1 git pull

    git pull 是 Git 中用于从远程仓库获取更新并合并到本地分支的重要命令,它实际上是 git fetch 和 git merge 两个命令的组合。

    (1)基本语法

    git pull [选项] [远程名称] [远程分支名]:[本地分支名]

    (2)常用选项

    选项

    说明

    –rebase

    使用变基(rebase)代替合并(merge)

    –no-rebase

    显式禁用变基(默认行为是merge)

    –ff-only

    只允许快进合并(如果不能快进则失败)

    –no-ff

    即使可以快进也创建合并提交

    –no-commit

    执行合并但不自动提交

    –autostash

    自动存储(stash)本地修改并在拉取后恢复

    –verbose

    显示详细输出

    –quiet

    静默模式,减少输出

    4.2 常用用法

    (1)从默认远程仓库拉取当前分支的更新

    git pull

    (2)从特定远程仓库拉取特定分支

    git pull origin 远程分支名

    (3)使用变基(rebase)方式拉取

    git pull –rebase

    (4)拉取并自动处理本地未提交的修改

    git pull –autostash

    (5)拉取特定远程分支到特定本地分支

    git pull origin 远程分支名:本地分支名

    5 .gitignore


    .gitignore 是 Git 版本控制系统中一个特殊的配置文件,用于指定哪些文件或目录应该被 Git 忽略,不纳入版本控制。

    5.1 基本语法规则

    • 空行:被忽略,可用于分隔
    • # 开头:注释
    • 标准 glob 模式:

            1. * 匹配任意字符(除了路径分隔符 /

            2. ? 匹配单个字符

            3. [abc] 匹配括号内的任意一个字符

            4. [0-9] 匹配范围内的字符

    • / 开头:防止递归(只忽略当前目录下的文件)
    • / 结尾:指定目录
    • ! 开头:取反(不忽略)

    5.2 常见忽略模式

    (1)操作系统生成文件

    # macOS
    .DS_Store
    ._*

    # Windows
    Thumbs.db
    Desktop.ini

    (2)开发环境文件

    # IDE
    .idea/
    .vscode/
    *.suo
    *.ntvs*
    *.njsproj
    *.sln
    *.sw?

    # 编辑器
    *.swp
    *.swo
    *~

    (3)语言相关

    # Node.js
    node_modules/
    npm-debug.log*
    yarn-debug.log*
    yarn-error.log*
    .pnpm-store/

    # Python
    __pycache__/
    *.py[cod]
    *.so
    .Python
    env/
    venv/

    # Java
    *.class
    *.jar
    *.war
    *.ear

    (4)构建输出

    # 通用
    dist/
    build/
    out/
    *.exe
    *.dll
    *.lib

    # Web
    *.min.js
    *.min.css

    (5)日志文件

    *.log
    logs/

    赞(0)
    未经允许不得转载:171主机测评 » Git远程仓库管理(希望你有所收获!!!)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址