程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 依赖管理 - Maven

  • 开发管理 - Git

    • Git - 介绍与安装
    • Git - 常用命令
    • Git - 基本原理
    • Git - SSH免密登录
    • Git - IDEA集成
    • Git - 上传文件到远程仓库完整流程
      • 🌟 1. 配置 Git 基本信息
      • 🌟 2. 创建本地仓库
      • 🌟 3. 关联远程仓库
        • 🔹 使用 HTTPS 方式
        • 🔹 使用 SSH 方式
        • 🔹 关联多个远程仓库
      • 🌟 4. 添加文件到 Git
      • 🌟 5. 提交代码 & 查看提交历史
      • 🌟 6. 推送代码到远程仓库
      • 🌟 7. 验证上传是否成功
      • 🌟 8. 分支操作
        • 🔹切换分支
        • 🔹创建分支
        • 🔹删除分支
        • 🔹重命名分支
        • 🔹切换分支注意事项
      • 🌟 9. 如果仓库已有代码,如何拉取最新代码?
      • 🌟 10. 忽略不想提交的文件
      • 🌟 11. Git 操作常见错误及解决方案
      • 🎯 12. 完整 Git 操作流程
      • 📌 13. 本地更新远程删除的文件
        • 1️⃣ 远程删除文件后,本地默认不会变
        • 2️⃣ 如何同步远程删除的文件?
        • 3️⃣ 强制让本地同步远程删除
        • 4️⃣ 远程删除后如何让本地保留文件?
    • Git - 自建代码托管平台
    • Git - Commit常用表情
  • Git小乌龟教程

  • 代码管理
  • 开发管理 - Git
scholar
2025-02-01
目录

Git - 上传文件到远程仓库完整流程

# Git - 上传文件到远程完整流程

笔记

本文适用于 GitHub / GitLab / Gitee / 码云 等平台,并且你已经安装了 Git Bash 并注册了远程仓库账号。

为什么不用IDEA或其它可视化工具提交?

  • IDEA 提交 & Push 需要进行 界面更新、状态检查、可视化处理,这些都会 增加响应时间。
  • 每次提交或推送前,IDEA 会重新检查文件状态,查看哪些文件被修改或删除,并在 UI 界面上 实时渲染 这些变化。

最快的方式:直接在终端执行 git push,避免 IDEA 额外的处理步骤。

# 🌟 1. 配置 Git 基本信息

在首次使用 Git 之前,你需要配置用户名和邮箱,这是 Git 记录提交者信息的方式。

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
1
2

✅ 解释:

  • --global 代表全局生效,所有 Git 仓库都会使用这个信息。
  • 如果只想在某个项目内生效,可以去掉 --global,Git 只会对当前仓库生效。

💡 查看当前 Git 配置信息

git config --list
1

# 🌟 2. 创建本地仓库

如果你已有本地项目,可跳过 mkdir 和 cd 这两步。

mkdir my-project    # 创建一个新的文件夹
cd my-project       # 进入该目录
git init            # 初始化 Git 仓库
1
2
3

✅ 解释:

  • mkdir my-project:创建一个新的目录(可换成你的项目名)。
  • cd my-project:进入目录。
  • git init:初始化 Git 仓库,这将创建一个 .git 隐藏目录,Git 用它来跟踪文件。

💡 检查当前目录是否为 Git 仓库

ls -a
1

如果能看到 .git 目录,说明初始化成功!

# 🌟 3. 关联远程仓库

默认情况下远程仓库通常需要先在对应的平台(如 GitHub、GitLab、Gitee 等)手动创建,然后复制仓库的 HTTPS 或 SSH 地址再与本地仓库进行关联。

远程命令

操作 命令
添加远程仓库并起别名 git remote add 别名 远程地址
修改远程仓库别名 git remote rename 旧别名 新别名
查看所有远程仓库 git remote -v
删除远程仓库 git remote remove 远程仓库别名
修改远程仓库地址 git remote set-url 远程仓库别名 新的远程仓库地址

# 🔹 使用 HTTPS 方式

git remote add origin https://github.com/你的用户名/你的仓库名.git
1

# 🔹 使用 SSH 方式

(适用于已配置 SSH Key 的用户)

git remote add origin git@github.com:你的用户名/你的仓库名.git
1

