<<Git图解>>笔记

Git图解: http://marklodato.github.com/visual-git-guide/index-zh-cn.html


笔记:


git add files # 把当前文件放入缓冲区(索引)
git add * # 把所有修改过的文件放入缓冲区(索引)
git rm files # 从缓冲区(索引)删除files
git commit # 给缓冲区(索引)生成快照并提交
git reset -- files # 用来撤销最后一次git add files
git reset # 撤销所有缓冲区(索引)文件
git checkout -- files # 把文件从缓冲区(索引)复制到工作目录,用来丢弃本地修改


git commit -a # 相当于运行git add *,再运行git commit
git commit files # 相当于运行git add files,再运行git commit
git checkout HEAD -- files # 回滚到最后一次提交


git diff da985 b325c # 对比da985与b325c两次提交处的差异
git diff maint # 对比maint分支与当前工作目录两处的差异
git diff # 对比缓冲区与当前工作目录两处的差异
git diff HEAD # 对比HEAD与当前工作目录两处的差异
git diff --cached # 对比HEAD与缓冲区两处的差异


git commit --amend # 用当前提交的父节点(HEAD~)进行一次新提交(变成新的HEAD),旧的提交(原HEAD)会被取消


git checkout HEAD~ foo.c # 把节点HEAD~(当前提交节点的父节点)的文件foo.c复制到工作目录并且生成索引(缓冲区),注意当前分支没有变化
git checkout maint # 切换到maint分支,同时把缓冲区(索引)和工作目录切换到那个分支对应的状态
git checkout master~3 # 切换到一个匿名分支(detached HEAD),master~3: master分支所指节点的曾祖父节点
git checkout -b name # 创建一个新的分支


git reset HEAD~3 # 将当前分支指向另一个位置(当前分支所指节点的曾祖父节点),另有如下选项:
    # --hard: 更新分支位置的同时,更新缓冲区(索引)和工作目录
    # --soft: 不更新缓冲区(索引)
    # 如果没有给出提交点的版本号,那么默认用HEAD,即: git reset代表着git reset HEAD


git reset -- files # 如果给了文件名(或者-p选项),那么工作效果和带文件名的checkout差不多,不同的是: 这里不会更新工作目录


git cherry-pick 2c33a # "复制"一个节点2c33a,并将其在当前分支做一次完全一样的新提交




git rebase master # 在master分支上重演当前分支(HEAD指向)的历史,提交历史是线性的;本质上,这是线性化的自动的cherry-pick
git rebase --onto master 169a6 # 使用--onto选项限制回滚范围;在master分支上重演当前分支从169a6以来的最近几个提交(不包含169a6)
git rebase --interactive # 更方便地完成一些复杂操组,比如丢弃、重排、修改、合并提交


git rebase更多细节: http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html#_interactive_mode
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值