
当你熟练掌握 Git 本地操作后,下一步就是解锁 “远程协作” 技能 —— 毕竟实际开发中,很少有人能单打独斗完成项目。而标签管理则是版本发布的 “里程碑”,让你在海量提交中精准定位发布版本。 这篇博客将带你打通 Git 远程操作的全流程:从理解分布式版本控制的核心逻辑,到远程仓库的创建、克隆、推送、拉取,再到配置 Git 忽略特殊文件、简化命令别名,最后精通标签管理的创建、推送与删除。全程实战驱动,新手也能跟着一步步操作,轻松实现多人协作与版本规范化管理。下面就让我们正式开始吧!
在学习远程操作前,我们必须先搞懂一个核心问题:Git 作为分布式版本控制系统,和传统的集中式版本控制系统(如 SVN)有何不同?这是理解 Git 远程协作的关键。
集中式版本控制系统(如 SVN)的核心是 “中央服务器”—— 所有开发者的代码都必须提交到中央服务器,本地仅保留当前工作版本。这种模式的缺点很明显:
而 Git 的分布式模式则彻底解决了这些问题,其核心逻辑是:每个人的电脑都是一个完整的版本库。
具体来说:

可能有同学会问:“既然每个人的电脑都是完整版本库,为什么还需要 GitHub、Gitee 这样的平台?”
其实,分布式模式下的 “中央服务器”(如 Gitee、GitHub)并非必需,但它能极大提升协作效率,其核心作用是:
简单来说,中央服务器就像一个 “代码中转站”,让分布式协作变得更高效、更有序,但即使没有它,开发者之间依然可以通过其他方式(如 U 盘拷贝版本库)完成协作 —— 这就是分布式模式的灵活性。
在进行远程操作前,先明确几个关键概念:
远程操作的第一步是拥有一个远程仓库。目前最常用的代码托管平台有 Gitee(国内,速度快)和 GitHub(国外,资源丰富),本文以 Gitee 为例(课程推荐),带你完成远程仓库的创建、克隆等操作。
首先需要注册一个 Gitee 账号(https://gitee.com/),注册完成后,按照以下步骤创建远程仓库:
登录 Gitee 后,点击右上角的 “+” 号,选择 “新建仓库”,进入仓库创建页面。

git-remote-demo),建议英文命名;填写完成后,点击 “创建” 按钮,远程仓库即可创建成功。创建成功后,页面会显示仓库的基本信息,包括仓库地址(HTTPS 和 SSH 两种协议)、分支、文件等。
远程仓库的地址是本地仓库与远程仓库交互的核心,Gitee 提供两种地址协议:
https://gitee.com/your-username/git-remote-demo.git,无需配置,直接使用,但每次推送 / 拉取需输入账号密码;git@gitee.com:your-username/git-remote-demo.git,需要配置 SSH 密钥,配置后无需重复输入账号密码,更方便。
克隆(clone)是从远程仓库创建本地仓库的最快方式 —— 执行git clone命令后,Git 会自动将远程仓库的所有代码、分支、提交历史复制到本地,并自动关联远程仓库(默认远程仓库名称为origin)。
git clone <远程仓库地址>先获取HTTPS的地址:

# 克隆HTTPS地址的仓库
git clone https://gitee.com/your-username/git-remote-demo.git执行命令后,终端会提示输入 Gitee 的用户名和密码,输入正确后即可开始克隆:
Cloning into 'git-remote-demo'...
Username for 'https://gitee.com': your-username
Password for 'https://your-username@gitee.com':
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
Unpacking objects: 100% (4/4), 1.80 KiB | 1.80 MiB/s, done. 克隆成功后,本地会生成一个与仓库名称相同的文件夹(如git-remote-demo),进入该文件夹即可查看仓库内容:
# 进入克隆后的本地仓库
cd git-remote-demo
# 查看仓库文件
ls
# 输出:README.en.md README.md .gitignoreSSH 协议克隆需要先配置 SSH 密钥,让 Gitee 识别你的电脑,无需每次输入账号密码。
打开终端(Linux)或 Git Bash(Windows),执行以下命令创建 SSH 密钥对(-C后面跟你的 Gitee 绑定邮箱):
ssh-keygen -t rsa -C "your-email@gitee.com"执行命令后,终端会提示输入密钥保存路径(默认即可,直接回车)、密码(可选,为空则无需密码),一路回车即可:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/your-name/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/your-name/.ssh/id_rsa
Your public key has been saved in /home/your-name/.ssh/id_rsa.pub 成功后,用户主目录下会生成.ssh文件夹,包含两个文件:
id_rsa:私钥,保存在本地,切勿泄露;id_rsa.pub:公钥,需要上传到 Gitee。查看公钥内容:
cat ~/.ssh/id_rsa.pub终端会输出公钥字符串(以ssh-rsa开头,以你的邮箱结尾),复制整个字符串。
配置 Gitee 公钥:

