平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Git向仓库提交代码三步走详细解析(add、commit、push)”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
Git 工作区、暂存区和版本库概念
采用 git add命令将想要快照的内容写入缓存区,执行 git commit将缓存区内容添加到仓库中,执行 git push用来从将本地的分支版本上传到远程同时合并。
基本概念:我们先来理解下Git 工作区、暂存区和版本库概念
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫 stage, 或 index。一般存放在 “.git目录下” 下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
如下所示图所示:

Git向仓库提交代码git commit
- 采用
git add命令将想要快照的内容写入缓存区, 而执行git commit将缓存区内容添加到仓库中。 - 落到代码里,Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需设置用户名和邮箱地址。
git config --global user.name 'XXXX'
git config --global user.email [email protected]
账号信息借助如下所示途径能够获得:
(链接已移除)


新建版本库(仅用来第一次)
git init
- 下面我们写入缓存,同时提交对 test.php 的所有改动。
- 在首个例子里,我们采用 -m 选项以在命令行中提供提交注释。
- 递归将本目录下所有文件
git add .
git commit -m '初始化项目'
2 files changed, 2 insertions(+)
create mode 100644 README
create mode 100644 test.php
- 现在我们已经记录了快照。如果我们再执行 git status:
git status
# On branch master
nothing to commit (working directory clean)
- 在这个场景下,以上输出说明我们在最近一次提交之后,没有做任何改动,是一个"working directory clean:干净的工作目录"。
- 从实现思路看,若你没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。 如果 Git 在你对它的设置中找不到相关信息,默认(Linux)会打开 vim。
直接提交
理解这一步时,若你觉得 琐,Git 也允许你用 -a 选项跳过这一步(git add 提交缓存的流程太过繁)。
命令格式如上:
git commit -a
本地分支版本上传到远程git push
结合项目来看,本地仓库与远程仓库连接(首先回到gitee仓库页面,复制https链接)

- 远程仓库连接
git remote add origin 刚才复制的https链接

- 强制推送
- 将远程仓库拉到本地仓库git版本控制(远程仓库为空可跳过)
git pull --rebase origin master
- 本地仓库的代码传到远程仓库
git push -u origin master
- 如果弹出gitee的登录窗口登录即可
回到gitee仓库页面刷新一下即可看到代码已经上传完成了

如果你发现有文件夹或者目录一直未上传(即使修改了)
请检查:.gitignore

如何强制删除本地的所有更改?
落到代码里,如果你想要强制删除本地的所有更改(包括未提交的更改、暂存的更改以及本地分支上的提交),同时将远程分支的最新版本同步到本地,你能够按照以下步骤操作:
- 备份你的工作:首先,确保你保存了所有重要的更改,因为以下步骤将会丢弃它们。
- 清理工作目录:如果你有任何未提交的更改,你能够借助git stash将它们保存起来,稍后能够再恢复。但如果你想要丢弃这些更改,能够采用git reset --hard。
git stash save "My stash message" # 如果你想要保存更改
git reset --hard # 如果你想要丢弃更改
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多兼容脚本之家。
- git提交报错pre -commit hook failed (add --no-verify)问题及解决
- git add -A 和 git add . 的区别详解
- Gitlab如何回滚到某个commit
- Git在IDEA中合并多个commit为一个
- 在Git中撤回最近的commit的多种方式小结
- idea中设置文件不进行git commit问题及解决
- Git中没有commit直接pull,导致自己代码被干掉的解决过程

