加拿大机器人

pc28机器人 ,pc蛋蛋机器人,加拿大pc算账机器人

加拿大机器人 Git学习总结


一、核心概念梳理

(一)四个关键区域

Git的工作流程围绕四个核心区域展开,清晰理解它们的关系是掌握Git的基础:

  1. 工作区:就是我们本地电脑中实际存放项目文件的目录,日常的代码编写、文件修改都在这里进行。

  2. 暂存区:作为工作区和本地仓库之间的过渡区域,用于临时保存我们的修改。通过git add命令可以将工作区中修改的文件添加到暂存区,相当于为提交做准备。

  3. 本地仓库:存储着项目完整的版本历史和元数据,通过git commit命令可以将暂存区的修改提交到本地仓库,形成一个新的版本记录。

  4. 远程仓库:通常搭建在远程服务器上,比如GitHub、GitLab等,用于团队成员之间共享代码。我们可以通过git push将本地仓库的代码推送到远程仓库,也可以通过git pullgit clone将远程仓库的代码拉取到本地。

(二)三个重要对象

Git中所有的数据都以对象的形式存储,主要包括三种类型:

  1. Blob对象:用于存储文件的内容,每个Blob对象对应一个文件的快照,但不包含文件名等元数据。

  2. Tree对象:相当于目录,它记录了Blob对象和其他Tree对象的引用,从而构建出项目的目录结构。

  3. Commit对象:代表一次提交操作,它包含了指向Tree对象的指针、提交者信息、提交时间、提交消息以及父Commit对象的指针(除了第一次提交),通过Commit对象可以追溯项目的完整历史。

(三)分支的本质

分支在Git中本质上是一个指向Commit对象的轻量级指针。创建分支仅仅是创建一个新的指针,并不会复制文件,因此创建和切换分支的操作非常高效。切换分支实际上就是移动HEAD指针,让它指向不同的分支指针,从而切换到对应的项目版本。

二、基础命令汇总

(一)配置命令

在使用Git之前,首先需要进行基本的配置,包括设置用户名和邮箱,这些信息会出现在提交记录中:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global core.editor "vim"  # 设置默认编辑器
git config --list  # 查看所有配置信息

(二)仓库初始化与克隆

  1. 初始化本地仓库:在本地项目目录中执行以下命令,将当前目录初始化为Git仓库:

git init

  1. 克隆远程仓库:将远程仓库的完整代码复制到本地,可以使用以下命令:

git clone <远程仓库URL>  # 克隆整个仓库
git clone -b <分支名> <远程仓库URL>  # 克隆指定分支

(三)基本操作流程

  1. 查看状态:随时了解工作区和暂存区的文件状态,这是Git使用过程中最常用的命令之一:

git status

  1. 添加到暂存区:将工作区中修改的文件添加到暂存区:

git add <文件名>  # 添加指定文件
git add .  # 添加所有修改的文件

  1. 提交到本地仓库:将暂存区的修改提交到本地仓库,并添加提交消息:

git commit -m "提交消息"  # 常规提交
git commit -am "提交消息"  # 跳过add步骤,直接提交已跟踪的文件

(四)查看差异

查看不同区域之间的文件差异,帮助我们了解修改的内容:

git diff  # 比较工作区和暂存区的差异
git diff --cached  # 比较暂存区和本地仓库的差异
git diff HEAD  # 比较工作区和本地仓库的差异
git diff branch1..branch2  # 比较两个分支之间的差异

(五)查看历史记录

查看项目的提交历史,了解项目的演进过程:

git log  # 查看完整的提交历史
git log --oneline  # 以简洁的一行形式显示提交历史
git log --oneline --graph  # 以图形化的方式显示提交历史,更直观地展示分支关系
git log -5  # 查看最近5条提交记录
git log --grep="关键词"  # 根据提交消息中的关键词搜索提交记录
git log --author="名字"  # 根据作者名字搜索提交记录

三、分支管理命令

(一)基础分支操作

  1. 查看分支

git branch  # 查看本地分支,当前分支前会有*标记
git branch -a  # 查看所有分支,包括本地和远程分支
git branch -r  # 只查看远程分支
git branch -vv  # 查看本地分支与远程分支的跟踪关系

  1. 创建分支

git branch <分支名>  # 创建新分支,但不切换到该分支
git checkout -b <分支名>  # 创建新分支并切换到该分支
git switch -c <分支名>  # 新语法,创建新分支并切换到该分支

  1. 切换分支

git checkout <分支名>  # 切换到指定分支
git switch <分支名>  # 新语法,切换到指定分支

  1. 删除分支

git branch -d <分支名>  # 删除已合并的分支
git branch -D <分支名>  # 强制删除未合并的分支

(二)分支合并

将一个分支的修改合并到另一个分支是团队协作中常见的操作,以将feature分支合并到main分支为例:

git checkout main  # 切换到main分支
git merge feature  # 将feature分支的修改合并到main分支
git branch -d feature  # 合并完成后,可选删除feature分支

