什么是git相当于svn status -u或更详细svn status --show-updates.该svn status --show-updates命令显示svn update命令将从服务器带来的更新.
谢谢!
tia*_*mex 34
没有实际获取更新(也许其他人会),我想不出办法.假设您在默认分支"master"上,并且这些假设更新将来自的上游是默认远程"origin",请尝试....
git fetch
git log --name-only ..origin/master
Run Code Online (Sandbox Code Playgroud)
注意双点..不是单个点或省略号1.
这将为您提供仅上游更改的日志条目列表,受文件名影响,您可以将参数更改为git log以获取更多或更少的信息.
在git中"提取"这些更新与将它们应用到本地分支不同.毫无疑问你已经知道如何用git pull做到这一点.
1双点来自何处,name1..name2表示范围.如果name1省略,HEAD则在其位置使用.此语法指的是从name2返回但不包括的所有提交HEAD.[ "Git from the bottom up" ]
Jak*_*ski 30
无论Martinho费尔南德斯和tialaramex答案正确地描述你需要做什么.让我来描述它为何如此.
Subversion是集中式版本控制系统.这意味着它以客户端 - 服务器方式运行:服务器存储有关版本(存储库)的所有数据,客户端只有工作目录(文件)以及一些管理和帮助数据.这意味着对于大多数命令,客户端必须联系服务器.这也意味着有许多命令询问服务器上的存储库状态或服务器配置,例如" svn status --show-updates".
(旁注:Subversion在客户端上存储的一个帮助数据是文件的"原始"版本,这意味着检查您所做的更改不需要连接到服务器(这很慢)......但它也意味着SVN checkout可能比Git存储库大.)
"svn update"(如果存储库在给定分支中有任何更改,则在提交之前需要)从远程下载最后一个版本并合并(尝试合并)您对远程更改所做的更改.恕我直言这个更新前提交工作流程不是很传导.
Git是分布式版本控制系统.这意味着它以点对点的方式运行:每个"客户端"都包含有关版本的所有数据(完整存储库).中央存储库仅仅是因为社会惯例而非技术限制.这意味着当联系其他远程存储库时,"远程执行"的命令数量非常少.您可以使用"git ls-remote"(以及"git update show")索引引用(头部也称为分支和标签),您可以使用"git fetch"(或"git"来拉取(获取)或推送(发布)数据远程更新")/"git push",如果服务器配置为允许它,您可以使用"git archive --remote"获取远程存储库状态的快照.
因此,要检查远程存储库中但在存储库中不存在的提交,您必须将数据下载到您的计算机.但是"git pull"实际上只不过是下载数据的"git fetch"和合并它的"git merge"(用一点糖来准备提交消息并选择合并哪个分支).然后你可以使用'git fetch'(或"git remote update"),用"git log"和"gitk"检查新带来的提交(不限于固定输出),然后如果一切都好,则合并更改为" git merge".
这不是特定于Git,而是针对所有分布式版本控制系统,尽管SCM呈现已获取但未合并的数据的方式可能不同(Git在'remote/<remotename>/*'命名空间中使用远程跟踪分支,Mercurial来自我的理解,使用未命名的头).
HTH
R. *_*des 13
如果你取:
git fetch <remote>
Run Code Online (Sandbox Code Playgroud)
而不是拉:
git pull <remote>
Run Code Online (Sandbox Code Playgroud)
从遥控器,你可以检查改变了什么git log.要应用更改:
git merge <remote>/<remote-branch>
Run Code Online (Sandbox Code Playgroud)