Git的工作机制
Git的分区包括工作区、暂存区、本地仓库(本地版本库)、远程仓库(远程版本库)。
工作区
工作区(Workspace)即本地代码所在的目录,在工作区开发,同时也是存放 .git/ (本地仓库)的目录。暂存区
暂存区(Index/Stage)是工作区和本地仓库的缓存空间,里面记录着即将提交给本地仓库(版本库)的文件修改信息,就先放一下,.git/ 目录里的index文件就是暂存区。本地仓库
本地仓库(Repository)也称本地库或版本库,存放了本地的所有版本(commit提交记录),本地仓库的文件都在 .git/ 目录中。远程仓库
远程仓库(Remote)在网络上,GitHub、Gitee和GitLab都能创建远程仓库,和本地仓库一样,远程仓库存放的也是不同的代码版本,只是这些版本可以来自多个本地仓库。
git的一些常用命令,命令一般是在命令行中使用,但是我们都是用IDEA集成了,不需要我们敲命令,直接图形化界面操作,底层自动执行命令完成操作,但是一些重要的命令还是需要记住。
git add 文件名 添加到暂存区
git commit -m "日志信息" 文件名 提交到本地库
我们一般的开发步骤
在Git远程库上创建分支,起名,然后拉取(克隆)项目下来,切换到你的分支上开发,不能在主分支master上开发,在你的分支开发完后,再合并到主分支上。
拉取(克隆)远程的项目,默认是拉取下master分支,
文件颜色
文件如果是红色的,说明你的文件还没add到暂存区,就是没有被git跟踪管理,只是在你工作区里。
文件如果是绿色的,已经add到暂存区,由git管理,但是还未commit提交到本地仓库。
文件颜色如果是白色的,说明文件已经提交到本地仓库中或已经推送到远程仓库了,且没有改动。
将本地仓库中的文件推送到远程仓库
可以看到已经提交到远程仓库的master分支上了
分支
Git命令
git add
将工作区的文件提交到暂存区
git commit
用于将暂存区中的文件添加到本地仓库中。
git commit -m [message]
# 提交指定的文件到暂存区
git commit [file1] [file2] ... -m [message]
# -a 参数设置修改文件后不需要执行 git add 命令,直接来提交
git commit -a
git merge
用于将一个分支的更改合并到当前分支
合并过来,linjl分支的commit会合并到master的暂存区内,可以push将linjl合并过来的代码提交到远程。
git config
可以配置 Git 的各个方面。你可以配置全局设置(适用于所有存储库)或仅针对当前存储库进行设置。
# 全局设置用户信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 查看全局配置信息
git config --global --list
git branch
用于管理 Git 存储库中的分支。它可以创建、列出、重命名和删除分支。下面是一些常用的 git branch
命令及其详细解释。
列出分支
列出所有本地分支:git branch
列出所有远程分支:git branch -r
列出所有本地和远程分支:git branch -a
创建分支
创建一个新的本地分支,但不切换到该分支:git branch new-branch
删除分支
删除本地分支:git branch -d branch-name
如果该分支尚未完全合并,使用大写的 -D
强制删除:git branch -D branch-name
删除远程分支:git push origin --delete branch-name
比较分支
git reset撤销
撤销到本地仓库的commit
git reflog
命令可以查看所有的 HEAD 变动记录,通过 reflog 可以找到你想要撤销到的具体提交,然后使用 git reset
回到那个提交。
git reset --hard 958d7ef5 # 撤销commit到958d7ef5,并删除958d7ef5之前所有的变更
git reset --mixed 958d7ef5 # 撤销commit到958d7ef5,并保留958d7ef5之前所有的变更到暂存区
git reset --soft 958d7ef5 # 撤销commit到958d7ef5,并保留958d7ef5之前所有的变更到工作区
比如要撤销aaa提交的话,git reset --mixed 111的哈希值
git rebase
用于将一系列提交应用到一个新的基准提交上
git rebase --onto <new-base> <upstream> <branch>
其中:
<new-base> 是新的基础分支。
<upstream> 是你要重构的分支在原来的基础分支的位置。
<branch> 是你要重构的分支。
例如,如果你的仓库中有两个分支 A 和 B,你希望把 A 分支的提交序列应用到 B 分支上,你可以这样执行:
git rebase --onto B A
这个命令会把 A 分支的所有提交重新应用到 B 分支上,把 B 分支看做新的基础分支。这意味着 A 分支的提交会在 B 分支的后面新增,而不是在 B 分支的前面合并。
案例:
git checkout
git checkout 命令用于在不同的分支之间切换、恢复文件、创建新分支等操作。
1、切换分支:
以下命令允许你从当前分支切换到指定的分支 <branch-name>:
git checkout <branch-name>
例如将你的工作目录切换到主分支:
git checkout master
2、创建新分支并切换:
以下命令用于创建一个新分支 <new-branch-name> 并立即切换到新创建的分支:
git checkout -b <new-branch-name>
例如创建一个名为 feature-branch 的新分支并切换到它:
git checkout -b feature-branch