✅ 解释:

  • git remote add origin:将本地仓库与远程仓库关联,origin 是远程仓库的默认别名(你可以改成别的,比如 github)。
  • HTTPS 适合初学者,SSH 适合长期使用。
  • 如果你已经添加过远程仓库,需使用 git remote remove origin或git remote rm origin命令先删除再重新添加!

💡 检查远程仓库是否添加成功

git remote -v
1

会显示类似以下内容:

origin  https://github.com/你的用户名/你的仓库名.git (fetch)  
origin  https://github.com/你的用户名/你的仓库名.git (push)  
1
2

image-20250201064959146

✅ 解释:

  • origin:远程仓库的默认别名(你可以改成别的名字,比如 github)。
  • fetch:表示从远程仓库拉取(下载)代码。
  • push:表示向远程仓库推送(上传)代码。

🔸 修改远程仓库地址

修改 origin 绑定的新地址

git remote set-url origin https://github.com/你的用户名/你的新仓库.git
1

✅ 如果你使用 SSH,修改为:

git remote set-url origin git@github.com:你的用户名/你的新仓库.git
1

# 🔹 关联多个远程仓库

有时候,我们需要将代码推送到多个远程仓库,比如 GitHub 和 Gitee,同时维护多个平台。

🔸 添加多个远程仓库

git remote add github https://github.com/你的用户名/你的仓库.git
git remote add gitee https://gitee.com/你的用户名/你的仓库.git
1
2

✅ 检查多个远程仓库是否添加成功

git remote -v
1

会显示类似以下内容,说明我们已经成功关联多个远程仓库了:

github  https://github.com/你的用户名/你的仓库.git (fetch)
github  https://github.com/你的用户名/你的仓库.git (push)
gitee   https://gitee.com/你的用户名/你的仓库.git (fetch)
gitee   https://gitee.com/你的用户名/你的仓库.git (push)
1
2
3
4

# 🌟 4. 添加文件到 Git

现在,Git 还不知道要上传哪些文件,我们需要手动添加它们。

git add .  # 添加当前目录下所有文件
1

image-20250201064921539

✅ 解释:

  • git add .:将 当前目录下所有文件 添加到暂存区(staging area)。

  • 你也可以单独添加某个文件,比如:

    git add 文件名
    
    1

💡 检查 Git 暂存区状态

git status
1

如果一切正常,你会看到类似:

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
      new file:   README.md
1
2
3

image-20250201064841104

# 🌟 5. 提交代码 & 查看提交历史

你需要为提交写一条描述性的 commit 信息。

git commit -m "首次提交项目"  # 提交到本地库,附带提交信息
1

✅ 解释:

  • -m "首次提交项目":-m 代表 message,指定提交信息,说明你这次提交的目的或内容。。

    image-20250201064742906

💡 查看提交历史

git log --oneline  # 一行显示一个版本信息(版本号简写)
1

示例输出:

image-20250201064726261

在 Git 中,查看日志、分支、diff 等信息时,通常会进入一个分页器(如 less),你可以使用以下方式退出:q 退出

📌 适用于:

  • git log
  • git diff
  • git branch -r
  • git show
  • git reflog

# 🌟 6. 推送代码到远程仓库

  • 首次推送时,需要手动指定 main 或 master 分支。
  • Git 的远程分支通常不需要手动创建,本地创建好分支后,推送到远程时会自动创建对应的远程分支。
git branch -v            # 查看本地所有分支及其最新提交记录
git branch -m main  #  # 修改当前分支的名称未main
git push -u origin main # 将本地 main 分支推送到远程 main 分支,并设置默认推送
1
2
3

✅ 解释:

  • git branch -v:查看本地所有分支及其最新提交记录,*代表当前分支。

    image-20250201134213476

  • git branch -M main:有些 Git 版本默认 master,但现在推荐使用 main。

  • git push -u origin main:

    • origin 指向远程仓库。
    • main 指向本地当前分支。
    • -u 参数会 记住这个分支的关联,以后只需 git push 即可。

💡 后续推送

如果以后有新的提交,只需执行以下命令

git push
1

# 🌟 7. 验证上传是否成功

方法 1:Git Bash 检查远程分支

git branch -r
1

如果看到 origin/main,说明推送成功!

方法 2:在 GitHub / GitLab / Gitee 查看

  • 打开 远程仓库地址,刷新网页,看看文件是否已经上传!

# 🌟 8. 分支操作

# 🔹切换分支

# 切换到main分支
git checkout main

# 切换上一个分支
git checkout -

