本地使用 Git 向 Gitee 推送项目的全过程、涉及的命令以及每个命令的作用
下面详细讲解从本地使用 Git 向 Gitee 推送项目的全过程、涉及的命令以及每个命令的作用:
一、准备工作
- 在本地安装 Git(官网下载并安装)
- 注册 Gitee 账号并登录
- 在 Gitee 上创建一个新仓库(点击右上角 “+” 号 -> 新建仓库)
- 在项目根目录创建一个
.gitignore
文件,在里面添加不想要推送到git仓库的文件夹或文件,关于.gitignore
详解见文末。
二、操作步骤及命令解析
1. 初始化本地仓库(若项目尚未使用 Git 管理)
git init
- 作用:在当前目录初始化一个新的 Git 仓库,创建一个隐藏的
.git
文件夹,用于存储版本控制相关信息
2. 将文件添加到暂存区
git add .
- 作用:将当前目录下所有修改过的文件添加到 Git 暂存区
- 其他用法:
git add 文件名
:添加指定文件git add 文件夹名
:添加指定文件夹
3. 提交文件到本地仓库
git commit -m "提交说明"
- 作用:将暂存区的文件提交到本地仓库,并添加提交说明(建议说明清晰描述本次修改内容)
- 提交说明是必填项,用于记录每次修改的目的
4. 关联 Gitee 远程仓库
git remote add origin https://gitee.com/你的用户名/仓库名.git
- 作用:将本地仓库与 Gitee 上的远程仓库关联起来
origin
是远程仓库的默认别名,也可以使用其他名称- 仓库地址可在 Gitee 仓库页面获取(克隆/下载按钮处)
5. 拉取远程仓库内容(首次推送前建议执行)
git pull origin master --allow-unrelated-histories
- 作用:拉取远程仓库的最新内容到本地,并合并
master
是默认分支名(现在 Gitee 可能默认是main
)--allow-unrelated-histories
允许合并两个没有共同历史的仓库(首次关联时使用)
6. 推送本地仓库内容到 Gitee
git push -u origin master
- 作用:将本地仓库的内容推送到 Gitee 远程仓库
-u
参数用于设置默认推送的远程仓库和分支,后续可直接使用git push
master
是要推送的本地分支,需与远程分支名称一致
7. 输入账号密码(首次推送时)
推送命令执行后,会提示输入 Gitee 的账号和密码:
- 用户名:Gitee 的登录账号
- 密码:Gitee 的登录密码(若开启了二次验证,需使用令牌)
三、后续推送简化流程
完成首次推送后,后续修改项目后只需执行:
# 添加修改
git add .# 提交修改
git commit -m "修改说明"# 推送至远程
git push
四、常见问题解决
- 若远程仓库已存在内容,推送失败:
git pull origin master --rebase
git push origin master
- 如需更换远程仓库地址:
git remote set-url origin 新的仓库地址
- 查看当前远程仓库信息:
git remote -v
通过以上步骤,就能将本地项目成功推送到 Gitee 远程仓库,实现代码的远程管理和备份。
git pull
是 Git 中常用的命令,用于从远程仓库获取最新代码并自动合并到当前本地分支。它实际上是 git fetch
和 git merge
两个命令的组合操作。
基本语法
git pull [远程仓库名] [远程分支名]
常用场景
-
拉取并合并默认远程分支
git pull
当当前分支与远程分支存在追踪关系时,可直接使用,无需指定远程仓库和分支。
-
拉取指定远程分支并合并到当前分支
git pull origin main
从
origin
远程仓库的main
分支拉取代码并合并到当前分支。 -
强制拉取(谨慎使用)
git pull --force # 或 git pull -f
强制覆盖本地修改,可能会导致本地未提交的更改丢失。
-
以 rebase 方式拉取
git pull --rebase origin main
使用变基(rebase)而非合并(merge)的方式整合代码,使提交历史更整洁。
-
只拉取特定文件
git fetch origin main git checkout origin/main -- 文件名
这不是
git pull
的直接用法,但可以实现只更新特定文件的效果。
工作原理
- 执行
git fetch
从远程仓库下载最新的代码和分支信息 - 自动执行
git merge
将远程分支合并到当前本地分支
注意事项
- 拉取前最好先提交本地的修改,避免合并冲突
- 若出现合并冲突,需要手动解决冲突后再提交
- 频繁使用
git pull
可以保持本地代码与远程同步 - 对于重要分支,建议使用
git fetch
+git merge
分步操作,更安全可控
使用 git pull --help
可以查看完整的命令文档和更多高级选项。
附. .gitignore
文件讲解
.gitignore
文件用于告诉 Git 哪些文件或目录不需要纳入版本控制,避免将临时文件、编译产物、敏感信息等提交到代码仓库。以下是 .gitignore
的编写规则和常见示例:
一、基本语法规则
-
注释:以
#
开头的行是注释,会被 Git 忽略# 这是一条注释,不会生效
-
匹配文件/目录:直接写文件名或目录名,匹配所有同名文件/目录
# 忽略所有名为 temp.txt 的文件 temp.txt# 忽略所有名为 logs 的目录 logs/
-
通配符:
*
:匹配任意字符(不含路径分隔符/
)# 忽略所有 .log 后缀的文件 *.log
**
:匹配任意层级的目录# 忽略所有目录下的 cache 文件夹 **/cache/
?
:匹配单个字符# 忽略 file1.txt、file2.txt 等(单个数字结尾) file?.txt
-
否定规则:以
!
开头,表示不忽略某个文件(需放在对应忽略规则之后)# 忽略所有 .txt 文件,但保留 README.txt *.txt !README.txt
-
路径分隔符:
- 以
/
开头:只匹配项目根目录下的文件/目录# 只忽略根目录下的 node_modules,不忽略子目录中的 /node_modules/
- 以
/
结尾:表示匹配目录(而非文件)# 只忽略 dist 目录,不忽略 dist.txt 文件 dist/
- 以
二、常见场景示例
1. 前端项目(JavaScript/TypeScript)
# 依赖包
node_modules/
pnpm-lock.yaml
package-lock.json
yarn.lock# 编译产物
dist/
build/
out/# 环境变量(含敏感信息)
.env
.env.local
.env.*.local# 日志和缓存
logs/
*.log
.DS_Store # Mac 系统文件
Thumbs.db # Windows 系统文件# 编辑器配置(可选,建议放在全局 .gitignore)
.idea/
.vscode/
*.swp
*.swo
2. Python 项目
# 虚拟环境
venv/
env/
*.env# 编译产物
__pycache__/
*.py[cod]
*$py.class# 依赖包信息
requirements.txt
*.egg-info/# 测试和日志
tests/__pycache__/
logs/
*.log# 操作系统文件
.DS_Store
Thumbs.db
3. Java 项目
# 编译产物
target/
*.class# 依赖包
lib/
*.jar
*.war# IDE 配置
.idea/
*.iml
.classpath
.project# 日志
logs/
*.log
三、使用技巧
-
全局
.gitignore
:对于所有项目都需要忽略的文件(如编辑器配置、系统文件),可设置全局规则:# 创建全局 .gitignore 文件 git config --global core.excludesfile ~/.gitignore_global
然后在
~/.gitignore_global
中添加规则(如.idea/
、.DS_Store
等)。 -
自动生成:无需手动编写,可通过 gitignore.io 网站,选择项目类型(如
Node
、Python
)自动生成配置。 -
生效时机:
.gitignore
只对未被跟踪的文件生效。如果文件已被提交到仓库,需先移除跟踪:# 移除文件跟踪(不会删除本地文件) git rm --cached 文件名 # 然后提交修改 git commit -m "移除已跟踪的文件"
通过合理配置 .gitignore
,可以保持仓库清洁,避免冗余文件和敏感信息的提交。