Github学习心得
Github学习心得
Git简介
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,也是[Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds/9336769)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
可以前往Git官网(https://git-scm.com)安装对应系统的Git
安装成功后进入终端(Terminal),键入git --version
会显示出对应的git版本信息
Git运作的整体架构
Git本地的三个工作区域,工作空间(Working Space)、暂存区(Stage/Index)、本地仓库(Repository/Git Repository)。若再加上远程仓库(Remote Directory),大致关系如上图所示
- Workspace:工作区,代码增删修改即时更改的区域
- Index/Stage:暂存区,用来临时更改工作区的代码改动,本质上是一个文件(可以视为多个文件二进制码集合成的一个黑盒子)
- Repository:本地仓库,存放本地commit内容的位置(存在多个历史记录的版本),其中HEAD默认指向了最新放入仓库的commit
- Remote:远程仓库,远端托管代码的服务器是实现多人快速搭建项目的核心
暂存区和本地仓库存储内容都在仓库目录下的.git
隐藏文件夹下
配置指令
git config --list
查看当前git配置
git本地仓库配置默认存储在用户目录\.gitconfig
文件下
git系统用户配置默认存储在Git安装目录\etc\gitconfig
下
可以采用以下方式进行用户的名称以及邮箱配置
git config [--global] user.name [用户名称]
git config [--global] user.email [用户邮箱]
git config -l # 查看配置
git config --[global/system] --list
每次git进行提交时都会使用该信息
工作流程
- 工作空间添加修改删除文件
- 将需要进行版本管理的文件放入暂存区
- 将暂存区文件提交到git本地仓库
Git 仓库搭建
项目搭建
-
创建新项目
-
创建项目的目录(即对应的文件夹,最好不要包括中文)
-
进入目录后,输入
git init
-
-
克隆已有项目
- 输入
git clone [url]
该url可以从任意远程仓库中获取,如下图为Github与Gitee中获取仓库链接的地方
- 输入
Git文件操作
文件状态
- Untraked:未跟踪状态,此刻并没有被加入到git仓库,可以通过
git add
使它的状态变为Staged - Unmodify:如果这个文件在库中留有副本,且这与本地库中一致 则为该状态,此时可以使用对它修改使其变为Modified,也可以使用
git rm
使其重新变为Untracked(如果此时add,不会使其变为Staged) - Modified:如果这个文件在库中留有副本,且这与本地库中不一致 则为该状态,可以使用
git checkout
用暂存区或某次commit的文件代替工作区文件(可以看作修改的一种撤销操作)使其状态变为Unmodify,也可以使用git add
使其状态变为Staged - Staged:暂存状态,可以使用
git commit
将暂存区内容提交到本地库中,使得文件变为Unmodify,或者使用git reset HEAD [文件名称]
让暂存区内容回滚(相当于从未add过了),使得该文件变为Modify
忽略文件
建立.gitignore
文件,使得一些文件不被纳入版本控制范围(例如使用git add .
命令时)、
文件规则
#
为注释符- 可以使用 linux通配符
!
代表例外规则,指该文件符合已指定规则,但不想被忽略(即优先级高于指定规则)/
放在最前面,表示忽略指定路径下的文件/
放在最后面,表示忽略该目录下的子目录内的文件
Git命令
工作区操作
HEAD
往往指向当前所在分支中的最后一次commit
,Head^^^...
代表过去前的第X个版本,X等同于^的数量
git checkout [文件1] [文件2]... # 恢复暂存区文件到工作区
git checkout [commithash] [文件1]... # 将指定commit的文件恢复到工作区
git reset --hard # 同时重置HEAD,暂存区与工作区
git reset --mixed # 同时重置HEAD,暂存区(默认)
git reset --soft # 只重置HEAD
git diff # 查看暂存区与工作区的不同
git diff --cached # 查看暂存区与HEAD的不同
git diff HEAD # 查看工作区与HEAD的不同
git diff [commithash] # 将工作区内容与某次commit进行比较
如果名称既是某个分支名,又是某个文件名,需要使用--
来说明这是一个文件路径
暂存区管理
git add [文件1] [文件2] ... # 向暂存区中添加指定文件
git add [目录1] [目录2] ... # 向暂存区中添加指定目录
git add . # 向暂存区添加当前目录下所有文件
git rm [文件1] [文件2] ... # 向暂存区中删除指定文件
git rm --force # 强制删除
git rm --cached # 删除暂存区中的文件,但不对工作区改动
git mv [Source] [Destination] # 移动文件
git status # 查看暂存区状态
本地库操作
git commit -m [备注信息] # 提交暂存区到本地仓库
git commit -a # 可以把未进行add命令的修改一并提交到本地库
git commit # 可以用编辑器对此次提交进行更细致的备注
git commit 规范
<type>(<scope>): <subject>
// 空行
<body>
// 空行
<footer>
type一般包括
- feat 新功能
- fix 补修bug
- docs 修改文档
- style 格式化代码结构(不影响原代码正常运行)
- refactor 重构代码(更改代码,但逻辑结构与原有结构一致)
- chore 构建过程或辅助工具改动
分支管理
git branch [新分支名] # 创建新分支
git branch -v # 显示本地所有分支
git branch -r # 显示远程所有分支
git branch -a # 显示本地远程所有分支
git branch -d [分支名] # 删除指定分支 D为强制删除
git checkout [分支名] # 切换到指定分支
git checkout -b [新分支名] # 创建并切换到新分支
git checkout --track [远程地址别名] [远程地址] # 创建本地同名分支,并track该远程分支
git merge [分支名] # 合并指定分支到当前分支
分支切换时,对应的工作区和暂存区也会被切换
冲突处理
可以参考博客(https://blog.csdn.net/qq_27905183/article/details/78575247)
远程库操作
git clone [远程库地址] # 将远程库克隆到本地目录下
git fetch [远程库地址] # 获取远程库所有改动
git pull [远程地址别名] [本地分支名] # 等同于fetch+merge
git remote -v # 显示远程地址别名
git remote add [远程地址别名] [远程地址] # 添加远程地址
git push [远程地址别名] [本地分支名] # 上传本地分支到远程仓库
git push --force # 强制推送
git push -all [远程地址别名] # 将本地所有分支推送到远程仓库
git push --set-upstream [远程地址别名] [远程地址] # 同时设置track的远程分支
git push -u [远程地址别名] [远程地址] # 有多个track的远程分支时,设置默认push的远程分支
Git track
其实在从远程分支分出来的分支都是跟踪分支(track),当对该分支进行 push 和 pull 时,如果该分支和远程分支同名,git会知道推送到远程哪个分支,从哪个远程分支同步到本地分支。每次克隆一个仓库时,本地都会新建一个master
分支来track 远程的origin/master
。如果不同名,我们需要人为指定 git push origin branch_name
Github
Gitee类似,且为中文这里就不详细介绍了
是一个开源且免费的远程仓库,可以托管代码,便于实现项目的团队开发
创建远程仓库
点击New repository
创建自己的远程仓库
设置仓库属性
在Repository name
中可以设置自己的远程仓库名称,Description
中添加对于仓库的描述,Public/Private
决定了仓库内容是否被公开(Private的仓库不可以设为静态网页供他人访问)
常常还会✔上Add a README file
为自己的仓库建立一个介绍文档,让访问者更加迅速、便捷地了解到项目内容
设置绑定本机SSH密钥
这步可以实现免密码登录,当本机与远程仓库进行文件传输时,远端服务器会用已存储的公钥进行检测,如果有匹配的私钥则可以免密传输
生成SSH密钥
默认密钥生成在本地用户目录\.ssh
下
其中私钥为id_rsa
,公钥为id_rsa.pub
ssh-keygen -t rsa # 生成本机ssh密钥
之后一路点击回车即可
下图是Github与Gitee中添加SSH公钥的面板(添加id_rsa.pub
中内容)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具