Git 是一个分布式版本控制系统,旨在快速高效地处理任何规模的项目。它由 Linus Torvalds 于 2005 年创建,可跟踪软件开发过程中源代码的更改,允许多个开发人员一起进行非线性开发。Git 维护所有更改的完整历史记录,从而轻松回滚和比较版本。它的分布式特性意味着每个开发人员都有存储库的完整副本,允许离线工作和备份。Git 的主要功能包括分支和合并功能、提交的暂存区域以及对拉取请求等协作工作流程的支持。它的速度、灵活性以及强大的分支和合并功能使其成为软件开发中使用最广泛的版本控制系统,特别是对于开源项目和团队协作。
这篇文章主要在于团队初次使用git时,应该怎么提交拉取分支,其中git的更多指令并没有进行太对讲解
重要三区概念
工作区:
- 工作区是指你在本地计算机上进行实际工作的目录。在Git中,这个目录包含了项目的所有实际文件。
- 当你对项目文件进行修改时,这些修改首先发生在工作区中。
- 执行
git init
命令后,当前目录(及其子目录)就变成了Git的工作区。
本地仓库:
- 本地仓库是Git存储版本信息、历史记录、对象(如提交、树、标签等)的地方。
- 在执行
git init
命令后,Git会在当前目录下创建一个隐藏的.git
文件夹,这个文件夹就是本地仓库的所在位置。 .git
文件夹包含了Git仓库的所有核心信息和数据,如配置文件、HEAD引用、对象存储(objects)、引用(refs,包括分支和标签的引用)等。
暂存区:
- 暂存区是位于Git仓库内部(即
.git
目录内)的一个中间区域,也称为索引(Index)。 - 它用于存储即将提交的更改。当你对工作区中的文件进行修改后,可以使用
git add
命令将这些修改添加到暂存区中。 - 暂存区中的更改会在你执行
git commit
命令时被提交到本地仓库中,形成一个新的提交(Commit)。
创建本地仓库
创建一个文件夹,在文件夹右键点击Open Git Bash here
,在弹出的命令框中输入(以后的所有指令都在这里输)
git init
输完之后会产生一个.git
的隐藏文件夹(点查看->显示->隐藏项目勾选,后就能看见)
执行git init
命令后,当前目录(及其子目录)就变成了Git的工作区。
提交到暂存区
git add .//将工作区的所有文件提交的暂存区
git add 想要提交的文件//提交单一文件
暂存区是位于Git仓库内部(即.git
目录内)的一个中间区域,也称为索引(Index)。
提交到本地仓库
在执行git init
命令后,Git会在当前目录下创建一个隐藏的.git
文件夹,这个文件夹就是本地仓库的所在位置。
git commit -m "想说的而且必须要说的话"
git commit --amend
//修改上次提交的 “想说的而且必须要说的话”
-
git commit
一下相当与在当前分支上加了一层,上一层就是上次提交的信息,故git可以看历史版本 -
第一次提交不修改分支就会提交到本地的main分支上
提交到本地仓库的分支上
创建分支
git checkout -b 分支名字
git switch -c 分支名字 switch是高版本的
//创建之后会自动切换到这个分支
git branch 分支名
//创建之后不会切换到这个分支上
切换分支
git checkout 分支名
git switch 分支名
切换分支的要点
切换分支是工作区要干净,即没有未提交的更改,此时工作区已经commit过了,并且没有更该,否则不能切换
或者使用git stash
来保存当前状态,保存工作状态之后可以使用git stash list
查看当前存储了多少工作状态,
当在别的分支做完事情之后,在切换回刚刚的分支,然后使用git stash pop
来恢复
提交到分支上
git add .//提交到缓存区
git commit -m "想说的而且必须要说的话"
提交到远程仓库
//首先要关联到远程仓库
git remote add origin 你远程仓库的ssh
//origin是虚拟名字代指你远程仓库的名字
如过是团队协作,需要确保自己的分支是最新的分支
看下面的拉取仓库,通过拉取仓库让自己保持是最新的分支,再提交
//确保自己在要提交的分支上
git checkout main
git push -u origin main
git checkout 其它分支
git push -u origin 其它分支
拉取远程仓库
拉取本地仓库没有的分支
//从远程仓库拉取最新分支
git fetch origin
//创建分支并与远程仓库相关联
git checkout -b 没有的分支的名字 origin/没有的分支的名字
//拉取分支
git pull origin 没有的分支的名字
本地已有的
git checkout main//切换到main分支
git pull origin main//这条指令会自己合并分支
//等于
git fetch origin //从远程仓库拉取最新分支
git checkout main//切换到main分支
git merge orgin/main//合并远程origin仓库的main分支到你本地仓库的main分支上
实例
分支重命名
-
切换到要重命名的分支(当前分支叫now)
git checkout now gir branch -m next 将now改为next
-
指定原分支名和新名
git branch -m now next
-
重命名分支后,本地的更改不会自动同步到远程仓库,需要手动更新
git push origin --delete now //删除旧的远程分支 git push origin next //推送新的分支到远程 git branch --set-upstream-to=origin/next //设置跟踪新分支
-
团队成员要做以下操作
git fetch -p //清理本地旧的引用分支 git pull origin next //拉取新分支 git branch --set-upstream-to=origin/next //重新设置本地分支的跟踪关系 git branch -d now //删除本地旧分支(如果需要)
指令
git status//查看当前工作区的状态,显示你当前分支的情况以及工作目录和暂存区的变更。
git log//用于查看提交历史。它会显示当前分支的提交记录,并按时间顺序列出每个提交的详细信息,包括提交的哈希值、作者、提交日期以及提交的说明。
git branch//这个命令会列出你本地仓库中所有的分支,并标记当前所在的分支。
git branch -r//这个命令会列出远程仓库中所有的分支。
git branch -a//这个命令会同时列出本地和远程的分支。
git branch -vv//这个命令会显示本地分支以及它们对应的远程追踪分支(如果有的话)
git branch -m//重命名
git branch -D 分支名//删除本地分支
git push origin --delete 远程分支名//删除远程分支