# 强制切换, 但是要小心,如果文件未保存修改会直接覆盖掉
git checkout -f main

# -t, 切换远端分支, 如果用了 git remote 添加一个新仓库就需要用 -t 进行切换
git checkout -t upstream/main
1
2
3
4
5
6
7
8
9
10
11

在克隆时使用 --depth=1 切换其他分支,比如切换 dev 分支:

git clone --depth=1 https://github.com/xjh22222228/git-manual.git

# 切换 dev 分支
git remote set-branches origin 'dev'
git fetch --depth=1 origin dev
git checkout dev
1
2
3
4
5
6

除了使用 git checkout 还有另一种方式切换那就是 git switch, 在 Git 版本 2.23 引入, 主要用于切换和创建分支。

# 切换到 develop 分支
git switch develop

# 切换到上一个分支
git switch -

# 强制切换到 develop 分支,并抛弃本地所有修改
git switch -f develop

# 创建分支并切换
git switch -c newBranch

# 强制创建分支
git switch -C newBranch

# 从前3次提交进行创建新的分支
git switch -c newBranch HEAD〜3

# -t, 切换远端分支, 如果用了 git remote 添加一个新仓库就需要用 -t 进行切换
git switch -t upstream/main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 🔹创建分支

# 创建一个名为 develop 本地分支
git branch develop

# 强制创建分支, 不输出任何警告或信息
git branch -f develop

# 创建本地 develop 分支并切换
git checkout -b develop

# 创建远程分支, 实际上创建本地分支然后推送到远端
git checkout -b develop
git push origin develop

# 创建一个空的分支, 不继承父分支,历史记录是空的,一般至少需要执行4步
git checkout --orphan develop
git rm -rf .  # 这一步可选,如果你真的想创建一个没有任何文件的分支
git add -A && git commit -m "提交" # 添加并提交,否则分支是隐藏的 (执行这一步之前需要注意当前工作区必须保留一个文件,否则无法提交)
git push --set-upstream origin develop # 推送到远程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 🔹删除分支

注意:删除分支不能删除当前分支,先切换到其他分支再删除。

# 删除本地分支
$ git branch -d <branchName>

# 大写 D 强制删除未完全合并的分支
# 等价 git branch --delete --force <branchName>
$ git branch -D <branchName>

# 删除远程分支
$ git push origin :<branchName>
$ git push origin --delete <branch-name>  # >= 1.7.0
1
2
3
4
5
6
7
8
9
10

# 🔹重命名分支

# 重命名当前分支, 通常情况下需要执行3步
# 1、修改当前分支名称
git branch -m <branchName>
# 2、将重命名分支推送到远程
git push -u origin new_branch
# 3、删除远程旧分支
git push origin --delete old_branch

# 重命名指定分支
git branch -m old_branch new_branch
1
2
3
4
5
6
7
8
9
10

image-20250201151414358

# 🔹切换分支注意事项

切换分支之前,如果暂存区(staging area)或工作区(working directory)里有未提交的更改,切换分支后会有以下几种情况:

✅ 1. 未提交但已 git add 的更改(暂存区)

切换分支后仍然保留,不会丢失(前提是切换的目标分支没有冲突的更改)。

git checkout feature-login  # 先切换到 feature-login 分支
echo "修改了一些代码" >> index.js
git add index.js  # 添加到暂存区
git checkout main  # 切换到 main 分支
1
2
3
4

✅ 结果:

  • index.js 的变更仍然在 暂存区,不会丢失。
  • 但如果 main 分支没有 index.js,可能会报错,需要 git stash 或 git commit 处理。

❌ 2. 未 git add 的更改(工作区)

切换分支后可能会报错,或者更改仍然保留,甚至导致冲突!

git checkout feature-login  # 先切换到 feature-login
echo "修改了一些代码" >> index.js  # 但未执行 git add
git checkout main  # 直接切换到 main
1
2
3

⚠ 可能遇到的情况

  1. 如果 index.js 在 main 也存在,Git 可能会让你切换并保留修改。

  2. 如果 index.js 在 main 分支没有,Git 可能会报错:

    error: Your local changes to the following files would be overwritten by checkout:
    index.js
    Please commit your changes or stash them before you switch branches.
    
    1
    2
    3
  3. 如果两个分支对 index.js 有不同的修改,Git 可能会报冲突!

