版本控制工具精选:新手必备5大核心技能
第五章 远程仓库 —— 多人协作的桥梁
远程仓库本质上是托管在公网或内网上的项目镜像。你大概率用过 GitHub、GitLab、Bitbucket 或 Gitee 这些平台——它们是团队协作的核心节点。
5.2 管理远程仓库
先掌握远程仓库的管理方式。日常操作中,最频繁的就是查看、添加、删除和修改远程仓库地址。
# 列出当前已配置的远程仓库
git remote -v
# 添加远程仓库(origin 为默认别名)
git remote add origin https://github.com/user/repo.git
# 移除远程仓库
git remote remove origin
# 更新远程仓库的 URL
git remote set-url origin https://newurl.git
# 查看远程仓库的详细信息
git remote show origin
# 重命名远程仓库
git remote rename origin upstream
5.3 克隆远程仓库
克隆操作同样高频。支持 HTTPS 和 SSH 两种协议。HTTPS 每次需提供用户名密码或 token,而 SSH 需事先配置密钥——配置完成后即可免密操作,体验更流畅。
# HTTPS 方式(需要用户名密码或 token)
git clone https://github.com/username/repo.git
# SSH 方式(需提前配置 SSH 密钥)
git clone git@github.com:username/repo.git
# 克隆到指定本地目录
git clone my-folder
# 克隆指定分支
git clone -b develop
# 浅克隆(只拉取最近历史,节省时间与带宽)
git clone --depth 1
5.4 推送(Push)与拉取(Pull)
推送与拉取是每日操作的核心。先看推送命令:
# 将本地当前分支推送到远程同名分支
git push origin master
# 完整语法格式
git push :
# 示例:将本地 feature 推送到远程 feature-login
git push origin feature:feature-login
# 首次推送时设置上游分支(建立跟踪关系)
git push -u origin master # -u 是 --set-upstream 的简写,之后只需 git push 即可
# 删除远程分支
git push origin --delete feature
# 或
git push origin :feature
# 推送所有分支
git push --all origin
# 推送所有标签
git push origin --tags
拉取的本质是 git fetch + git merge:
# 拉取远程更新并合并到当前分支
git pull origin master
# 等价于下面两步
git fetch origin
git merge origin/master
# 使用变基方式拉取(保持线性历史)
git pull --rebase
# 全局默认启用变基拉取
git config --global pull.rebase true
5.5 获取远程更新但不合并(Fetch)
若只想查看远程变动而不自动合并,使用 git fetch:
# 获取远程所有分支更新,但不合并到本地
git fetch origin
# 获取后,对比本地与远程差异
git diff master origin/master
# 手动将远程分支合并到本地
git merge origin/master
# 或基于远程分支创建本地新分支
git checkout -b local-branch origin/remote-branch
5.6 远程分支的跟踪
本地分支与远程分支建立跟踪关系后,git pull 和 git push 可省略参数,大幅简化操作。
# 查看所有跟踪分支及其对应关系
git branch -vv
# 手动建立跟踪
git branch -u origin/master master
# 或
git branch --set-upstream-to=origin/develop develop
# 创建分支时自动跟踪同名远程分支
git checkout -b feature origin/feature
5.7 解决远程冲突
执行 git push 时,若远程分支已有新提交(他人先推送),Git 会拒绝。此时需先拉取最新远程代码,合并后再推送。
# 拉取远程更新
git pull
# 若出现冲突,解决后提交
# 再推送
git push
强制推送(--force)是“终极手段”,但风险极高——会覆盖远程历史。推荐使用更安全的替代方案:
git push --force origin master
# 更安全的强制推送(确保不会覆盖他人工作)
git push --force-with-lease origin master
第六章 标签 —— 标记重要节点
标签相当于给某次提交贴上一个不可变书签,最常见的用途是版本发布,例如 v1.0.0。
6.1 轻量标签与附注标签
轻量标签:仅指向特定提交的指针,类似于分支但不移动。
附注标签:存储在 Git 数据库中,包含打标签者姓名、邮箱、日期、描述信息(还可附加 GPG 签名)。发布版本时推荐使用附注标签。
# 创建轻量标签
git tag v1.0
# 创建附注标签(推荐用于正式发布)
git tag -a v1.1 -m "Release version 1.1"
# 为历史提交打标签
git tag -a v0.9 -m "Beta release" 9fceb02
# 列出所有标签
git tag
# 按模式筛选标签
git tag -l "v1.*"
# 查看标签详细信息
git show v1.0
# 推送指定标签到远程(默认 git push 不推送标签)
git push origin v1.0
# 推送所有标签
git push origin --tags
# 删除本地标签
git tag -d v1.0
# 删除远程标签
git push origin --delete v1.0
# 或
git push origin :refs/tags/v1.0
# 基于标签创建新分支(例如修复旧版本 Bug)
git checkout -b fix-v1.0 v1.0
