Git
工作流程:D:\projects\Setup2\Setup2\Setup2\Express\SingleImage\DiskImages\DISK1
git clone
工作开始之初,可通过git clone “URL“来实现拷贝远程git仓库并创建本地仓库,再同步工作区代码的效果。
git status
工作过程中,可随时通过git status查看本地代码与git仓库之间的状态,比如修改、删除、增加的文件状态。
git add
git commit
若需要将代码向本地仓库递交,则通过git add将文件加入索引区,再通过git commit方法可真正的将代码递交入库。
git push
若功能开发好后,需要将本地代码共享给项目组中的其他成员,若通过git push命令将本地已入库的代码向远程仓库合入。
git pull
若需要将项目组中其他成员的代码成果同步到自身工程,则通过git pull命令可以达到目的
git merge
若需要合入另一分支的代码,可通过merge命令实现
git branch
创建、删除、查看分支可以通过git branch实现
如创建分支dev,则命令为git branch dev
如查看本地分支,则直接git branch,前面带*的则是当前的工作分支
如删除分支dev,则git branch -d dev,也可以用git branch -D dev进行强删,内容将丢弃,所以请确定是不要此代码才实施
git rebase
重定基,
git reset
比较有用的功能,它可以将已提交的记录进行还原,通过commit id还原,
git log
查看每次人员上传的记录及commit ID值
git diff
可对比分析分支差异、文件差异、每次签入的内容的差异
gitk
可视化查看log
git mv
对仓库上的文件进行重命名,最后也需要通过git commit才将修改入仓库
git checkout
可切换分支,如
git checkout dev
若对修改的文件不满意,可还原文件至仓库中的文件,命令如下:
git checkout -- “file“
日常场景使用
1.开发完成后想将代码提交到远程仓库共享代码给项目组成员(多分支工作)
开发前,将远程仓库的最新代码创建跟踪分支master(或者叫remote)
再通过master分支创建开发分支并切换到dev进行开发
创建git branch dev命令后再执行git checkout dev,达到切换入dev进行开发
也可直接git checkout -b dev,直接创建并切换
开发过程中,开发人员coding
开发完成后,需要将代码入远程仓库,则先将代码入本地仓库,
在dev分支上执行git add / git commit之后
执行如下命令:
git checkout master
git pull
达到将跟踪分支与远程仓库同步的效果
再执行
git rebase master dev, 此命令是将dev进行变基,
执行此命令的主要原因是此时远程仓库上已有其他项目组成员提交了代码,而dev分支是在原先的
提交结点上签出的,执行git pull后,此时master分支上的结点已向前发展,而dev的结点也已向前发展,
通过上述命令后dev的前面签入结点将与master(即远程分支上的结点)保持一致。
此时可能会出现冲突,则通过修改代码解决冲突代码后,使用git add 将冲突文件提交到索引区,
再git rebase --continue继续执行rebase过程,成功后工作区将处于dev分支上。
再执行
git checkout master
git merge dev
git push
即可将代码入库
2.开发完成后想将代码提交到远程仓库共享代码给项目组成员(单分支工作)
开发前,将远程仓库的最新代码创建跟踪分支master(或者叫remote)
直接在master分支上进行修改代码
git add
git commit
将代码入本地仓库
需要上传代码时则
git fetch
git rebase origin/master master
此时可能会冲突,则处理方式同1中的冲突过程
虽然第2种方式看上去简单些,但还是推荐大家采用第1种方式,
它可并行的处理的需求或BUG的情况,只需切换分支
(再多创建一些分支,每一个特性开发或解决每一个BUG时,都可创建新分支进行处理,
创建分支的代价是非常小的,大部分代码都是共用的,不像SVN,每个分支都是copy,
若原分支还有工作未完成,BOSS有紧急BUG需要你处理时,则通过git stash命令将当前进行到一半的工作进行缓存,
切换新分支解决紧急任务后切换回原分支,通过git stash pop可以还原缓存的工作,具体stash用法还请采用
git help stash查看,其它命令也可以通过git help查看)。
3.每日开发代码需要提交入本地仓库,所以经常使用
git add / git commit即可
若开发二天或三天,发现功能已开发好,想共享给项目组的成员,
此时,可进行git reset操作,将提交记录向前还原,
比如此时分支上执行 git log 显示结果如下:
commit 3bc7932bef0f8165e917f75d3302316d8e29bf0c
Author: libin jin
Date: Tue May 22 20:34:36 2012 +0800
删除文件2
commit adbfdf8401b882c9b3e11e4330174c42996bdc57
Author: libin jin
Date: Tue May 22 20:28:18 2012 +0800
删除文件1
commit 3721ce64fa2172d7883fde08a3f219b2edc83b93
Author: xiao.zhao
Date: Tue May 22 19:13:53 2012 +0800
团购文本折叠取消动画
我们可以看到,上述最新的二个提交注释不规则,且二个提交的功能是一致的,
此时,执行下面的命令:
git reset 3721ce64fa2172d7883fde08a3f219b2edc83b93
或
git reset 3721ce64 (8位即可)
再执行git add / git commit 加入合理的注释,即可将多个提交合成一个,变成功能完整的一次提交。
这样就可以在合入远程仓库时看到的每个提交都是有明确的含义,可维护性及可读性上会好很多,
在后继遇到问题或需求变化时,还原代码处理就比较方便,通过git revert可以将整个提交做反向处理,
即可将此功能去除。
Git 打标签:
# 创建附注标签
$ git tag -a v0.1.2 -m "发布0.1.2版本"
补打标签
打标签不必要在head之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和(通过git log获取)。
# 补打标签
$ git tag -a v0.1.1 9fbc3d0
标签发布
通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作:
$ git push origin v0.1.2 # 将v0.1.2标签提交到git服务器
$ git push origin --tags # 将本地所有标签一次性提交到git服务器
例:
git签入:
$ cd /f/cnbsln_branch/cnbsln/
$ git pull
$ git push -b loanreport
$ git push origin
$ git commit -m 'update view'