✅ 解决方案

  • 如果不想提交但想保留更改(推荐):

    git stash
    git checkout main
    git stash pop  # 切换回 main 后恢复改动
    
    1
    2
    3
  • 如果不想保留更改(放弃未提交的修改):

    git checkout -f main  # 强制切换(丢失未提交的修改!)
    
    1
  • 如果希望提交后再切换:

    git add .
    git commit -m "保存修改"
    git checkout main
    
    1
    2
    3

📌 3. 结论

状态 切换分支后会消失吗? 解决方法
已 git add(暂存区) 不会消失(仍然存在) 直接切换,无需处理
未 git add(工作区) 可能导致报错或冲突 git stash 存起来,或 git commit 后再切换
存在冲突(两个分支修改了相同文件) 可能报错,无法切换 先 git stash 或 git commit 解决冲突

🚀 最佳实践:

  • 如果有未提交的更改,建议 git stash 后再切换分支,避免冲突!
  • 如果想要清理未提交的改动,可以用 git checkout -f 分支名 或 git reset --hard(谨慎使用)。

# 🌟 9. 如果仓库已有代码,如何拉取最新代码?

如果远程仓库已经有文件,你本地还没有,需要先拉取远程代码:

git pull origin main --allow-unrelated-histories
1

✅ 解释:

  • git pull origin main:从远程仓库的 main 分支拉取代码并合并到本地。
  • --allow-unrelated-histories:如果你的本地仓库和远程仓库没有共同历史,Git 可能会报错,加上这个参数可以避免问题。

# 🌟 10. 忽略不想提交的文件

如果你有一些文件不想提交,比如 node_modules、log 文件等,可以创建 .gitignore 文件。

# 将 "node_modules/" 目录添加到 .gitignore,防止提交 node_modules 依赖文件
echo "node_modules/" >> .gitignore

# 将 ".env" 文件添加到 .gitignore,防止提交环境变量文件,避免泄露敏感信息
echo ".env" >> .gitignore

# 将 .gitignore 文件添加到 Git 暂存区
git add .gitignore

# 提交 .gitignore 文件,并添加提交说明
git commit -m "添加 .gitignore 规则,忽略 node_modules 和 .env 文件"

# 推送到远程仓库
git push origin main  # 这里的 `main` 改成你的实际分支名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14

🌟 前端 Vue + 后端 Spring Boot 项目的通用 .gitignore 模板

该 📂.gitignore 文件适用于 Vue 前端项目 和 Spring Boot 后端项目,可以防止提交无用的文件,保持 Git 仓库整洁。

# 🚀 通用忽略规则
.DS_Store
Thumbs.db
*.log
*.swp
*.swo
*.swn
.idea/
.vscode/
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
dist/
out/
temp/
tmp/
*.pid
*.seed
*.key

# 💻 Vue 前端项目
node_modules/
dist/
public/
!.gitkeep
coverage/
.eslintcache
.env.local
.env.development.local
.env.test.local
.env.production.local

# 📦 Vue CLI 自动生成的文件
package-lock.json
yarn.lock
pnpm-lock.yaml

# ⚡ TypeScript
*.tsbuildinfo

# 🛠️ Vue 编译缓存
.vuepress/dist/
.vuepress/.temp/
.husky/

# 🏗️ Webpack & Vite
*.cache
.vite/
.nuxt/
.next/

# 🏢 IntelliJ IDEA/WebStorm
.idea/
*.iml

# 🌍 后端 Spring Boot 项目
target/
*.war
*.jar
*.ear

# 🔥 Maven
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/application.properties
!**/src/main/**/application.yml
!**/src/main/**/application-*.properties
!**/src/main/**/application-*.yml
!.gitkeep

# 🏗️ Gradle
.gradle/
build/
.gradle-cache/
*.gradle
gradle-app.setting
gradle-wrapper.jar
gradlew
gradlew.bat

# ☁️ 运行时 & 配置文件
logs/
nohup.out
*.log
*.out
*.swp
*.swo
*.swn
hs_err_pid*
*.pid
*.seed
*.key
*.pem

