phabricator和Git功能上的区别:
1.phabricator可以给工程添加开发人员的权限,git中的项目不可设置,除非你包装一个git。
2.phabricator使用arc查看diff和merge代码,执行arc命令后,会将代码pr发到phabricator平台。git提pr时,需要用户在代码仓库界面中操作,命令行无法实现自动建设pr。
phabricator和Git操作命令上的区别:
phabricator上代码提交等命令同git,主要的不同在:不同版本代码diff和merge代码。
git checkout -b feature_xxx
— 创建一个新分支,并修改代码git add . && git commit -m tt
— 将该提交的都提交上去arc diff [last_commit]
- arc 全称是 arcanist,百度给出的中文翻译是:巧匠。
- 此命令会将 last_commit 到最新的 commit 之间的改动的所有代码发送到 phabricator 平台,并创建一个 revision;
- 如果没有指定 last_commit,则会使用 master 分支来作为 last_commit 的起点。
- 运行命令后会弹出一个编辑面板,在此面板中你需要指定 reviewers,即指定一个或多个给你 review code 的人。
- 如果指定了多个 reviewers,则其中任何一个 review 通过就可以,不用全部 review 通过。
- 另外编辑面板中也有一个 test plan 选项,国外人一般每个项目都有测试,所以此项是必填的,如果没有测试,我们只需要随便设置一个字段即可,比如设置成
no
或skip
- 如果觉得指派reviewer的用法不太方便,可以执行
arc diff --preview
根据生成的diff页面进入配置,生成revision.
- 以上操作之后,系统会发送邮件通知 reviewers 去 review 你的代码,你也可以通过
arc list
来查看当前 review 的状态 - 后续
- 如果 review 没有通过,你需要在原来的基础上修改,修改完并 commit 之后需要执行
arc diff [last_commit] --update D(id)
继续 review - 如果 review 通过了,只需要运行
arc land --onto some_branch
, arc 会将你当前分支合并到 master 上,并删除当前分支
- 如果 review 没有通过,你需要在原来的基础上修改,修改完并 commit 之后需要执行
总结
git常用命令:
git add . // stage 所有文件(如果有删除的不行)
git add - -all // stage所有文件,包括新添加的和删除的
git commit -am "xxx" // 相当于stage 然后 commit。但是**不会包含新添加的文件**
git commit -a --amend -C HEAD // update还未push的commit, -C 表示重用上次的注释信息
git show // 查看上次commit所做的修改,good
git diff HEAD^ // 查看上次commit和workingspace的 diff
git branch -a // 查看所有本地和远端的分支
// git checkout --track -b origin/daves_branch // 默认新建跟远端一样的分支
git checkout --track -b localBranchName origin/remoteBranchName // 切换到远程分支并track
git fetch -p // fetch 并删除不存在的远端跟踪分支(prune)
git reset --hard <HASH> // 回退到某个版本
arc常用命令:
arc diff // 提交默认的diff,这个需要切换到master分支上做修改,本地将x分支merge到master上,然后后在arc diff
arc diff xxx --preview // 提交针对某个分支的commit,并只生成diff文件,不在web端创建revision
arc which // 查看arc diff 会提交哪个范围的diff
arc land // 提交代码,删除该分支 or 使用 git push 并合并到master
arc list // 查看有哪些revision和其状态
参考:
1.https://www.cnblogs.com/zealousness/p/10491100.html
2.arc:https://www.jianshu.com/p/e8d520f65916?from=timeline&isappinstalled=0