# 克隆SSH地址的仓库
git clone git@gitee.com:your-username/git-remote-demo.git 首次克隆时,终端会提示确认主机身份,输入yes即可:
The authenticity of host 'gitee.com (212.64.63.215)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com,212.64.63.215' (ECDSA) 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
Receiving objects: 100% (4/4), done.克隆成功后,后续推送 / 拉取操作无需再输入账号密码,更方便高效。
克隆完成后,Git 会自动为本地仓库关联远程仓库(默认名称为origin),可以通过以下命令查看远程仓库信息:
# 查看远程仓库名称(默认origin)
git remote
# 查看远程仓库详细信息(包含推送/拉取地址)
git remote -v输出结果(SSH 协议示例):
origin git@gitee.com:your-username/git-remote-demo.git (fetch)
origin git@gitee.com:your-username/git-remote-demo.git (push)fetch:拉取地址,从远程仓库获取修改的地址;push:推送地址,将本地修改上传到远程仓库的地址。 克隆远程仓库后,就可以进行本地开发,并通过git push(推送)和git pull(拉取)与远程仓库交互,实现多人协作。
当你在本地仓库完成开发(如新增文件、修改代码)并提交到本地版本库后,需要将这些修改推送到远程仓库,让团队其他成员可以获取。
# 推送本地分支到远程仓库(本地分支名与远程分支名一致)
git push <远程仓库名称> <本地分支名>
# 完整格式(本地分支名与远程分支名不一致时使用)
git push <远程仓库名称> <本地分支名>:<远程分支名>本地开发并提交修改:
# 进入本地仓库
cd git-remote-demo
# 新增一个文件
vim file.txt
# 写入内容:"hello git"
# 保存退出(vim操作:i编辑,Esc后输入:wq)
# 添加到暂存区
git add file.txt
# 提交到本地版本库
git commit -m "feat: 新增file.txt文件"推送至远程仓库:
# 推送本地master分支到origin远程仓库(默认远程仓库名称为origin)
git push origin masterEnumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 308 bytes | 308.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:your-username/git-remote-demo.git
c6ce3f0..7ce3183 master -> master我们也可以在码云上看到文件已经成功推送了:


