多人协作开发最主要的git 命令
注意:项目经理必须要做一点,就是要给远程仓库中的工程添加.ignore文件,这样的话可以忽略一些没有必要一直提交的文件,,加快提交和推送的速度
版本控制最权威的图如下,git flow也是根据下图进行版本控制的.
git版本控制的开发流程详图:
git clone 远程仓库地址
git config 配置个人信息 (方便标记代码提交者)
git status 查看本地仓库的代码状况
git add 文件名/git add .将本地工作区的代码添加到暂存区
git commit -m “…” 提交暂存区的代码到本地仓库
git pull 拉取远程仓库的代码
git push 将本地仓库的代码推送到远程仓库
git 分支
查看当前分支:
git branch
创建一个新的分支(本地):
git branch 分支名称
将本地分支推送到远程服务器:
git push origin new_branch
切换到分支:
git checkout new_branch
创建并切到新新分支:
git checkout -b new_branch
删除分支(本地分支):
git branch -D 分支名称
删除远程分支:
git push origin :branch-name
重命名分支:
git branch -m old_branch new_branch
合并分支:
git merge 分支名
//合并分支的时候使用
git merge --no-ff newbranch
--no-ff参数的作用是在合并的时候,会创建一个新的提交对象,即使是fast-forward方式的合并。这就避免了丢失特性分支的历史记录信息以及提交记录信息
打标签:
git tag -a v1.4 -m 'my version 1.4'
推送到远程仓库:
git push origin v1.5
查看标签的信息:
git show v1.4-lw
查看分支的提交日志:
git log origin/new_branch
在发布证书的分支上再创建一个预发布证书:
$ git checkout -b release-1.2 develop
Switched to a new branch "release-1.2"
$ ./bump-version.sh 1.2
Files modified successfully, version bumped to 1.2.
$ git commit -a -m "Bumped version number to 1.2"
[release-1.2 74d9424] Bumped version number to 1.2
1 files changed, 1 insertions(+), 1 deletions(-)
//bump-version.sh是一个虚构的shell脚本,它更改了工作空间的某些文件来反映新版本特征。
结束一个release分支:
$ git checkout 发布分支
Switched to branch 'master'
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)
$ git tag -a 1.2
这步有可能会有合并冲突(极有可能,因为我们已经改变了版本号)。如果有冲突,解决掉他,然后提交。
现在我们已经完成了工作,release分支可以删除了,因为我们不在需要他:
$ git branch -d release-1.2
Deleted branch release-1.2 (was ff452fe).
远程版本的回退
首先将本地分支回退到需要回退的版本(git reset --hard版本号);
将本地分支push到远程分支(git push origin分支 -f);
补充:
每个分支就相当于是一个指针,创建新的分支就相当于创建一个新的指针指向提交
每一次提交的文件(存放在本地仓库中的文件)都有一个hash值,该hash值简单的说只是为了标记每一个不同的本地文件,目的是为了方便回退版本(git reset —hard取长度大于前六位hash值)
查看hash可以通过git log或者git reflog
git要理解清楚三大区:
工作区
暂存区 ——执行git add .以后会将代码添加到暂存区
对象缓存区/本地仓库 —执行git commit -m “ …. ”以后会将暂存区的代码提交到本地仓库