git入门
git下载与安装#
- 下载:官网链接,下载操作系统对应的版本
- 安装:按默认配置next
- 验证安装:文件夹内右键空白处,选择Git Bash,
git --version
查看git版本
git概述#
Git是分布式版本控制系统(Distributed Version Control System, 简称DVCS)
- 本地仓库:开发人员自己电脑上的Git仓库
- 远程仓库:是在远程服务器上的Git仓库
- Clone:克隆,将远程仓库复制到本地
- Push:推送,将本地仓库代码上传到远程仓库
- Pull:拉取,将远程仓库代码下载到本地仓库
git工作流程#
- 从远程仓库克隆代码到本地仓库
- 从本地仓库中checkout代码,进行代码修改
- 在提交前将代码提交到暂存区
- 提交到本地仓库,本地仓库中保存了修改的各个历史版本
- 将代码pull到远程仓库
git常用命令#
环境配置#
当安装Git后首先要设置用户信息,因为每次Git提交都会使用该用户信息
用户信息保存在C:\Users\$USER\.gitconfig
文件中
- 设置用户信息
- 名称:
git config --global user.name "hangkai"
- 邮箱:
git config --global user.email "897936401@qq.com"
- 名称:
- 查看配置信息:
git config --list
- 查看用户名:
git config user.name
获取git仓库#
要使用Git对代码进行版本控制,首先要获得Git仓库
获取Git仓库的两种方式
- 在本地初始化一个Git仓库
- 从远程仓库克隆
工作目录、暂存区、版本库的概念#
- 版本库:.git文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件等
- 工作目录(工作区):包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
- 暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
Git工作目录下文件的两种状态#
- untracked未跟踪(未被纳入版本控制)
- tracked已跟踪(被纳入版本控制)
- Unmodified未修改状态
- Modified已修改状态
- Stage已暂存状态
本地仓库操作#
git status
:查看文件状态
git status -s
:输出更加简洁
git add 文件名
:将未跟踪的文件加入到暂存区
git reset HEAD 文件名
:取消暂存,将已跟踪文件变为未跟踪
git commit -m "日志信息"
:将暂存区的文件加入到本地仓库
git commit -a -m "日志信息"
:加-a等于add+commit,可以不用先add
git commit
:将日志信息写在编辑器内,i键切换插入模式,esc退出插入模式,:wq保存并退出
git rm 文件名
:删除工作区和暂存区中的文件,未删除本地仓库。若直接界面删除工作区文件,则需先add到暂存区,再commit到本地仓库
git log
:查看日志记录,enter查看未显示的日志信息,q退出日志界面
将文件添加至忽略列表,有些文件无需纳入Git管理,也不希望他们出现在未跟踪列表。比如日志文件,或者编译过程中创建的临时文件等。在这种情况下我们可以创建一个.gitignore的文件(文件名固定),列出要忽略的文件模式。
通过linux命令创建:touch .gitignore
# 这是注释 //#键注释
*.a //忽略所有.a结尾的文件
!lib.a //lib.a文件需要Git管理
/TODO //忽略当前目录下面名为TODO的文件
build/ //忽略build目录下面所有的文件
doc/*.txt //忽略doc目录下面所有的txt文件
doc/**/*.pdf //忽略doc目录下以及子目录下所有pdf结尾的文件
远程仓库操作#
查看远程仓库#
git remote
:查看远程仓库(clone的本地仓库默认配置远程仓库origon;init的本地仓库默认没有对应的远程仓库)
git remote -v
:查看远程仓库的名称和(抓取和推送)地址
git remote show 远程服务器名
:查看指定远程仓库更详细的信息
添加远程仓库#
git remote add <shortname> <url>
(即添加当前本地仓库和远程仓库的关联关系)
从远程仓库克隆#
Git克隆是该Git服务器上几乎所有数据(包括日志信息、历史记录等),不仅仅是复制工作所需要的文件。当你执行
git clone
命令的时候,默认配置下远程仓库中的每个文件的每个版本都将被拉取下来
git clone <url>
移除无效的远程仓库#
git remote rm 远程仓库名
:此命令只是从本地移除远程仓库,并不会真正影响到远程仓库(即删除本地和远程的关联关系)
从远程仓库拉取和抓取#
git fetch 远程仓库名 分支名
:从远程仓库获取最新版本到本地仓库,不会自动merge,即本地仓库有工作区无(远程仓库名和分支名可以省略,默认origon master)
git merge 远程仓库名/分支名
:从本地仓库提取到工作区
git pull 远程仓库名 分支名
:从远程仓库获取最新版本到本地仓库并merge到本地仓库,相当于fetch+merge
注意:当本地仓库不是远程仓库的克隆,而是本地创建的仓库并且仓库中存在文件,这时从远程仓库pull数据会报错(fatal:refusing to merge unrelated histories),解决此问题可以在git pull
命令后加入参数--allow-unrelated-histories
推送到远程仓库#
git push 远程仓库名 分支名
Git分支#
几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开,以免影响开发主线。Git的master分支并不是一个特殊分支,它和其他分支没有区别。之所以几乎每个仓库都有master分支,是因为
git init
命令默认创建它。
- 查看分支
git branch
:列出所有本地分支git branch -r
:列出所有远程分支git branch -a
:列出所有本地分支和远程分支
- 创建分支
git branch 分支名
:创建本地分支,以当前分支为基础创建的分支
- 切换分支
git checkout 分支名
:切换本地分支
- 推送至远程仓库分支
git push 远程仓库名 分支名
- 合并分支
注意:如果在两个分支中,对同一个文件同一个部分进行了不同的修改,Git会提示文件冲突。需要自己修改冲突文件,执行git add
来标识冲突已解决,进入日志编辑器,输入:wq退出git merge 远程分支名
:(在master分支下合并b1分支的内容:git merge b1
)
- 删除分支
注意:删除分支时需要切换到别的分支再删除git branch -d 分支名
:删除本地分支git branch -D 分支名
:如果要删除的分支有修改,并且没有合并到其他分支上或者推送到远程分支,需要把d改为D才能强行删除git push 远程仓库名 -d 分支名
:删除远程分支
Git标签#
像其他版本控制系统(VCS)一样,Git可以给历史中的某一次提交打上标签。标签是指某个分支某个时间点的状态,通过分支可以快速切换到标记时的状态
git tag 标签名
:创建一个标签git tag
:列出已有标签git show 标签名
:查看某一个标签信息git push 远程仓库名 标签名
:将标签推送至远程仓库git checkout -b 分支名 标签名
:新建一个分支指向某个标签git tag -d 本地标签名
:删除本地标签git push 远程仓库名 :refs/tags/远程标签名
:删除远程标签
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验