哪个git命令等效于SVN synchronize?

哪个git命令等效于SVN synchronize?,git,Git,在这里,我的GIT本地存储库是从远程存储库克隆而来的,其中包含时间为T的文件: A.txt B.txt C.txt 在时间T+1时,远程存储库中的文件(被跟踪的文件): 我们看到,A.txt已被修改(I put*),B.txt已被删除,D.txt已被添加 问题:在我的本地帖子上输出(一行一个文件)的git命令是什么: * A.txt (modified) - B.txt (deletion) + D.txt (add) 总之,我想输出本地回购和远程跟踪回购之间的差异。一行对应一个文件(出于可

在这里,我的GIT本地存储库是从远程存储库克隆而来的,其中包含时间为T的文件:

A.txt
B.txt
C.txt
在时间T+1时,远程存储库中的文件(被跟踪的文件):

我们看到,A.txt已被修改(I put*),B.txt已被删除,D.txt已被添加

问题:在我的本地帖子上输出(一行一个文件)的git命令是什么:

* A.txt (modified)
- B.txt (deletion)
+ D.txt (add)
总之,我想输出本地回购和远程跟踪回购之间的差异。一行对应一个文件(出于可读性原因)


非常感谢。

您可以使用命令
git status

将本地与远程进行比较,首先必须获取。通常那只是

git fetch
在这一点上,
git status
将为您提供一个非常粗略的总结,说明您的领先/落后程度,但要真正了解发生了什么变化,您需要做如下操作

git diff --stat origin/master master

(这是假设在本地回购中远程设置为
origin
,这是典型/默认情况。)

就像这样简单。我在找git log或git diff。谢谢。@FrançoisF。-
git status
不会给出您要求的详细信息,如果您没有先执行
git获取
,也不会告诉您任何事情。所以实际上并没有那么简单。好吧,那么在这个用例中它会输出什么(与远程回购进行比较)?但实际上你不会与远程回购进行比较。您将(例如,使用git diff)与修订版(可以由[可选的远程]分支/标记指向)进行比较。因此,如果您想了解远程分支的变化,您可以这样做:
git diff--name status remote/branch name
@FrançoisF不确定您的最后一条评论是什么,但也许这个解释会有所帮助:如果您克隆了一个远程,然后不做任何更改本地repo(或fetch),那么git状态将始终显示您与远程分支保持最新,而不管远程分支上发生了什么。要从远程查看更改,必须
git fetch
;然后状态仍然是非常概括的级别,只是说“您的主分支是origin/master后面的x提交”之类的话<代码>git状态不会告诉您“文件1已修改,文件2已删除,等等”。好的,谢谢。这是使用GIT的常见方式吗?我经常与SVN同步以逐个文件或文件组更新和解决冲突。是的,这是使用git的常用方法。(如果您有一个远程存储库,这是使用git的唯一方法;如果您与其他开发人员合作——这是git设计中的一个关键考虑因素——那么您需要一个远程存储库……)不总是知道远程存储库的状态可能会显得很奇怪,但事实上,git只是让您可以选择在没有远程通信的情况下进行操作(出于各种原因;主要是因为它帮助git达到了不可思议的速度)。如果您需要远程不断更新,您可以随时获取;但你可能会发现你不需要这么做。事实上,我觉得这个过程有点无聊或挑剔。我是否应该只在值得的时候才这样做(毕竟这是信息输出)?例如,在99%的情况下,“git merge”或“git rebase”会自动工作(就像SVN同步工具菜单一样),否则它会提示手动解决git无法自动解决的冲突。我说得对吗?我想与SVN的相关区别在于,在git中,合并或重新基础结合了两条本地工作线(这是可能的,因为整个回购都是本地的)。因此合并操作本身通常会自动工作,但合并本身是一个本地操作;如果您正在合并远程分支中的工作,您应该先获取分支并将其放入本地回购中。(例外情况是,在某些工作流中,您可能会使用
git pull
隐式触发大量合并;而且由于
git pull
也隐式执行提取,这可能看起来更像您习惯的情况。)。。。。。但即使这可能是额外的一步,它也有好处。合并不会影响远程回购,直到您推送,因此,如果出现严重错误,您可以轻松地在本地撤销它,而不会影响其他任何人。这实际上只是为了适应本地操作和远程操作之间的分离。(简而言之:只有fetch、pull和push涉及远程设备;而pull只涉及远程设备,因为它隐式地进行提取。)
git diff --stat origin/master master