git:如何在分支创建

时间:2017-07-12 18:11:40

标签: git github version-control

我希望在分支创建之前立即看到分支和主分区之间的区别,以查看对分支所做的所有更改。

我在工作目录(dirA /)中获取我的最新分支:

cd /home/me/dirA/
git clone <my remote repo>
git checkout my_branch

我想在创建my_branch之前获取master: cd / home / me / dirB / git clone 在我更改my_branch之前,如何在我执行git branch my_branch之前立即签出主提交?

2 个答案:

答案 0 :(得分:0)

  

我希望在分支创建之前立即看到分支和主分区之间的区别,以查看对分支所做的所有更改。

...运算符可以显示与基本分支相比在分支中完成的所有更改:

git diff origin/master...

(在...之后没有任何内容,这不是一个错字。这相当于git diff origin/master...HEAD,只是缩短了类型。)

答案 1 :(得分:0)

您(可能是无意中)提出了两个问题。

你想要完成的事情

  

我希望在分支创建之前立即看到分支和主分区之间的区别,以查看对分支所做的所有更改。

git diff有特殊符号的东西。

git diff master...my_branch

请注意,...在不同命令中的使用方式有所不同。但是对于diff,它完全符合您的要求。 (特别是,在diff的情况下,两个点的作用会有所不同,如果您习惯使用.. log,则可能会造成混淆。)

虽然这可能是你真正需要的信息,但你实际要求的是

  

在我更改my_branch之前,如何在我git branch my_branch之前立即签出主提交?

找到您要使用的提交

git merge-base master my_branch

在bash shell中,您可以说

git checkout `git merge-base master my_branch`

从您的问题来看,您似乎计划查看不同克隆中的每个分支。这比使用上面的git diff命令唯一明显的优点是两个树都在你的文件系统上,所以如果由于某种原因你想要用于比较的工具不会与git玩得很好,你仍然可以使用它。

实际上,即使没有第二次克隆,你也可以使用git worktree检查单个仓库中的第二个工作树;但是只有真的才能解决(1)克隆的大量开销(可能是因为对LFS存储的依赖性?),或者(2)你打算保留两棵工作树并且不想管理两个数据库/两组refs