Git- 了解 diff 命令的输出

Git- understanding the output of a diff command

我最近接手了一个Python/ Django项目的开发,其中Git作为软件维护和发布等的版本控制

之前完全没有使用过 Git,我仍在习惯如何使用它来有效地管理版本控制。

我最近对服务器进行了一些更改以修复一个特定的错误 - 这个错误现在已经修复,并且该功能在软件的实时版本上正常工作。

但是,在将我开发的 branchmaster b运行ch 合并时,我需要 reset 到旧版本的我设法破解本地 master b运行ch.

的代码

现在,将我的本地 master 推送到服务器,并修复了这个错误,似乎我已经破坏了服务器上的另一个页面 - 这个页面一个月或一个月出现了一些问题so ago,我当时修复了,我在本地master上执行的reset是几天前最后一次修改的版本,所以这个bug应该不在我reset的版本到,但不知何故这似乎已经破坏了另一个页面,即使它在将最新的错误修复推送到服务器之前工作。

我的本地机器上有几个 b运行ches,所以尝试检查一个旧的,我知道这个页面仍然有效 - 在我的本地服务器上浏览到它,我可以看到确实如此。

I then 运行 a git diff master exportAddsOmits,其中 exportAddsOmits 是旧 b运行ch 的名称,损坏的页面仍在其上工作。此命令产生了以下输出:

 (moon) user:moon user$ git diff master exportAddsOmits
diff --git a/buying/views.py b/buying/views.py
index 08d2fd6..b2f8fe6 100644
--- a/buying/views.py
+++ b/buying/views.py
@@ -651,10 +651,7 @@ def order(request, supplier_id):
            # project = Project.objects.get(id=request.GET.get('project'))
            order_form.initial['project_raw'] = request.GET.get('project')

 -       #project_choices = OrderItem.NON_PROJECT_CHOICES+[('', '-----')]+[(project.id, project.project_name) for project in Project.objects.filter(archived=False, detailed_status=Project.ds9).order_by('project_name')]
-       #(23/11/2016 @ 1110) Add 'Deposit Received' projects to drop down in 'Item Project':
       project_choices = OrderItem.NON_PROJECT_CHOICES+[('', '-----')]+[(project.id, project.project_name) for project in Project.objects.filter(archived=False, detailed_status=Project.ds9).order_by('project_name')]+[(project.id, project.project_name) for project in Project.objects.filter(archived=False, detailed_status=Project.ds8).order_by('project_name')]
-
 +       project_choices = OrderItem.NON_PROJECT_CHOICES+[('', '-----')]+[(project.id, project.project_name) for project in Project.objects.filter(archived=False, detailed_status=Project.ds9).order_by('project_name')]
    top_category_choices = [('', '')] + [(cat.id, cat.name) for cat in Category.objects.filter(parent__isnull=True).distinct().only('name')[:10]] + [('OP', 'Office Purchase')]


 diff --git a/costing/models.py b/costing/models.py
index 5b78684..d845da7 100644
--- a/costing/models.py
+++ b/costing/models.py
@@ -732,12 +732,8 @@ class Deposit(models.Model):
    def adjust_payment(self):
            p = Payment.objects.get_or_create(project=self.project, is_booking_deposit=True)[0]
            p.date_paid = self.date_received
-               print "p.date_paid has been set to self.date_received in Deposit.adjust_payment (costing/models.py)"
            p.amount_exc_vat = self.amount_exc_vat
-               #p.deposit = self.deposit
-               # ERF(21/11/2016 @ 1645) Try adding a line for date_received
-               #p.date_received = self.date_received
-               #print "p.date_received is being set to self.date_received in costing/models.py (line 739): %s " % p.date_received
+               p.deposit = self
            p.save()

         def __str__(self):
 diff --git a/costing/templates/costing/adds_omits.html b/costing/templates/costing/adds_omits.html
index 4d28188..a33fde5 100644
--- a/costing/templates/costing/adds_omits.html
+++ b/costing/templates/costing/adds_omits.html
@@ -24,12 +24,6 @@

我不确定如何解释这个...有很多行以 +- 开头,我理解为 diff 命令显示第一个 b运行ch 中存在但第二个中不存在的行,或者第一个 b运行ch 中不存在但第二个中存在的行...但我不知道这是哪条路...

是否以 - 行开头的行存在于第一个 b运行ch 中,我给了 diff(即 master),但不是第二个(即 exportAddsOmits)和以 + 开头的行,这些行在第一个 b运行ch (master) 中不存在,但在第二个 ([=19) =]), 还是反过来?

我需要手动解决这些差异,还是可以将旧的 b运行ch (exportAddsOmits) 与我的 master b运行ch 合并?如果我合并,这可能会撤消我刚刚实施的修复吗?

每个差异针对两个分支中不同的每个文件

- 行显示在第一个分支中从该文件中删除但不在其第二个分支版本中的行

+ 行显示从第二个分支添加到文件中的行不在其第一个分支版本中

它的工作方式是每次你更改文件的一行时它都会生成一个 - 和一个 + 就像它删除旧行并添加一个新行,即使你只更改了该行中的一个字符。

没有前缀的行没有变化,只是为了上下文

希望对您有所帮助

无论您使用什么 git diff master exportAddsOmits(- 用于 master b运行ch 文件,+ 用于 exportAddsOmits b运行ch 文件)或 git diff exportAddsOmits master(- 用于 exportAddsOmits b运行ch files, + for master b运行ch files), git 会给你类似的输出,但有很多不同。因为 git diff 命令给出了两个 b运行ches 之间的文件差异。我们确定,两个 b运行ches 中的文件是不同的,所以这两个命令都应该有输出。

当您 运行 git merge exportAddsOmits 时,它显示 已经是最新的 。这是由两个 b运行ch 之间的提交历史造成的,就像

A---B---C---D              exportAddsOmits
             \
               E---F---G   master

所以你应该比较两个 b运行ches 提交差异而不是文件差异。您可以使用 git log exportAddsOmits..master,将在 master b运行ch 中显示提交,但在 exportAddsOmits b运行ch 中不会显示提交。并且 git log master..exportAddsOmits 将没有输出,因为 exportAddsOmits 比 master b运行ch.

更老(或者我们称之为父级)