我希望在分支创建之前立即看到分支和主分区之间的区别,以查看对分支所做的所有更改。
我在工作目录(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之前立即签出主提交?
答案 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