今天继续学习Git的一些基本操作
- git commit –amend 修改提交信息
上面是昨天的提交信息:”Fix conflict”
现在改成:”Merge branch ‘fix-B”,完成后保存退出,可以看到:
再用git log –graph,看一看:
- git rebase -i 压缩历史
在合并分支前,若发现已提交的内容中有些许像拼写之类的错误,可以提交一个修改,然后将这个修改包含到前一个提交中,压缩成一个历史记录。这就着手做:
先创建一个branch-C分支:
此时已经切换到了branch-C分支下面,这时在README.md文件中插入一行:”there is an spell error : heloo world”
用 git commit -am 命令可以同时执行 git add 和 git commit -m
ok,现在我们可以修改README.md的内容,把heloo 改成 hello后。执行git diff,可以看到 修改之前和之后的差别:
再提交:
把拼写错误相关的的提交信息写为:Fix typo,由于这次的spell error,只是一个失误,所以尽量不要体现在历史信息中,所以下面就要开始尝试把这次历史信息与之前的一次提交合并,先输入git rebase -i HEAD~2,可以看到下面的编辑器,现在只需要把Fix typo前面的pick 修改成 fixup就可以了:
可以看到successfully(这个过程可能需要半分钟时间),然后再看看日志:
merge branch ‘fix-B’后就是Add branch-C了,没有fix typo了。
现在我们可以merge到master分支下面去了,merge之前先切换到master分支
这样就ok了。
- git push 推送至远程仓库
a.推送至master 分支
先在GitHub上面创建一个和本地仓库名字一样的仓库:git-tutorial ,用它来作为本地仓库的远程仓库,由于本地的仓库中已经有了README.md文件,所以创建远程仓库时就不需要创建README.md文件了。
关于后面的-u,现在先不看。最后面是master,说明推送至master分支。origin就可以看成远程仓库的名字,这里好像和git-tutorial是两个概念。现在我们刷新GitHub,就可以在code下面看到所有的文件:
b.推送至master以外的分支
在本地先创建一个branch-D,再push到origin远程仓库下面:
在GitHub上面的all branches 栏可以看到:
branch-C 哪里去了呢。。。。(待定)
从远程仓库获取
上面我向远程仓库中push了branch-D分支,选择另外一个目录(git-tutorial-push-pull),把branch-D分支clone到该目录下,做一些修改,然后再push到GitHub,最后再回到原先的目录,这个目录下的branch-D分支什么都没做,然后再将最近的branch-D分支pull到该目录下。下面就实现这个功能:
git branch -a 命令查看当前分支的相关信息,-a参数可以同时显示本地仓库和远程仓库的分支信息,下面将branch-D分支获取到本地:
我在该目录下的README.md文件中加了这么一句话:“learning push and pull”,再运行git diff,可以看到这句话:
再提交,再push到GitHub上面:
看一下GitHub上面的branch-D分支更新了没:
可以看到“learning push and pull” 这句话已经更新到GitHub上面。
那么我们原先的目录下的branch-D是没有刚刚我push的代码的,所以现在将其更新到最新的状态:
再看看目录下面的README.md文件:
可以看到,这里已经更新到了最新的状态。
如果多个人对同一分支做修改的话,push时会发生的冲突时,频繁的进行push和pull可以减少冲突的发生的。待开发中更多的使用,再去体会。
参考书籍:《GitHub 入门与实践》