第12章 改变历史:
$ git commit --amend -m "Remove hello.h, which is useless." 修改提交说明
$ git log --decorate : 参数decorate表示显示提交所属里程碑tag
$ git cherry-pick [commit] : 拣选指令
$ git cherry-pick -C C : 重用C提交的提交说明
$ git rebase --onto <newbase> <since> <till>: 对提交执行变基操作,即可以实现将指定范围的提交“嫁接”到另外一个提交至上。
变基操作的过程:
(1)首先执行git checkout切换到<till>
(2)将<since>..<till>所标识的提交范围写到一个临时文件中
(3)将当前分支强制重置(git reset --hard)到<newbase>
(4)从保存在临时文件中的提交列表中,讲提交逐一按顺序重新提交到重置之后的分支上
(5)~(6)...
$ git tag -d <commit>: 删除创建的里程碑
$ git rebase -i <commit>: 进入交互界面通过编辑器vi修改变基操作内容
由里程碑A对应的提交构造出一个根提交的两种方法:
(1)$ echo "Commit from tree of tag A." | git commit-tree A^{tree}
(2)$ git cat-file commit A^0 | sed -e ‘/^parent/ d‘ > tmpfile
$ git hash-object -t commit -w -- tmpfile
$ git revert head : 反向提交命令
第13章 Git克隆:
用法1:
$ git clone <repository> <directory>
为了实现同步,需要进入到备份版本库中,执行git pull命令
通过查看配置文件(包含对上游版本库的注册信息)
$ git remote -v
用法2:
$ git clone --bare <repository> <directory.git>
$ git push /path/to/repos/demo.git : 推送
用法3:
$ git clone --mirror <repository> <directory.git>
对于使用$git init命令的空的裸版本库,第一次推送需要指定引用:
$ git push /path/to/repos/demo-init.git master:master
(一些remote命令的使用)