SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mn版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。 git图像化界面:gitk 1.交互式暂存 git add -i(--interactive) 2.提交范围 双点:2个分支的差异。比较某个分支到另一个分支差异。 git log origin/master..HEAD 三点:不是2者共有的引用。 3.重整log git commit --amend git rebase -i(!!!每一次提交都会被重写,无论是否修改。所以不要覆盖已推送的提交——这样做会使其他开发者产生混乱,因为你提供了同样变更的不同版本) git commit --amendgit rebase --continue 压制(Squashing)提交 4.patch 1.git applygit apply比patch -p1更为严格,且不会出现混乱。 git diff格式描述的补丁:还会相应地增加,删除,重命名文件。普通patch命令不会这么做。git apply是事务性操作命令。要么所有补丁都打上去,要么全部放弃。不会出现patch那样。 仅仅是更新文件,所以此命令不会自动生成提交。 git apply --stat git apply --check如果有问题,返回非零状态,shell脚本可用于检测状态。 --directory=指定目录 2.git am mbox格式的文件 From 加空格和信息git format-patch还包含作者信息和提交信息。 -M 祖先-s 某次提交之后 -1 单次 -s --root origin 从origin到指定提交 传统diff命令生成的补丁,只能用git apply处理。 自动创建提交对象 git am --resolved提交修正结果 -3选项进行三方合并。对于打过的补丁再打一遍,自然产生冲突,可以加上-3选项。 -i交互模式。 5.存储 多个分支之间切换 git stash list git stash apply stash@x git stash drop stash@xgit stash branch xxx 1.什么是衍合? merge:3方合并,形成一次提交。把最终结果合并。衍合:把一个分支的提交改变在另一个分支重放一遍。 原理:回到2个分支的共同祖先,提取所在分支每次提交的差异,差异保存到临时文件,然后从当前分支切换到需要衍合入的分支,依次施用每一个差异补丁文件。然后可以回到需要衍合分支,进行一次快进合并。 衍合产生一个更为简洁的提交历史。仿佛所有修改都是先后进行的,尽管实际上他们原来是同时发生的。 衍合到远程主线分支。 --onto 衍合的风险 2.git revert和git reset git revert 是撤销某次操作,此次操作之前的commit都会被保留 git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区 3.推送某次提交到远程 Git最初作为Linux的版本控制工具,提供了透明、完整、稳定的Patch功能。 一是用git diff生成的标准patch,二是git format-patch生成的Git专用Patch。diff 和format-patch的比较:
1.一次提交生成patch git format-patch -1 commit 2.多次提交生成patch git format-patch -n commit n为几次提交 3.某次提交之后所有的修改生成patch git format-patch -s三个区域/三类对象理解git里的三个区域概念非常重要。git里很多常用的命令都是围绕着这三个区域来做的。它们分别为:
git中还有三类常用对象(实际不止三种),理解这三类对象也很重要。分别为:
暂存区文件: git ls-files --stage 1.git当前分支合并远程分支 git-blame - Show what revision and author last modified each line of a file
|
|