git pull origin master拉取远程最新修改,合并后再推送;当团队其他成员推送了修改到远程仓库后,你需要拉取这些修改到本地,保持本地仓库与远程仓库同步,避免冲突。
# 拉取远程分支的修改,并合并到当前本地分支
git pull <远程仓库名称> <远程分支名>
# 完整格式(拉取远程分支并合并到指定本地分支)
git pull <远程仓库名称> <远程分支名>:<本地分支名> 假设团队成员在远程仓库的master分支上修改了README.md文件,你需要拉取这些修改到本地:
拉取远程修改:
# 拉取origin远程仓库的master分支,合并到本地当前分支(需确保当前分支是master)
git pull origin master拉取成功的输出
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 1.02 KiB | 1.02 MiB/s, done.
From gitee.com:your-username/git-remote-demo
master -> FETCH_HEAD
7ce3183..60e6b0a master -> origin/master
Updating 7ce3183..60e6b0a
Fast-forward
README.md | 2 ++
1 file changed, 2 insertions(+)验证拉取结果:
# 查看README.md文件,确认远程修改已同步到本地
cat README.md如果拉取时出现冲突(如你和团队成员修改了同一个文件的同一部分),Git 会提示冲突信息,处理方式与本地分支合并冲突一致:
<<<<<<< ======= >>>>>>>);git add <冲突文件>标记冲突已解决;git commit -m "merge: 解决拉取冲突"提交合并结果;git push origin master推送修改。git pull拉取远程最新修改,避免冲突;master分支开发,应创建功能分支(feature分支),开发完成后再合并到master分支;-m参数说明要清晰(如feat: 新增用户登录功能 fix: 修复登录按钮点击无响应),方便团队成员理解修改内容。 在使用 Git 的过程中,有些文件不需要提交到仓库(如配置文件、日志文件),有些命令过于冗长(如git status),通过 Git 配置可以优化这些问题,提升开发效率。
在项目开发中,有些文件不应该提交到 Git 仓库,例如:
.exe .so .class);config.ini);log.txt);Thumbs.db);.vscode/)。 Git 提供了.gitignore文件,通过编写规则,可以让 Git 自动忽略这些文件,不纳入版本控制。
在本地仓库根目录创建.gitignore文件:
# 进入本地仓库根目录
cd git-remote-demo
# 创建.gitignore文件
vim .gitignore编写忽略规则:在.gitignore文件中添加以下内容(根据项目需求调整):
# 忽略所有.ini后缀的配置文件
*.ini
# 忽略所有.so后缀的二进制文件
*.so
# 忽略日志文件
*.log
# 忽略VS Code配置目录
.vscode/
# 忽略操作系统自动生成的文件
Thumbs.db
.DS_Store
# 忽略特定文件(如数据库配置文件)
db_config.php提交.gitignore 文件到仓库:
# 添加到暂存区
git add .gitignore
# 提交到本地版本库
git commit -m "add: 新增.gitignore文件,忽略特殊文件"
# 推送至远程仓库,让团队成员共享忽略规则
git push origin master#:注释,Git 会忽略注释行;*.xxx:忽略所有以.xxx为后缀的文件;/dir/:忽略名为dir的目录及其下所有文件;!file.txt:例外规则,不忽略file.txt文件(即使前面有规则匹配);file.txt:忽略特定文件file.txt。# 新建一个被忽略的文件
touch test.ini log.txt
# 查看Git状态,确认文件被忽略
git status输出结果(文件未被跟踪):
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean 说明.gitignore规则生效,Git 没有跟踪test.ini和log.txt文件。
如果某个文件被.gitignore忽略,但你确实需要提交它,可以使用-f参数强制添加:
# 强制添加被忽略的db_config.php文件
git add -f db_config.php 如果不确定某个文件为什么被忽略,可以使用git check-ignore命令查看:
# 查看test.ini文件被哪个规则忽略
git check-ignore -v test.ini输出结果(显示忽略规则所在的文件和行号):
.gitignore:3:*.ini test.ini Git 的有些命令比较冗长(如git status git log --pretty=oneline),通过配置别名,可以将其简化为简短的命令(如git st git log1),提升操作效率。
# 配置全局别名(所有仓库生效)
git config --global alias.<别名> <原始命令>
# 配置仓库别名(仅当前仓库生效,不加--global参数)
git config alias.<别名> <原始命令># 1. 简化git status为git st
git config --global alias.st status
# 2. 简化git log --pretty=oneline为git log1
git config --global alias.log1 'log --pretty=oneline'
# 3. 简化git log --graph --pretty=oneline --abbrev-commit为git logg
git config --global alias.logg 'log --graph --pretty=oneline --abbrev-commit'
# 4. 简化git checkout为git co
git config --global alias.co checkout
# 5. 简化git branch为git br
git config --global alias.br branch
# 6. 简化git commit为git ci
git config --global alias.ci commit
# 7. 简化git remote -v为git rv
git config --global alias.rv 'remote -v'# 使用别名git st查看状态(等价于git status)
git st
# 使用别名git log1查看简洁日志(等价于git log --pretty=oneline)
git log1
# 使用别名git co切换分支(等价于git checkout dev)
git co dev# 查看所有配置(包含别名)
git config -l
# 删除别名(以删除git st为例)
git config --global --unset alias.stst co br),所有仓库共享;git commit的别名为git com,可能与其他命令冲突)。 在项目发布时,我们需要为某个稳定版本打上标记(如v1.0 v2.1.3),方便后续追溯、回退到该版本。Git 的标签(tag)功能就是为此设计的 —— 标签是对某次提交的 “别名”,比难以记忆的 commit id 更直观。
很多新手会混淆标签和分支,其实两者的核心区别很明显:
master分支会不断有新的提交);v1.0标签永远指向发布 1.0 版本时的那次提交)。标签的核心用途:
v1.0 v1.0.1);v2.0-beta测试版、v2.0-rc候选版);Git 支持两种标签:轻量标签(lightweight)和附注标签(annotated)。
# 切换到需要打标签的分支(如master分支)
git co master
# 创建轻量标签v1.0(默认打在最新提交上)
git tag v1.0
# 查看所有标签
git tag输出结果:
v1.0# 创建附注标签v1.0.1,-a指定标签名,-m指定说明文字
git tag -a v1.0.1 -m "v1.0.1版本:修复登录功能Bug"
# 查看标签信息(包含说明、作者、日期等)
git show v1.0.1输出结果(包含标签详情和对应的提交信息):
tag v1.0.1
Tagger: Your Name <your-email@gitee.com>
Date: Fri May 12 17:27:06 2023 +0800
v1.0.1版本:修复登录功能Bug
commit 97811abd1d43774aeb54fee32bf4fc76b2b08170 (HEAD -> master, tag: v1.0.1, origin/master)
Author: Your Name <your-email@gitee.com>
Date: Fri May 12 17:27:06 2023 +0800
add: 新增.gitignore文件,忽略特殊文件
diff --git a/.gitignore b/.gitignore
... 如果需要为之前的某次提交打标签,需要先找到该提交的 commit id(通过git log1查看),再指定 commit id 创建标签:
# 查看提交历史,获取需要打标签的commit id(如c6ce3f0)
git log1
# 为commit id为c6ce3f0的提交打附注标签v0.9
git tag -a v0.9 -m "v0.9测试版" c6ce3f0
# 查看标签,确认创建成功
git tag输出结果:
v0.9
v1.0
v1.0.1Git 的标签默认按字母顺序排列,而非创建时间顺序,例如:
git tag
# 输出:v0.9 v1.0 v1.0.1# 查看所有标签
git tag
# 查看某个标签的详细信息(附注标签)
git show v1.0.1
# 查看某个标签对应的提交内容(轻量标签)
git show v1.0如果标签打错了,可以删除本地标签:
# 删除本地标签v1.0
git tag -d v1.0
# 查看标签,确认已删除
git tag输出结果(v1.0 已消失):
v0.9
v1.0.1标签默认仅存储在本地,不会自动推送到远程仓库,需要手动推送:
# 推送单个标签到远程仓库
git push origin v1.0
# 推送所有本地标签到远程仓库
git push origin --tags推送单个标签的输出结果:
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:your-username/git-remote-demo.git
* [new tag] v1.0 -> v1.0推送成功后,登录 Gitee 查看远程仓库,会发现标签已同步到远程。

如果需要删除远程仓库的标签,需要先删除本地标签,再推送删除命令:
# 1. 先删除本地标签v1.0.1
git tag -d v1.0.1
# 2. 再删除远程仓库的标签v1.0.1
git push origin :refs/tags/v1.0.1删除远程标签的输出结果:
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:your-username/git-remote-demo.git
- [deleted] v1.0.1
v主版本号.次版本号.修订号),例如: v1.0.0:正式发布版本;v1.0.1:修复 1.0 版本的 Bug;v1.1.0:在 1.0 版本基础上新增功能;v2.0.0-beta:2.0 版本的测试版;git tag -a),记录标签说明、发布日期等信息,方便追溯;Git 的远程操作与标签管理是团队协作和版本规范化的核心,多加练习就能熟练掌握。无论是小型团队的协作开发,还是大型项目的版本发布,这些技能都能让你的工作更高效、更有序。 如果在实践中遇到问题(如 SSH 配置失败、标签推送失败),欢迎在评论区留言讨论。后续我会继续更新 Git 企业级实战内容,带你深入学习分支策略、持续集成等高级技能,敬请期待!