赞
踩
目录
1、记述一行提交信息: git commit -m "提交描述"
git log --pretty=short 只显示提交信息的第一行
git log -p 目录/文件 显示特定的目录/文件的改动
初始化之后,会在当前目录生成一个.git的隐藏文件夹,这个 .git 目录里存储着管理当前目录内容所需的仓库数据
这个目录的内容称为“附属于该仓库的工作树”
当前正处于 master 分支下,nothing to commit说明仓库没有任何更改,没有可提交的内容
创建 README.md文件,然后再输入命令git status
可以看到在 Untracked files(还没有加入缓冲区) 中显示了 README.md 文件
运行 git add README.md后,输入命令git status查看状态
README.md 文件显示在 Changes to be committed(加入缓冲区) 中了
对于任何一个文件,在 Git 内都只有三种状态:
1、已修改(modified) Git 的工作目录
2、已暂存(staged) 暂存区域
3、已提交(committed) 本地仓库
在README.md中添加 ### hello
通过git status查看状态
git commit回车结果如下:
Changes to be committed可以看到本次提交中包含的文件
在编辑器中记述提交信息的格式如下。
● 第一行:用一行文字简述提交的更改内容
● 第二行:空行
● 第三行以后:记述更改的原因和详细内容
编辑完成,wq保存退出即可
如果想终止提交,请将提交信息留空并直接关闭编辑器,随后提交就会被中止。
把### hello改为### hello world
“+”号标出的是新添加的行,被删除的行则用“-”号标出
在执行 git commit命令之前先执行git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行提交。这里的 HEAD 是指向当前分支中最新一次提交的指针。保险起见,我们用git log查看一下提交日志,确认提交是否成功。
为了便于说明,重新建一个文件夹git-tutorial,git init初始化后,建一个README.md文件,并依次用命令git add README.md、git commit -m "first commit"提交
master 分支左侧标有“*”(星号),表示这是我们当前所在的分支
执行git checkout -b feature-A命令,创建名为 feature-A 的分支
git checkout -b feature-A等于下面2条命令
git branch feature-A # 创建feature-A分支
git checkout feature-A # 切换到feature-A分支
这时候查看,已经切换到feature-A分支下
切换回上一个分支 git checkout -
在feature-A分支下,添加 - feature-A,如图,
用下面命令行提交(如果不提交,更改的文件内容不会记录在feature-A分支,切回master分支后,相当于feature-A什么东西也没有修改)
git add README.md
git commit -m "Add feature-A"
插入2个概念:
- 特性分支:集中实现单一特性(主题),除此之外不进行任何作业的分支。
- 主干分支:主干分支是刚才我们讲解的特性分支的原点,同时也是合并的终点。通常人们会用 master 分支作为主干分支。
主干分支和特性分支都可以有多个。一般来说,一个特性分支对应一个功能,一个主干分支对应一个软件版本
首先 git checkout master 切换到 master 分支
为了在历史记录中明确记录下本次分支合并,我们需要创建合并提交。因此,在合并时加上 --no-ff参数
git merge --no-ff feature-A
默认信息中已经包含了是从 feature-A 分支合并过来的相关内容,所以可不必做任何更改。将编辑器中显示的内容保存,关闭编辑器,然后就会看到下面的结果。
git rest --hard 哈希值 恢复到某个时间点的状态
git checkout -b fix-B 创建 fix-B 分支,并在README.md添加一行- fix-B
运行下面命令提交
git add README.md
git commit -m "Fix B"
现在状态如图:
目标如图:
git log命令只能查看以当前状态为终点的历史日志。所以这里要使用 git reflog命令,查看当前仓库的操作日志。
圈出来部分表示feature-A 特性分支合并后的状态,对应哈希值为 39d1ac0
切换回master分支:git checkout master,回溯历史版本:git reset --hard 39d1ac0 此时状态如图
合并fix-B分支:git merge --no-ff fix-B
打开README.md文件
=======上面是当前 HEAD 的内容,下面要合并的 fix-B 分支中的内容
本次修正让 feature-A 与 fix-B 的内容并存于文件之中。但是在实际的软件开发中,往往需要删除其中之一,所以各位在处理冲突时,务必要仔细分析冲突部分的内容后再行修改。修改如下
执行git add README.md和git commit -m "Fix conflict"完成代码提交
如果想把上面的提交信息 Fix conflict 更改为 Merge branch 'fix-B' ,输入git commit --amend
进入如下界面
把图中的Fix conflict改为Merge branch 'fix-B',再用git log --graph查看,发现提交信息已经修改。
创建分支feature-C,并且切换到feature-C下,再README.md添加feature-C,但是由于写快了,写成了feature-D
但是已经提交了,提交信息为 Add feature-C
修改错误后如下
然后用命令 git commit -am "Fix typo"提交 ,但是下图圈出来2个地方希望合并
git rebase -i HEAD~2选定当前分支中包含HEAD(最新提交)在内的两个最新历史记录为对象
将 288745f 左侧的 pick 部分删除,改写为 fixup 。保存文件
结果
然后git checkout master,git merge --no-ff feature-C合并分支到master
里面很多内容摘自《GitHub入门与实践》
git官方中文文档:https://git-scm.com/book/zh/v2
码云git大全:https://gitee.com/all-about-git
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。