Git 入门指南:核心概念与常用命令全解析
Git 入门指南:核心概念与常用命令全解析
- 前言
- 一、Git相关概念
- 1.1 工作目录
- 1.2 暂存区
- 1.3 本地仓库
- 1.3 远程仓库
- 1.3.1 首次提交到远程仓库提示输入用户名密码
- 1.3.2 解决方法
- 二、Git常用命令
- 2.1 配置命令
- 2.1.1 查看当前 Git 配置的所有信息
- 2.1.2 查看系统全局配置
- 2.1.3 修改系统全局的默认分支
- 2.1.3.1 切换分支
- 2.1.3.2 切换分支操作详细演示
- 2.1.3.2.1 本地切换分支
- 2.1.3.2.2 切换到远程分支(并在本地创建对应的分支)
- 2.1.3.2.2 快速切换回上一个分支
- 2.1.4 查看当前用户全局配置
- 2.1.5 查看当前仓库配置信息
- 2.1.6 配置用户名和邮箱
- 2.1.7 删除用户名或者邮箱
- 2.2 其他常用命令
- 2.2.1 创建仓库
- 2.2.2 查看当前状态
- 2.2.3 添加到暂存区
- 2.2.4 将暂存区的内容提交到本地仓库
- 2.2.5 推送到远程仓库
- 2.2.6 查看代码的修改部位
- 2.2.7 查看提交记录
- 2.3 操作远程仓库
- 2.3.1 本地仓库关联远程仓库
- 2.3.2 推送到远程仓库
- 2.3.2.1 推送本地分支到远程同名分支
- 2.3.2.2 推送本地分支到远程不同名分支
- 2.3.2.3 省略远程分支名(默认同名)
- 2.3.2.4 删除远程分支
- 2.3.2.5 强制推送(覆盖远程分支)
- 2.3.2.6 设置默认推送
- 2.3.2.7 推送所有分支
- 2.3.3 查看关联的远程仓库
- 2.3.4 删除已关联的远程仓库
- 2.3.5 拉取远程仓库
- 2.3.6 实际工作流示例
- 场景:将本地开发分支推送到远程仓库
前言
在现代软件开发中,版本控制工具是开发者不可或缺的“得力助手”,而 Git 作为当前最流行的分布式版本控制系统,已成为团队协作和个人项目管理的标配。无论是跟踪代码变更、回溯历史版本,还是多人协同开发、远程同步项目,Git 都能提供高效且可靠的支持。然而,对于初学者而言,Git 的工作机制和命令体系往往显得抽象且复杂,诸如“工作目录、暂存区、本地仓库”的概念区分,以及“add、commit、push”等命令的实际应用,都可能成为入门路上的阻碍。
本文专为 Git 新手打造,旨在通过清晰的概念拆解和实操案例,帮助读者快速掌握 Git 的核心逻辑与常用技巧。文章第一部分将系统讲解 Git 的四大核心区域——工作目录、暂存区、本地仓库和远程仓库,通过直观的图示展示它们之间的数据流关系,让你明白“代码从修改到提交的完整路径”;第二部分则聚焦高频使用的 Git 命令,从配置层级、仓库初始化、代码提交到远程同步,详细解析每个命令的功能、参数及实际场景用法,并附上操作截图辅助理解。
无论你是刚接触版本控制的编程初学者,还是需要梳理 Git 知识体系的开发者,本文都将为你打下坚实的基础,让你在项目开发中轻松驾驭 Git,告别“代码丢失”“版本混乱”的困扰,真正发挥版本控制的价值。接下来,就让我们一同开启 Git 的学习之旅吧!
一、Git相关概念
1.1 工作目录
就是我们自己写代码的文件夹,随时随地的写、修改,不会被记录和跟踪。
1.2 暂存区
我们将自己写好的代码放进暂存区,就做了跟踪。代码放在暂存区之后,在工作目录如果对其修改了,发现修改的不对,可以随时删除工作目录的修改,将暂存区的恢复到工作目录。
一旦点击+
添加到暂存区后,就在暂存区可以看到它。之后再修改还可以再工作目录看到修改的地方。
1.3 本地仓库
1.3 远程仓库
上面有提及远程仓库。其实远程仓库就是在服务器上的一个仓库。第一次使用需要在上面创建,之后克隆到本地。请参看上一篇文章《上传代码到gitee仓库》这里我使用的是CSDN上的GitCode,不是Gitee,但大同小异。
下面简要说一下创建仓库吧。
登录自己的GitCode账号,这个可以申请。
在电脑的任何一个文件夹下都可以右键,点击Git Bash,之后将剪切板的文字粘贴进去。请注意,右键–粘贴,不要使用Ctrl+V!
之后就将服务器的仓库克隆到本地了。
1.3.1 首次提交到远程仓库提示输入用户名密码
如果从GitCode克隆了工程,之后修改了代码,想要提交到远程仓库,这个时候会提示:
输入用户名
输入密码
(解释:刚才我遇到这个问题,现在已经解决了,问题没有截图)
1.3.2 解决方法
- 用户名:就是gitcode的用户名,比如我叫:smart_boy_,那么就把这个写上去。
- 密码:这个密码是在gitcode上生成的令牌。下面详细讲一下过程。
-
在“访问令牌”,新建访问令牌。
-
最后点击
新建访问令牌
。
-
之后会显示你的令牌,相当于一个密码,一定要保存好这个令牌。上面的密码一栏就写这个
令牌
就可以了。
-
之后就可以git push
到远程仓库了。
二、Git常用命令
Git 配置有三个层级:
- 系统级 (
--system
) - 对所有用户生效 - 全局级 (
--global
) - 对当前用户的所有仓库生效 - 仓库级 (
--local
) - 只对特定仓库生效
- 系统全局配置(–system):包含了系统内的所有⽤户和所有仓库的配置信息,系统配置存放在Git安装⽬录下C:\Program Files\Git\etc\gitconfig。
- ⽤户全局配置(–global):包含了当前⽤户的所有 Git 仓库配置,它存放在⽤户⽬录下:C:\Users[系统⽤户名].gitconfig。
- 仓库配置(–local):仓库级配置仅适⽤于某个 Git 仓库,它存放在项⽬⽬录下:项⽬根⽬录/.git/config
⽽这三个配置⽂件的优先级为:
系统全局配置 < ⽤户全局配置 < 仓库配置
2.1 配置命令
2.1.1 查看当前 Git 配置的所有信息
git config --list
或者
git config -l
最后一行输入q
,就可以退出。
2.1.2 查看系统全局配置
git config --system --list
2.1.3 修改系统全局的默认分支
比如修改为main。
git config --global init.defaultBranch main
2.1.3.1 切换分支
在 Git 中切换分支可以使用 git checkout 或较新的 git switch 命令。
git switch 想要切换的分支名
git checkout 想要切换的分支名
2.1.3.2 切换分支操作详细演示
2.1.3.2.1 本地切换分支
先查看一下当前的所有分支:
git branch # 查看本地分支
# 或查看包括远程分支在内的所有分支
git branch -a
2.1.3.2.2 切换到远程分支(并在本地创建对应的分支)
如果要切换到一个仅存在于远程的分支(如 origin/release),可以直接创建并切换到本地对应分支:
# 方法 1: checkout
git checkout -b 本地分支名 origin/远程分支名# 方法 2: switch(更推荐)
git switch -c 本地分支名 origin/远程分支名
2.1.3.2.2 快速切换回上一个分支
git checkout -
# 或
git switch -
- 注意事项
- 切换分支前,确保当前分支的修改已提交(git commit)或暂存(git stash),否则未提交的修改可能会被带到新分支。
- 如果分支名称包含特殊字符(如 /),直接输入即可,Git 会自动识别。
2.1.4 查看当前用户全局配置
git config --global --list
2.1.5 查看当前仓库配置信息
git config --local --list
2.1.6 配置用户名和邮箱
git config --global user.name "你的名字"
这里,“你的名字” 可以自由修改。
git config --global user.email "你的邮箱"
同样,邮箱可以自己修改。
2.1.7 删除用户名或者邮箱
删除全局配置:
git config --global --unset user.name
git config --global --unset user.email
重新设置正确的全局配置
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
如果某些仓库需要特殊配置,可以单独设置:
git config user.name "Repo-specific Name"
git config user.email "repo.email@example.com"
2.2 其他常用命令
2.2.1 创建仓库
对于没有git仓库的工程,可以在终端执行下面的命令创建仓库。
git init
2.2.2 查看当前状态
git status
可以看到当前工作目录下是否有文件已修改,是否跟踪。
- Changes to be committed表⽰已经添加到暂存区的⽂件。
- Changes not staged for commit表⽰已经修改但没有添加到暂存区的⽂件。
- Untracked files表⽰未跟踪的⽂件。就是新建的文件,还未对其进行跟踪。
新建了文件a.h
,之后再次执行git status
命令。
执行git add .
之后再次执行git status
2.2.3 添加到暂存区
git add .
后面加.
表示全部文件都添加到暂存区,如果只添加一个文件,可以加文件名。
2.2.4 将暂存区的内容提交到本地仓库
git commit -m "描述本次修改的内容"
也可以有如下参数:
- 参数-a, 表示直接从工作区提交到版本库, 略过了git add步骤, 不包括新增的文件
git commit -a
- 提交暂存区的指定文件到仓库区
git commit filename
- 使用一次新的commit, 替代上一次提交, 会修改commit的hash值( id)
git commit --amend -m "描述本次修改的内容"
比如说,我前面已经提交了一次,现使用git commit --amend -m "描述本次修改的内容"
命令,又提交了一次。
此时查看一下VScode。
两个版本被合并了。
在git bash查看一下状态。
查看一下修改内容:
之后测试一下git commit -a
命令。
看下提交信息:
去VScode里看下。
我们手动提交一次。
git push
最后测试一下git commit filename
这个命令。比如我们再新建两个文件。
但只提交b.c。先将其都放进暂存区。
这个时候对b.h进行修改。看下修改的内容。
再次跳过git add b.h
,直接提交到本地仓库。
看下VScode。
我们使用命令来操作。
上面错别字,“推送到”。
2.2.5 推送到远程仓库
上面已经讲过了推送的命令:
git push
2.2.6 查看代码的修改部位
git diff
如果只看某一个文件的修改,可以加上文件名
,比如:
git diff a.c
举例:
删除的⾏:会⽤减号(-)标记。
新增的⾏:会⽤加号(+)标记。
2.2.7 查看提交记录
上面已经提到了这个命令。
git log
另外,可以有其他的用法。
- 查看日志(比如,最近5条), 不带参数-n则显示所有日志
git log -n5
- 参数“–oneline”可以让日志输出更简洁( 一行)
git log -n20 --oneline
- 参数“–graph”可视化显示分支关系
git log -n20 --graph
- 显示某个文件的版本历史
git log --follow [file]
2.3 操作远程仓库
2.3.1 本地仓库关联远程仓库
git remote add origin <远程仓库URL>
以HTTPS为例,它的命令是这样的:
git remote add origin https://gitcode.com/smart_boy__/Git_Test.git
以SSH为例,它的命令是这样的:
git remote add origin git@gitcode.com:smart_boy__/Git_Test.git
2.3.2 推送到远程仓库
git push 是将你本地仓库的更改推送到远程仓库的命令。通常⽤于在你本地完成⼀些修改(如提交git commit)后,将这些更改同步到远程仓库,使其他协作者可以看到你所做的更改。
git push <远程仓库名> <本地分支名>:<远程分支名>
<远程仓库名>
:通常是origin
(默认远程仓库名称),也可以是其他自定义的远程仓库别名。<本地分支名>
:要推送的本地分支名称(如main
、dev
)。<远程分支名>
:远程仓库的目标分支名称(可与本地分支名不同)。
2.3.2.1 推送本地分支到远程同名分支
git push origin main:main
- 将本地
main
分支推送到远程origin
的main
分支。 - 如果远程分支不存在,Git 会自动创建它。
2.3.2.2 推送本地分支到远程不同名分支
git push origin feature-login:remote-feature
- 将本地
feature-login
分支推送到远程remote-feature
分支。
2.3.2.3 省略远程分支名(默认同名)
git push origin main
- 等价于
git push origin main:main
。
2.3.2.4 删除远程分支
git push origin :remote-branch
- 通过省略本地分支名(留空
:
左侧),推送一个“空分支”到远程,从而删除远程分支remote-branch
。
实际操作:
我在GitCode里面新建了远程分支,名为dev。之后再本地的git bash拉取一次远程仓库。
此时我去查看远程仓库的dev分支,发现确实没有了。
2.3.2.5 强制推送(覆盖远程分支)
git push --force origin main:main
- 使用
--force
(或-f
)强制覆盖远程分支(谨慎使用!)。
2.3.2.6 设置默认推送
git push -u origin 分支名
(绑定后可直接用 git push)
git push -u origin "main"
或者直接:
git push
2.3.2.7 推送所有分支
- 使用
--all
推送所有本地分支:
git push --all origin
2.3.3 查看关联的远程仓库
git remote -v
2.3.4 删除已关联的远程仓库
git remote remove origin
执行完成再次查看一下远程仓库。发现没有了,就成功了。
2.3.5 拉取远程仓库
git pull <远程仓库名> <远程分支名>
这⾥的远程仓库名,通常是origin,表⽰默认的远程仓库。⽽远程分⽀名,通常是main或master,表⽰远程仓库的分⽀。
git pull origin main
当然,很多时候我们会省略掉远程仓库和分⽀名,git pull会默认从你当前分⽀所关联的远程仓库和分⽀中拉取更新。
2.3.6 实际工作流示例
场景:将本地开发分支推送到远程仓库
-
查看本地分支和远程状态:
git branch -v # 查看本地分支 git remote -v # 查看远程仓库
-
推送本地分支到远程(假设远程分支名与本地相同):
git push origin dev:dev
-
如果远程分支不存在:
# 首次推送时需指定远程分支名 git push --set-upstream origin dev:dev # 后续推送可简化为 git push origin dev
本地和远程都没有dev分支,我先在本地创建一个分支dev,之后推送到远程仓库,由于远程仓库也没有这个分支,所以使用这个命令
git push --set-upstream origin dev:dev
。 -
如果推送失败(因远程有更新):
git pull origin dev # 先拉取远程变更 git push origin dev # 重新推送
本文结束,欢迎点赞、收藏、转发、关注!