一般流程
-
从远程库克隆项目到本地
git clone https://XXXXX/XXX/XXX.git 复制代码
-
切换到需要继承的分支
一般克隆下来的都是master分支,当然也可以直接在这个分支上创建新的本地分支,有些时候如果不是在master分支的下创建新的本地分支的话,就需要切换到需要继承的分支下,假设我们需要切换到远程分支origin/release/rt46,命令如下:
git checkout release/rt46 复制代码
-
创建新的本地分支并切换到该分支
创建新的本地分支会在当前所在分支下进行创建,在创建后其内容会与当前分支内容一致,如果进行了第二布的话,那么当前分支就是release/rt46,否则就为master。创建本地分支feature/addTools并切换到该分支:
git checkout -b feature/addTools 复制代码
这条命令表示创建了分支feature/addTools并且切换当前本地工作台到新的分支,相当于是执行了如下两条命令:
git branch feature/addTools # 创建feature/addTools分支 git checkout feature/addTools # 切换到feature/addTools分支 复制代码
-
然后你就可以愉快的在本地分支feature/addTools里面进行你的任务啦,假设到现在你的任务都已经完成了,那你需要执行后面的步骤
-
将所有的修改添加到索引里面
这里说一下GIT里的一些概念:工作区 - 索引 - 版本数据库
工作区指的是你当前所有能够看到的项目内容,你可以假想为你的IDE能够编辑的所有的工程文件,那工作区就是这些工程文件所在的项目目录,所以可以直接理解为工作区就是含.git文件夹的项目工程目录区域
索引是保存在.git里的某个文件,用来记录修改的操作内容
版本数据库里面保存了各个版本,分支下的操作步骤,以及文件操作的注释等内容
注意下,这里的工作区,索引,版本数据库都是指代你的本地环境,个人简单理解的git具有分布式版本控制就是因为只要有人克隆了整个项目,那么他也具有了整个『工作区-索引-版本数据库』,所以相当于每个人本地都是一个git版本库
那为什么需要说明这些概念,因为大家常用过两个命令:
git add
和git commit -m '注释内容'
对吧,那其实他们的关系是这样的:工作区 ----
git add
----索引----git commit
----版本数据库当我们在工作区对代码进行修改后先add到索引:
git add . # .符号表示将当前所有的修改全部添加到索引 # 或 git add filename.js # 这样就表示只是将工作区做了修改的filename.js文件添加到索引 复制代码
然后添加到版本数据库
git commit -m '修改了一些内容' # -m后面加上文件修改的注释内容 复制代码
git commit会讲当前索引里面的所有修改描述数据添加到版本数据库里面,如果对不同的文件描述不同的话,建议多进行几次
add filename
和commit
-
将分支提交到远程仓库里面
我们之前的操作只是在本地创建了feature/addTools分支,如果需要提交到远程仓库上去,直接git push是不可行的
git push --set-upstream origin feature/addTools 复制代码
这样的话是在远程仓库创建了一个feature/addTools分支,以后就可以在这个分支下愉快的进行
git push
了 -
更新继承的分支内容,保证最新
先别急着push,假设存在这种情况,你在release/rt46下新建了feature/addTools分支后,另一个同学他的任务写完了合并到了release/rt46分支里面,那此时的话,远程仓库上的release/rt46是有新增内容的,所以一般为了保证我继承的release/rt46分支比较新的话,我们在push之前需要进行如下操作
-
切换到父分支
git checkout release/rt46 复制代码
-
把新的内容拉下来,拉下来后是最新的release/rt46了
git pull 复制代码
-
切换到工作分支
git checkout feature/addTools 复制代码
-
更新工作分支的父分支
git rebase release/rt46 复制代码
-
-
推送到远程仓库里的feature/addTools分支下
git push 复制代码
常用git命令
-
切换分支
切换分支需要注意看当前的工作区和索引是否有修改,如果有必须要先完成commit才可以切换
git checkout <分支名> 复制代码
-
删除分支
删除本分支需要先切换到其他分支,才可以删除本分支
git branch -D <分支名> 复制代码
-
合并分支
假设当前分支是release/rt46,需要与feature/addTools合并
git merge feature/addTools 复制代码
会将feature/addTools修改的内容合并到release/rt46里面
-
查看所有分支
git branch -a 复制代码
可以通过grep通道限制显示的内容
git branch -a | grep release/rt4 复制代码
-
添加远程版本库
git remote add <remote> <url> 复制代码
remote指代远程版本库,一般默认远程版本库为origin
-
查看提交历史
git log # 查看所有提交历史 git log -p <file> # 查看指定文件的提交历史 复制代码
-
撤销工作区所有未提交的文件修改内容
git reset --hard HEAD 复制代码
-
撤销指定的未提交文件内容
git checkout HEAD <file> 复制代码
-
更新所有线上代码和分支
git fetch 复制代码