# 🚫 重要的环境变量和安全配置
.env
.env.local
.env.development
.env.test
.env.production
config/*.json
config/*.yaml
config/*.yml
config/*.xml
secrets/
keys/

# 🚀 Docker & Kubernetes
Dockerfile
docker-compose.yml
.dockerignore
.kube/

# 💾 数据库 & 缓存
*.sqlite
*.sqlite3
*.db
*.data
*.cache
*.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

📌 说明

分类 作用
通用 忽略 .DS_Store(Mac 文件)、Thumbs.db(Windows 缓存文件)、*.log(日志文件)
Vue 前端 忽略 node_modules/、dist/(打包产物)、.env.*(环境变量文件)、coverage/(单元测试覆盖率)
Spring Boot 后端 忽略 target/(编译目录)、*.jar/*.war(打包文件)、.mvn/(Maven 配置)
Maven & Gradle 忽略 build/、.gradle/(Gradle 缓存)、.mvn/(Maven Wrapper 缓存)
运行时文件 忽略 logs/(日志目录)、nohup.out(后台运行输出)、hs_err_pid*(JVM 崩溃日志)
环境变量 忽略 .env 配置文件,避免泄露敏感信息
Docker/K8s 忽略 Dockerfile、docker-compose.yml 以及 .dockerignore
数据库 忽略 *.sqlite、*.db(数据库文件)、*.cache(缓存文件)

1️⃣ 在项目根目录创建 .gitignore 文件

touch .gitignore
1

2️⃣ 复制上述内容到 .gitignore

3️⃣ 提交 .gitignore 文件

git add .gitignore
git commit -m "添加通用的 .gitignore 规则"
git push origin main
1
2
3

# 🌟 11. Git 操作常见错误及解决方案

错误信息 可能原因 解决方案
fatal: remote origin already exists. 远程仓库已关联 git remote remove origin 重新添加
error: failed to push some refs 远程仓库比本地仓库更新 git pull --rebase origin main 然后 git push
fatal: not a git repository 目录没有初始化 Git git init 重新初始化
Permission denied (publickey). SSH Key 未配置 ssh-keygen -t rsa 生成 SSH Key 并添加到 GitHub

# 🎯 12. 完整 Git 操作流程

💡 完整 Git 操作流程

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"

mkdir my-project
cd my-project
git init

git remote add origin https://github.com/你的用户名/你的仓库名.git

git add .
git commit -m "首次提交"

git branch -M main
git push -u origin main
1
2
3
4
5
6
7
8
9
10
11
12
13
14

📌 后续提交

git add .
git commit -m "更新代码"
git push
1
2
3

🚀 至此,已经完成了完整的 Git 文件上传流程!🎉

# 📌 13. 本地更新远程删除的文件

# 1️⃣ 远程删除文件后,本地默认不会变

如果你在远程仓库(如 GitHub、GitLab)删除了文件,本地不会受到影响,除非你手动同步远程仓库。

🚀 git pull 默认只会同步远程仓库的新增和修改,而不会自动删除远程删除的文件。如果远程分支上删除了文件,你需要手动执行特定命令才能让本地同步删除。

# 2️⃣ 如何同步远程删除的文件?

如果想让本地同步远程的删除操作,你需要执行:

git pull --prune
1

或:

git pull origin main --prune
1

📌 解释

  • git pull:从远程获取最新的更改并合并到本地
  • --prune:删除本地已被远程删除的文件或分支

# 3️⃣ 强制让本地同步远程删除

如果你想让本地完全同步远程,包括被删除的文件,可以使用:

git fetch --prune
git reset --hard origin/main
1
2

📌 解释

  • git fetch --prune:获取远程最新变更,并清理已经删除的分支和文件
  • git reset --hard origin/main:强制重置本地分支,使其与远程 main 分支完全一致

⚠️ 警告

  • git reset --hard 会覆盖本地的所有未提交更改!谨慎使用!

# 4️⃣ 远程删除后如何让本地保留文件?

如果你不想让本地被远程删除的文件影响,可以:

git pull --no-ff --no-commit
1

📌 解释

  • --no-ff:不进行快进合并,保留历史
  • --no-commit:获取更改但不自动提交,你可以检查后再决定是否删除本地文件

📌 结论

✅ 默认情况下,远程删除的文件不会影响本地

✅ 如果希望同步远程删除的文件,需要 git pull --prune

✅ 如果想让本地强制与远程一致,可使用 git reset --hard origin/main

🔹 建议:在执行 git reset --hard 之前,先 git status 和 git diff 检查本地改动,避免误删重要文件! 🚀

编辑此页 (opens new window)
上次更新: 2025/02/01, 15:16:14
Git - IDEA集成
Git - 自建代码托管平台

← Git - IDEA集成 Git - 自建代码托管平台→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式