git
.git文件:用来跟踪管理版本库(repository)
stage(或者叫index)的暂存区
master主分支(自动创建)
HEAD指针
所以,git add
命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit
就可以一次性把暂存区的所有修改提交到分支。
廖雪峰教程: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git从已有分支拉新分支开发
创建分支-及概念示意图
git branch <分支name>:带上分支名,即为创建@名称的分支。
git checkout <分支name>:带上分支名,即为切换至@分支。
git checkout –b <分支name>:命令加上-b参数表示创建并切换分支,相当于上述两种命令的结合。
查看所有分支
git branch:列出本地所有分支,同时会在当前分支前显示“*”号。
git branch -r:列出远端所有分支。
git branch -a:列出远端和本地所有分支。
开发过程中经常用到从master分支copy一个开发分支dev,下面我们就用命令行完成这个操作:
1. 切换到被copy的分支(master),并且从远端拉取最新版本
$git checkout master
$git pull
2. 从当前分支拉copy开发分支
$git checkout -b dev
Switched to a new branch 'dev'
3. 把新建的分支push到远端
$git push origin dev
4. 拉取远端分支
$git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> dev
经过验证,当前的分支并没有和本地分支关联,根据提示进行下一步:
5. 关联
$git branch --set-upstream-to=origin/dev
6. 再次拉取 验证
$git pull
主副分支合并
git checkout master:切换回到master主分支,HEAD标识分支点切回master。
git merge <分支name>:指定分支合并至当前分支。
注: git branch:使用此命令查看当前所在分支。
注:返回信息会告知本次合并的模式,此次合并为“Fast-forward”模式,既“快进模式”。
说明:
一般情况下的分之合并,Git会自动使用“Fast Forward”模式合并,既快速合并分支,但快速合并分支后,若删除经过快速合并的分支,会丢失分支信息,因此可以禁用“Fast Forward”方式合并,这样Git就会在“merge”合并时生成一个新的commit序列,这样即可在分支历史上看到分支信息。
git merge --no-ff -m "merge with no-ff" dev:合并分支,将dev并入master,并禁用“Fast Forward”模式合并。
①.--no-ff:本次合并分支禁用“fast forward”快速合并,使用递归方式进行。
②.--no-ff –m:创建新的commit,加上-m,将commit描述写入log。
工具:smartgit 分支合并
情景:存在两个分支:一个自己的开发分支,一个总框架分支,如下图红框中所示,我自己开发在hudfang-local分支上进行,我领导开发在Feature/demo分支上,他做了修改同步到到demo分支上,我作了修改commit到hudfang-local分支上。现在我要合并他新提交到Feature/demo分支上的代码到我的分支上。
合并方法
(1)commit我在hudfang-local上的所有修改
(2)在smartgit离切换到feature/demo branch,pull
(3)切换回hudfang_local branch(右键 check out)
(4)右键单击feature/demo branch,选择merge
(5)在弹出的对话框里选merge to working tree
(6)如果没有conflict,commit所有的更改即可。(选中所有更改 ,右键点击commit)
查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit:查看分支合并记录。
注:合并后无用的分支线即可删除。
git branch -d <分支name >:加-d和分支名将删除指定分支,-d=Deleted。
注:删除后使用git branch即可查看分支目录中是否已经删除指定分支。