要学会git,首先要对git的四个工作区,以及他们的作用和文件在4个工作区内的转换有个简单的了解
拓展阅读:关于git的命令,如果想要理解得更加详细深刻可以看git官方文档 https://git-scm.com/
git的工作区
参考:https://www.bilibili.com/video/BV1FE411P7B3?p=7&share_source=copy_web
git有三个区,分别是
工作区(working directory)
这个就是我们写的代码,我们打开的程序,我们硬盘上/服务器上的程序,能看到的文本,就是这个区
暂存区(stage/index)
暂时存放数据,给你吃后悔药的机会,做一个缓冲,将文件从工作区到暂存区使用git add
命令
拓展阅读:关于暂存区必要性的理解:https://blog.csdn.net/qq_32452623/article/details/78417609
版本库(cmooit history/repository)
本地的仓库,提交(commit)的代码
远程仓库(remote/origin)
就是我们在GitHub或者是码云上面创建的云端仓库
比较三个区域中的文件不同
git diff | 工作区 vs 暂存区 |
---|---|
git diff head | 工作区 vs 版本库 |
git diff --cached | 暂存区 vs 版本库 |
git的基本应用:从创建本地git仓库到成功push到github上
通过在本地创建一个git仓库,写入更改代码,到push到github上演示一个简单的、不需要处理冲突的git操作流程,来熟悉基本的 git命令
将介绍:
- git add
- git commit
- git push
- git pull
- git branch
重要的基础命令
commit前必做,git status
git status
git status […] [–] […]
- 可以列出当前目录所有还没有被git管理的文件
- 被git管理(git add)且被修改但还未提交
所以在git commit
之前,先git status
是个好习惯!
但是status会对工作区内的所有文件进行检查,如果有很多编译后的文件就会产生很多不必要的信息,可以将不想管理的文件添加到.gitignore
中去,*
可以作为通配符,代表所有
*.pyc
*.tmp
参考:https://www.yiibai.com/git/git_status.html
显示提交记录 git log
git log
用来显示 提交记录
显示可引用的记录 git reflog,恢复错误的回退,好用的后悔药
git reflog
命令是用来恢复本地错误操作很重要的一个命令,他可以显示可引用的历史版本记录
与git log的不同之处
git log只会显示HEAD
以及他的父节点,但是如果版本发生过回退现象,那么git log
就无法显示回退的那些节点,而git reflog
可以
参考:https://www.jianshu.com/p/7e4cef3863e7
reflog
非常有用的地方就是可以回退错误的回退!
比如说进行了git reset
或者是git checkout
将版本进行了回退,这时候又后悔了,不想回退了,虽然git log
里找不到记录,但是git reflog
里可以找到你的回退操作和回退之前的版本号,只要git checkout 版本号
即可吃下这颗后悔药
git diff
比较不同commit之间的不同
git diff commit1 commit2
会显示后者-前者的差异
基本流程
初始化本地仓库
首先本地中创建一个文件夹,比如learn_git
然后进入文件夹中,对git进行初始化
git init
这样就将learn_git这个文件夹以及他的所有子文件夹初始化为一个本地git仓库
为了方便演示,我们创建一个test.py
文件,并且在文件中输入语句
print('init git repo')
add 加入暂存区
这时虽然我们在工作区中加入了文件,但是没有将文件加入暂存区,这个时候做出的改动git是不记录的
git add test.py
这个时候通过git diff
命令就可以查看到暂存区与版本库的不同
在将文件加入暂存区后,我们可以放心的对文件进行修改
比如加入
print('first commit')
提交 git commit 将暂存区的文件提交到版本库
文件修改完毕,我们需要将这个改动保存为一个版本,那么记得先
git status
这个提示的意思是,与上一次提交到暂存区的文件相比,工作区的文件有了新的改动,如果不想保留这个改动,就git restore
想要保留这个改动,增加到暂存区,就要git add
如果什么操作都不做,直接git commit
的话,只会提交只有print('init git repo')
的那个文件进入版本库,这里我们想要提交最新版本的代码到版本库,所以
git add test.py
然后git commit
commit的后悔药 git commit --amend
如果提交了后有想追加的文件,或者是想修改commit的说明信息,就用这个命令
添加远程仓库
先在github上创建一个仓库,复制仓库的HTTP地址,然后回到本地
origin_learn_git
是给这个远程仓库取的别名,随便取
git remote add origin_learn_git https://github.com/DejaVuyan/learn_git.git
push到远程仓库
git push -u origin_learn_git main
将当前所在的分支推送到远端的main
分支,
然后遇到报错
这个错误的但是本地没有找到叫做main
的分支,本地是master
但是github觉得这个名字有歧视意味,所以改成main
了
git branch -M main
将当前分支改成main
然后再继续push就没有问题了
系统会显示要输入用户名和密码
注意这里的密码要用token
代替,而不是github密码
生成方法见:https://blog.csdn.net/weixin_41010198/article/details/119698015
查看远程仓库地址
git remote -v