当前工作空间和主服务器之间的'git diff'

时间:2017-09-28 07:15:33

标签: git

我是测试人员,对Git知之甚少。我克隆了一个项目并创建了一个本地工作区。当我想获得最新的源代码时,我使用git pull命令。

如果我错了,请纠正我。我想我没有分店。

现在我想知道我的工作区和主人之间的变化。简而言之,我想知道将在我的工作区中应用的更改。

我尝试了git diff master,但它什么都没有返回。

3 个答案:

答案 0 :(得分:3)

这是Git真正的基础知识。我强烈建议您浏览一下视觉Git教程(只是google)。另外,我建议使用开源GUI工具 Git Extensions ,以便您可以直观地看到提交/分支并更轻松地学习不同的命令。

一些术语和初学者的提示:

  • 您将远程存储库(默认情况下通常称为origin)克隆到PC上的本地存储库中。
  • 您在本地拥有一个工作区,但它是几件事的组合:
    • 本地Git存储库本身,其中存储了有关提交历史记录的所有信息,这允许您为任何提交重新创建工作目录。
    • 工作目录 - 这些是尚未提交到存储库的持续更改和差异
    • 索引 - 这是工作目录的更改已经暂存并准备提交。
    • Stash - 这是一种临时提交,您可以在其中关闭并在存储库中执行其他操作时临时保存工作目录和/或索引中的当前更改。 / LI>
  • 克隆实际上会在PC上创建远程存储库的副本,您可以从远程存储库中单独提交对新本地存储库的更改(然后使用pull和push与其同步)。您不仅可以在本地提交更改,还可以更新存储库,而且在您可以在本地提交更改之前,必须将它们放入索引中。只提交索引中的项目,然后只将提交推送到远程存储库。
  • 当您从远程存储库中时,它会关闭您已检出的当前分支(使用git fetch)的所有新提交,然后git merge本地master分支到您刚刚删除的远程master分支。
  • 除非您已创建新分支并在本地提交,否则您可能在master分支。
  • 合并可能会导致在本地提交合并之前必须解决的合并冲突,然后最终将本地提交推送到远程。

如何查看准备提交的更改:

  • 如果要查看工作目录(未分级)和索引(已暂存并准备提交)中的更改列表,请键入git status
  • 如果您还想查看每个已更改文件的实际更改,则可以键入git diff HEAD

虽然在Git Extensions中查看当前的更改非常容易 - 但只需点击“#34; Commit"按钮,弹出一个窗口,左上方是工作目录,左下角是索引,如果单击其中的任何文件,您将在右侧看到该文件的所有更改。

这不是您正在寻找的差异

(抱歉 - 无法抗拒星球大战的报价)

好的,我终于明白了你的核心问题 - 你没有对本地存储库进行更改,你只是想在拉动之前和拉动之后看到存储库之间的变化 - 看看自上次拉动以来发生了什么变化

这可以通过在拉取之前获取master上的最后一次提交的哈希值,然后使用:

来完成
git diff <hash of prior commit> HEAD

HEAD指的是当前检出的任何提交,或者是您检出的分支的当前提交,或者是否直接检出一个特定的提交(这是一个名为&#34的状态;已分离HEAD&#34)。 HEAD将指向master,它将指向成功提取后存储库中的最新提交。

您可以放置​​最新提交的实际哈希,而不是使用HEAD。请注意,如果您知道有多少提交被删除,您甚至不需要知道提交哈希值。例如,如果先前的提交是两次提交,则可以使用:

git diff HEAD~2 HEAD

HEAD~2只在HEAD的日志中查找两次提交,并使用该哈希。

要使用GUI执行此操作,在Git Extensions中,您只需右键单击先前的提交,然后选择&#34;比较→比较当前分支&#34;为了通过该提交与当前分支的当前位置之间的变化来拉出diff窗口。

当前签出的分支/提交在Git Extensions中以粗体显示,并且应该始终位于列表的顶部,并且旁边有一个>master标记用于您的情况。

答案 1 :(得分:0)

通常,你在Git的一个分支上总是(异常可能是分离的头状态)。除非你记得创建一个分支,否则我猜你是在master分支。要查看相对于开始位置所做的更改,可以从命令行使用以下命令:

git diff HEAD

如果您使用的是IntelliJ或Eclipse等IDE,并使用Gi​​t插件,那么您可以在工作区中直观地看到更多类型的文件差异。

答案 2 :(得分:0)

您可以找到一些步骤。无论你是否创建了分支,都很容易。只需使用

git status 
git diff 

然后,与您克隆的原始母版相比,将显示您所做的所有修改。

如果您已经进行了很多更改,请使用

git diff path/of/file/show/in/git/status