git的分区:
Remote:远程仓库,一般会放在github、gitlab等平台,也可使用自己的服务器。
Repository(或Git Directory):资源库,是本地仓库 ,存放已经提交的数据。.git的隐藏文件夹记录git相关的配置,初始化仓库时自动创建。
Workspace:工作区,是我们正在编辑的地方,也就是平时存放项目的地方。每一个分支都有自己对应的工作区。
Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交的信息,一般存放在.git目录下的index中。只有暂存区的代码可以被提交。
最常用命令举例:
1)执行git clone + 地址从远程仓库clone了一个项目到本地,此时四个分区内容应该相同。
2)假如该项目包含了test1.py和test2.py两个文件。对这两个文件均进行了编辑修改,此时工作区内容发生变化,暂存区和本地仓库内容不变。
3)执行git add .(或git add test1.py test2.py),将两个文件对修改同步到暂存区,此时工作区和暂存区数据一致。
4)执行git commit -m "some description"后,修改同步到本地仓库,-m的意思是为修改添加说明。
5)执行git push,将修改同步到远程仓库。
注意:建议每次add之前,先执行git pull操作,从远程仓库获取最新版本并merge到本地,避免后续提交代码时出现冲突。
git分区的好处:通过不同的命令及参数,可在各区进行数据切换
1)对于上述test1.py和test2.py,假如二者都进行了修改,但只想提交test1.py
若还没有add到暂存区:git add test1.py
若已经将两个文件都add了:git reset -soft,将两个文件从暂存区回滚到工作区,并保留修改,之后重新进行add操作。
2)如果文件修改到一半,突然放弃修改
若还没有add到暂存区:git checkout -- test1.py, 全部放弃:git checkout .
若已经add: git reset HEAD test1.py
3)代码写到一半,被打断去做其他功能开发,未完成代码保存
提交到缓存区:git stash
git分支:(借用一张图)
master分支一般与线上分支保持同步
分支常用命令:
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branchname]
# 新建一个分支,并切换到该分支
git checkout -b [branchname]
# 切换到主分支
$ git checkout master
# 合并指定分支到当前分支
$ git merge [branchname]
# 删除分支
$ git branch -d [branchname]
# 删除远程分支
$ git push origin --delete [branchname]
$ git branch -dr [remote/branch]