文章目录
一、git常用命令
git init
基本用法:git init
用来初始化一个仓库,初始化后当前文件目录中会出现 .git隐藏文件目录,当前文件目录就是workspace(工作区),工作区有一个子目录.git。
git add
基本用法:git add < path >
通过gith add < path >可以把path对应的文件添加到index(暂存区)区域
git commit
基本用法:git commit -m “descripe”
把index(暂存区)中的文件提交到repository(本地仓库)中
git push
基本用法:git commit origin master
origin代表远程仓库
master 代表要提交的主分支(也可以是其他分支)
将repository(本地仓库)推送到(remote)远程仓库
git clone
基本用法:git clone SSH/HTTP
将(remote)远程文件克隆到本地,克隆的仓库就直接可以当作(repository)本地仓库了
git pull
基本用法:git pull origin master
origin代表远程仓库
master 代表要拉的主分支(也可以是其他分支)
将远程仓库内容直接拉到本地工作区
git checkout
基本用法:git checkout dev
分支切换
git branch
基本用法:git branch < 分支名 >
创建分支也可以查看分支
二、git基础原理
git 四个区域
workspace: 工作区,平时存放代码地方
index:暂存区,
repository:仓库区(本地仓库)
remote:远程仓库,托管代码的服务器
git文件的状态
untracked(未跟踪):一般是在工作区创建的新文件还没有加到git库中,不参与版本控制。通过git add命令状态变成staged。
modified(修改未暂存):一般是提交后再修改的文件,还未git add进入暂存区。
staged(暂存未提交):一般是文件git add后,还未git commit。
常见状态转换
常见状态转换如图:
三、git常见情况·
git push冲突
使用git push origin develop 出现冲突报错
原因:在我们git pull 之后修改文件,再git add、git commit后,最后git push 推送带远程仓库。git pull 与 git push 之间有其他人已经git push到远程仓库把文件修改成另外一个版本,而我们进行git push的文件是上一个版本的文件,所以git push可能会造成冲突。
解决:首先我们调用git pull去拉取分支下来,然后会在冲突的文件里记录冲突的内容,手动去解决冲突,然后再git commit和git push。
git commit合并
多个commit合并成一个commit
在使用git的时候,我们可能针对同一个任务由多次提交,比如我们针对同一个feature可能由多个人修改了不同部分但是多个提交让我们的版本管理显得比较凌乱,此时我们可以合并多个commit为一个。
首先假设我们有三个commit,我们想把最近的三个commit合并为一个commit,那么此时我们可以使用git rebase。
四、具体实践
实际开发
流程:
git checkout feature //切换分支到feature
git pull origin feature
…… //具体功能开发
……
git rebase -i HEAD~(n)
git rebase develop //这个时候一般有冲突,再解决冲突
git push origin feature //提交
git checkout develop //切换分支到develop
git merge feature //将develop分支与feature分支进行合并
bug及时定位
上线时一段时间遇到bug,要及时定位开始出错的版本
git bisect 区间,用二分操作方及时找到开始出错版本