当前都是使用git进行项目代码的合并,提交等操作,该篇主要是对git进行回顾,来源主要为网上的资料整理以及实践。

git分支模型

git主要分为
1)工作区
2)本地暂存区
3)本地仓库
4)远程仓库

常见命令

将文件添加到暂存区

命令:git add readme.txt

将文件提交到仓库

命令:git commit –m “readme.txt提交”

查看提交状态

命令:git status

无变化时的状态

有变化时的状态,修改文件,但还未添加到暂存区

查看变更情况

命令:git diff xxx(文件名称)

工作区和暂存区的比较

提交状态

命令:git log

查看提交记录的状态信息
可以使用git log --pretty=oneline的方式查看简易信息

回退操作

git reset –-hard HEAD^(回退上一个版本)
git reset –hard HEAD~n(回退N个版本)

查看引用

git reflog
显示所有的操作记录,包括提交和回退等操作,可以结合git reset –hard xxx进行回滚操作

git 检出操作

命令: git checkout -- xxxx(文件名称)格式
1)文件修改后,还没有放到暂存区,使用撤销则回到和原来一样的版本中
2)已经放入暂存区的,撤销后就回到暂存区的状态

git revert操作

用一次新的commit回滚之前的commit,git reset是直接删除指定的commit

分支命令

检出操作

命令:git checkout –b dev
相当于:
git branch dev
git checkout dev

查看当前分支

git branch

合并分支merge


命令: git merge dev
切换到master分支,通过git merge dev,可以合并dev分支的内容

合并分支问题最小化的一种方式是执行频繁的合并操作

合并冲突

当两个分支的内容都提交以后,可以进行分支的合并和冲突的解决

<<<<<<<<<HEAD后面的内容为主分支修改的内容

fenzhi1表示为fenzhi1上修改的内容

分支策略

1)master分支一般是非常稳定的,用来发布新版本,一般不允许在上面干活,通过其他分支合并的方式进行
2)bug分支:每个bug都可以通过一个临时分支来修复,修复完成后,合并分支然后将临时分支删除掉

工作区隐藏

命令:git stash
当开发在进行一部分的时候,需要临时做其他事情,可以通过git stash隐藏当前工作区内容。

当工作区隐藏后

也不是存在暂存区中,此时可以通过git stash list来隐藏状态

1.git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
2.另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。

变基操作

修改多个commit的提交记录

1)示例(合并多个commit)

使用git rebase –i xxxx(commit编号),此处的编号是合并编号后一个提交的内容开始。
如想合并alter a的所有内容,则commit提交使用687d080的编号

将pick修改调整为s

将后面提交的部分内容注释掉,并修改合并要提交的内容

修改合并后的commit内容

2)示例(修改commit分支内容)
同样的,使用git rebase –i xxxx(commit编号)

弹出窗体中修改提交内容

修改后的提交记录如下:

合并分支策略

1)使用merge的情况
merge会保留所有分支的commit内容,并且在merge的时候会生成一个新的提交

2)rebase
只对尚未推送或未分享给别人的本地分支修改执行变基操作清理历史,从不对已推送至别处的提交执行变基操作。


Rebase有一个缺点是拉取分支的时候不知道基地是从哪里出来的。变基以后顺序提交顺序会比较乱。一般使用merge进行操作