清溪镇做网站,wordpress缩略图设置,有哪些网站做自建房设计,国内wordpress1. 概念
分布式#xff0c;有远程仓库和本地仓库的概念#xff0c;因此要注意同步问题git是面向对象的#xff0c;本质是内容寻址系统。.git目录下有个文件夹objects#xff0c;存储git库中的对象#xff0c;git就是根据object建立一种树形结构#xff0c;将文件和通过h…1. 概念
分布式有远程仓库和本地仓库的概念因此要注意同步问题git是面向对象的本质是内容寻址系统。.git目录下有个文件夹objects存储git库中的对象git就是根据object建立一种树形结构将文件和通过hash的方式关联起来
2. 工作区 暂存区 本地仓库 远程仓库
关系图如下
workspace工作区平时写代码的地方index暂存区让写完后的代码变成待提交状态repository本地仓库提交暂存区的代码记录进入代码本地管理remote远程仓库将本地仓库修改好的代码提交到远程可供远程协作的人下载
当创建一个git项目git会在根目录创建一个git目录需要重点理解的是以下五个
HEAD是指针的指针用来标记当前的提交 新建一个分支的时候其实仅仅是改变了HEAD的指向这也是git分支比较轻量的原因 hooks用来在git操作前后进行一些操作index本地的暂存区objects是上面所提到的内容refs分支的引用
简单来说repository由git维护的三棵“树”组成
workspace持有实际文件index像个缓存区域临时保存你的改动HEAD指向最后一次提交的结果
3. 提交代码
开始git操作本地必须有一份代码和remote相连要么从remote拉取适用于代码存在remote的情况要么自己上传本地代码连接remote适用于repository初次上传到remote的情况
git clone url克隆remote的版本到本地成功后本地就有了一样的代码并且也已经与remote连接成功
上传本地代码并连接remote操作大致如下
1. 在项目的根目录打开Git Bash Here
2. 执行以下步骤git initgit add .git commit -m first commitgit remote add origin 远程仓库地址git push -u origin master修改代码后将其提交到index
git add .添加当前目录所有文件到index提交后没有任何提示可以用git status查看文件是否有修改是否进入index已经提交到repository的不会展示
将index里文件提交到repository这是个离线操作
git commit -m message将index里文件提交到repositorymessage的位置填写本次提交修改的内容和一些注释
将repository提交到remote
git push remote branchremote位置填写remote名称branch填写需要提交的分支 git push origin master推送到远程origin仓库的master分支
4. 关于协作
拉取remote代码到repository
git pull remote branchremote写remote名称branch写拉取remote的分支 git pull origin master拉取远程origin仓库的master分支到repository 将代码提交到remote之前最好先拉取一下远程的最新代码以免产生冲突
4.1 分支
在合作中有可能会有并行开发的需求但可能不会同时上线不能把没有开发完成的分支上线所以就出现了分支branch
分支的功能从同一份稳定代码拉出有相同代码的分支每个人在自己的分支上开发提交代码不会互相打扰完成后再进行代码的合并
master是默认的分支在其他分支上进行开发完成后再将它们合并到主分支上除非将分支推送到远程仓库不然该分支是不为别人所见的
举个例子实践一下
git checkout -b dev创建并切换到dev分支 加上-b参数表示创建并切换git branch dev git checkout dev git branch查看所有本地分支当前分支前面会标一个*号git branch -d dev删除dev分支
4.2 合并分支
合并之前确保要合并的两个分支都是当前分支的最新代码pull一下再切换到要保存合并代码的分支
git merge branch合并指定分支到当前分支git log --graph查看分支合并图合并后可能出现冲突需要修改文件手动合并这些冲突git add filename来标记合并成功
常见冲突管理
git merge --abort撤销合并操作回到开始合并之前的状态当解决完冲突后在合并完成后发现一个错误git reset --hard就可以回滚到那个合并之前的状态
git常见命令速查表
5. 常见场景及解决方案
5.1 stash
场景正在feature分支下开发新需求但是线上突然出现bug要马上修复需要切到master分支
只需要git stash就可以把代码存起来修复完线上问题后切回feature分支用git stash apply就可恢复代码
一些相关命令
# 保存当前未commit的代码
git stash# 保存当前未commit的代码并添加备注
git stash save 备注的内容# 列出stash的所有记录
git stash list# 删除stash的所有记录
git stash clear# 应用最近一次的stash
git stash apply# 应用最近一次的stash随后删除该记录
git stash pop# 删除最近的一次stash
git stash drop5.2 reset –soft
应用场景有的时候不小心把不该提交的内容commit了想改回来就只能再commit一次但就多了一条“黑历史”
只需要git reset --soft HEAD^相当于后悔药可以再次修改重新提交保持干净的commit记录这说的是未push的commit。
对于已经push的commit也可以使用该命令不过再次push时由于远程分支和本地分支有差异需要强制推送git push -f来覆盖被reset的commit
PS在reset --soft指定commit时会将该commit到最近一次commit的所有修改内容全部恢复而不是只针对该commit