(三)基于特定提交创建分支

有时候我们需要基于某个历史提交创建新的分支,用于修复旧版本的问题或进行版本回溯:

git checkout -b <新分支名> <提交哈希值>

四、远程仓库操作命令

(一)管理远程仓库

  1. 查看远程仓库:查看当前本地仓库关联的远程仓库信息:

git remote -v

  1. 添加远程仓库:将本地仓库与远程仓库关联:

git remote add <远程仓库别名> <远程仓库URL>

  1. 删除远程仓库:解除本地仓库与远程仓库的关联:

git remote remove <远程仓库别名>

  1. 重命名远程仓库:修改远程仓库的别名:

git remote rename <旧别名> <新别名>

  1. 修改远程仓库URL:当远程仓库的URL发生变化时,可以使用以下命令修改:

git remote set-url <远程仓库别名> <新URL>

(二)推送代码

将本地仓库的代码推送到远程仓库:

git push <远程仓库别名> <本地分支名>  # 将本地分支推送到远程仓库对应的分支
git push <远程仓库别名> <本地分支名>:<远程分支名>  # 将本地分支推送到远程仓库的指定分支

(三)拉取和获取代码

  1. 拉取代码:将远程仓库的代码拉取到本地,并自动合并到当前分支,相当于git fetchgit merge的组合:

git pull <远程仓库别名> <远程分支名>

  1. 获取代码:将远程仓库的代码拉取到本地,但不会自动合并到当前分支,需要手动执行合并操作:

git fetch <远程仓库别名> <远程分支名>

五、撤销和恢复命令

(一)工作区撤销

如果在工作区中对文件进行了修改,但还没有添加到暂存区,可以使用以下命令撤销修改:

git restore <文件名>  # 新语法
git checkout -- <文件名>  # 旧语法

(二)暂存区撤销

如果已经将文件添加到暂存区,但还没有提交到本地仓库,可以使用以下命令将文件从暂存区撤销到工作区:

git restore --staged <文件名>  # 新语法
git reset HEAD <文件名>  # 旧语法

(三)提交撤销

如果已经提交到本地仓库,但想要撤销最近的一次提交,可以使用以下命令:

git commit --amend  # 修改最近一次的提交消息,或者补充提交文件
git reset --soft HEAD^  # 撤销提交,将修改保留在暂存区
git reset --mixed HEAD^  # 撤销提交,将修改保留在工作区(默认选项)
git reset --hard HEAD^  # 撤销提交,同时丢弃工作区和暂存区的修改,谨慎使用

(四)恢复丢失的提交

如果不小心删除了分支或执行了错误的重置操作导致提交丢失,可以使用git reflog命令查看所有的操作记录,然后恢复对应的提交:

git reflog  # 查看操作记录
git checkout <提交哈希值>  # 恢复到指定的提交

六、提交历史操作命令

(一)修改最后一次提交

如果发现最近一次提交的消息有误或者遗漏了文件,可以使用以下命令修改:

git commit --amend

执行该命令后,会进入编辑器修改提交消息,如果需要补充文件,只需先将文件添加到暂存区,然后执行该命令即可。

(二)交互式变基

交互式变基可以用于整理提交历史,比如合并多个提交、修改提交消息、删除提交等:

git rebase -i HEAD~n  # 对最近n条提交进行交互式变基

执行该命令后,会进入编辑器,在编辑器中可以对提交进行操作,常用的操作指令包括:

  • pick:保留该提交

  • reword:修改该提交的消息

  • edit:修改该提交的内容

  • squash:将该提交合并到前一个提交

  • fixup:将该提交合并到前一个提交,但丢弃该提交的消息

  • drop:删除该提交

七、使用经验总结

(一)提交规范

每次提交都应该保持提交的原子性,即一个提交只完成一个功能或修复一个问题,并且提交消息要清晰、准确地描述提交的内容,方便后续查看历史记录。

(二)分支策略

在团队协作中,建议采用合理的分支策略,比如Git Flow或GitHub Flow。Git Flow适合大型项目,包含主分支、开发分支、功能分支、发布分支和修复分支等;GitHub Flow则更加简洁,以主分支为核心,所有功能开发都在特性分支上进行,完成后通过Pull Request合并到主分支。

(三)定期同步

在团队协作中,要定期与远程仓库同步代码,避免出现大量的冲突。建议每天开始工作前先执行git pull拉取最新的代码,提交代码前也要先拉取最新代码,确保本地代码是最新的。

(四)谨慎使用强制命令

git reset --hardgit push --force等强制命令会覆盖历史记录或远程仓库的代码,使用时一定要谨慎,确保自己清楚操作的后果。

八、常用别名设置

为了提高操作效率,可以为常用的Git命令设置别名:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --decorate --all"

设置完成后,就可以使用git co代替git checkoutgit lg查看美观的提交历史等。


Powered By Z-BlogPHP 1.7.3

加拿大机器人,pc28机器人 ,pc蛋蛋机器人,加拿大pc算账机器人