GIT学习
一、Github注册
Git安装和Github简明教程可以参考这篇文章:
二、Git使用
git的四个区域
git本地有三个工作区域:工作区(Working)、暂存区(Stage/index)、资源库(Repository)和远程的git仓库(Remote)
Workspace: 工作区,自己存放项目代码的地方
Index / Stage:暂存区,临时存放你的改动,事实上它只是一个文件,保存即 将提交到文件列表信息
Repository: 仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote: 远程仓库,托管代码的服务器
git status 命令
git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。
通常我们使用 -s 参数来获得简短的输出结果。
git status -s 状态码解析
A: 你本地新增的文件(服务器上没有).
C: 文件的一个新拷贝.
D: 你本地删除的文件(服务器上还在).
M: 文件的内容或者mode被修改了.
R: 文件名被修改了。
T: 文件的类型被修改了。
U: 文件没有被合并(你需要完成合并才能进行提交)。
X: 未知状态(很可能是遇到git的bug了,你可以向git提交bug report)
?:未被git进行管理,可以使用git add file1把file1添加进git能被git所进行管理
git diff 命令
git diff 命令比较文件的不同,即比较文件在暂存区和工作区的差异。
git diff 命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。
git diff 有两个主要的应用场景。
- 尚未缓存的改动:git diff:显示暂存区和工作区的差异
- 查看已缓存的改动: git diff --cached:或者--staged,显示暂存区和上一次提交(commit)的差异
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff --stat
git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。
git add 命令
git add 命令可将该文件添加到暂存区。
git commit 命令
前面章节我们使用 git add 命令将内容写入暂存区。
git commit 命令将暂存区内容添加到本地仓库中。
-a 参数设置修改文件后不需要执行 git add 命令,直接来提交。
撤销未提交的修改
git checkout <路径/文件名>:适用于没有执行过add命令的文件
git reset HEAD <路径/文件名>:适用于没有执行过add命令的文件
Git 分支管理
git branch (branchname):创建分支命令
git checkout (branchname):切换分支命令
git merge:合并分支命令
git branch: 没有参数时,会列出你在本地的分支。
git checkout -b (branchname) :我们可以使用这个命令来创建新分支并立即切换到该分支下,从而在该分支中操作。
git branch -d (branchname):删除分支命令
git branch -r:查看远程所有分支
git remote -v:显示所有远程仓库
git pull 命令
git pull 命令用于从远程获取代码并合并本地的版本。
git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写。
命令格式如下:git pull <远程主机名> <远程分支名>:<本地分支名>
git push命令
git push 命用于从将本地的分支版本上传到远程并合并
命令格式如下:git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:git push <远程主机名> <本地分支名>
git reset命令
摘自《Git权威指南》
Git reset 是Git最常用的命令之一,也是最危险最容易误用的命令。
用法一:git reset [-q] [<commit>] [--] <paths>...
用法二:git reset [--soft --mixed | --hard | --merge | --keep] [-q] [<commit>]
以上两种用法,<commit>都是可选项,可以使用下引用或提交ID,如果省略则相当于使用了HEAD的指向作为提交ID。
上面的两种用法的区别在于,第一种在命令中包含路径<paths>。为了避免路径和引用(或者提交ID)同名而发生冲突,可以在<paths>前用两个连续的短线(减号)作为做分隔。
第一种用法(包含了路径<paths>的用法)不会重置引用,更不会改变工作区,而是用指定提交状态(<commit>)下的文件(<paths>)替换掉暂存区中的文件。例如命令git reset HEAD <paths>相当于取消之前执行的git add <paths>命令时改变的暂存区。
第二种用法(不使用路径<paths>的用法)则会重置引用。根据不同的选项,可以对暂存区或工作区进行重置。参照下面的版本库模型图,来看一看不同的参数对第二种重置语法的影响。
git stash命令
摘自《Git权威指南》
git stash用于保存和恢复工作进度。
git stash
保存当前的工作进度。会分别对暂存区和工作区的状态进行保存。
git stash list
显示进度列表。此命令显然暗示了git stash 可以多次保存工作进度,并用在恢复时候 选择。
git stash pop [--index] [<stash>]
如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的工作 进度列表中清除。
如果提供<stash>参数(来自git stash list显示的列表),则从该<stash>中恢复。恢复完毕 也将从进度列表中删除<stash>。
选项--index除了恢复工作区的文件外,还尝试恢复暂存区。这也就是为什么在本章一 开始恢复进度的时候显示的状态和保存进度前的略有不同。
git stash [save [--patch] [-k|--[no]keep-index] [-q|--quiet] [<message>]]
这条命令实际上是第一条git stash命令的完整版。即如果需要在保存工作进度的时候使 用指定的说明,必须使用如下格式:
git stash save “message...”
使用参数--patch会显示工作区和HEAD的差异,通过对差异文件的编辑决定在进度中 最终要保存的工作区的内容,通过编辑差异文件可以在进度中排除无关内容。
使用-k或者--keep-index参数,在保存进度后不会将暂存区重置。默认会将暂存区和工 作区强制重置。
git stash apply [--index] [<stash>]
除了不删除恢复的进度之外,其余和git stash pop 命令一样。
git stash drop [<stash>]
删除一个存储的进度。默认删除最新的进度。
git stash clear
删除所有存储的进度。
git stash branch <branchname> <stash>
基于进度创建分支。
git stash无法暂存新建文件
默认情况下,git stash 命令只暂存 Git 已追踪的文件更改,不会暂存未追踪的文件和 .gitignore 文件中忽略的文件
解决办法:使用git add 文件名 对新建文件进行追踪,再进行git stash 操作即可。
Git 查看提交历史
Git 提交历史一般常用两个命令:
- git log - 查看历史提交记录。--当使用git的时候,不小心进入了编辑模式,出现end,可以使用:q可以退出,返回命令行模式
- git blame <file> - 以列表形式查看指定文件的历史修改记录。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)