Git learning
参考链接:
极简版
设置本地Git走代理
在Git bash中输入下列命令(Clash默认端口是7890)
1 | //设置全局代理 |
拉取远程仓库
新建一个文件夹,用于存储仓库,用下列命令拉取远程仓库:
1 | git clone https://你的仓库名称 |
拉取之后,本地会出现一个文件夹,即远程的仓库。
做修改
在本地做修改。
首先,用下列命令进入仓库:
1 | cd 你的仓库名称 |
然后初始化:
1 | git init |
接下来就可以修改本地仓库了。
提交修改
提交修改到暂存区
1 | # 提交修改单个文件 |
提交修改到版本库
1 | git commit "你的提交信息" |
推送到远程仓库
origin 是 Git 中远程仓库的默认名称。通常,当你克隆一个远程仓库时,Git 会自动将该远程仓库命名为 origin。
可以下列命令查看当前仓库名称:
1 | git remote -v |
下面是推送修改到远程仓库:
1 | git push origin master |
Git的结构
Git是一个分布式版本控制系统,它的主要结构包括工作区(Working Directory)、暂存区(Staging Area,也称为 Index 或 Cache)和版本库(Repository)。
1. 工作区(Working Directory)
这是你在本地计算机上实际操作的文件目录。当你克隆一个Git仓库时,Git会将版本库的内容提取到工作区。你在这里进行代码的编辑、删除、创建等操作。
2. 暂存区(Staging Area 或 Index)
暂存区是一个中间层,它保存你希望在下一次提交(commit)时记录的文件快照。你可以通过 git add 命令将工作区的更改放入暂存区,准备提交到版本库。暂存区帮助你组织和选择哪些更改将包含在下一个提交中。
3. 版本库(Repository)
版本库存储项目的所有历史记录,包括所有提交的快照、分支和标签等。版本库通常分为两部分:
- 本地版本库:在本地计算机上,包含
HEAD指针(指向当前分支的最新提交)和.git目录,.git目录中保存了所有的版本信息和配置文件。 - 远程版本库:例如在GitHub、GitLab、Bitbucket等平台上的仓库,允许多个开发者协作。
Git结构图示
1 | +---------------------+ |
工作流概述
- 编辑文件:在工作区中修改文件。
- 暂存更改:使用
git add将更改添加到暂存区。 - 提交更改:使用
git commit将暂存区的更改提交到本地版本库。 - 推送更改:使用
git push将本地版本库的更改推送到远程版本库,以便其他人可以看到你的更改。
通过这个结构,Git允许开发者在本地工作、版本控制和协作开发,能够高效地管理项目的演变过程。
常用命令
创建工作版本库并且进入目录
1 | mkdir learngit |
初始化
1 | git init |
将工作区的更改放入暂存区
将某一文件的更改放入暂存区
1 | git add [file] |
将所有文件的更改放入暂存区
1 | git add . |
将暂存区的更改提交到本地版本库
1 | git commit -m "[message]" |
提交所有已跟踪的文件的更改到本地仓库(不需要先使用 git add)
1 | git commit -a -m "[message]"" |
查看提交的历史记录
显示从最近到最远的提交日志
1 | git log |
还可以用一下命令查看更为简洁的信息
1 | git log --pretty=oneline |
一大串数字如commit 39822faceaf91b7c546d8e886ddb55d114e5d777是提交的版本号(commit id)。
回退到上一版本
1 | git reset --hard HEAD^ |
参数:
—hard/—soft/—mixed
hard回退到上个版本的已提交状态
soft回退到上个版本的未提交状态
mixed回退到上个版本的已添加但是未提交状态
HEAD^
HEAD当前版本的指针,表示当前版本
HEAD^上一个版本
HEAD^^上上一个版本
HEAD~100上100个版本
39822fa 也可以直接写你的版本号,没必要写全,前几个就行
回到过去后查看未来的版本ID
1 | git reflog |
显示当前工作目录和暂存区的状态
1 | git status |
查看工作区和暂存区之间的差异
1 | git diff |
查看暂存区和最后提交之间的差异
1 | git diff --stage |
撤销某一文件的保存(适用于git add之前)
1 | git checkout -- "Yourfilename.txt" |
两种可能
一种是Yourfilename.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是Yourfilename.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
git checkout是用版本库的状态替换为
撤销某一文件的保存(适用于git commit之前)
1 | git restore --staged <file> |
从暂存区中移除指定的文件,但保留工作目录中的更改,,如果想撤销工作目录的修改,需要再用一次git checkout -- <"filename">
删除工作目录和暂存区的文件
1 | git rm <filename> |
如果用的是shell命令rm,只会删除本地的工作目录里面的文件,并不会影响到暂存区的文件。
使用git rm删除文件后,这个删除操作会被记录为一个更改,需要通过git commit命令提交。这意味着删除操作会被版本控制跟踪。使用git rm <filename>意味着还需要之后还要再用git commit命令(如果想彻底删除)
初始化
1 | git init |
初始化
1 | git init |
初始化
1 | git init |


