Python Git-了解diff命令的输出

Python Git-了解diff命令的输出,python,django,git,version-control,git-merge,Python,Django,Git,Version Control,Git Merge,我最近接手了一个Python/Django项目的开发,其中Git被用作软件维护和发布等的版本控制 我以前很少使用Git,现在仍然习惯于如何使用它来有效地管理版本控制 最近,我对服务器进行了一些更改,以修复一个特定的bug——这个bug现在已经修复,并且该功能在软件的实时版本上正常工作 然而,当我将我一直在开发的分支与主分支合并时,我需要重置为旧版本的代码,因为我设法中断了本地主分支 现在,将我的本地master推送到服务器上,并对该错误进行了修复,似乎我已经破坏了服务器上的另一个页面-大约一个月

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

我以前很少使用Git,现在仍然习惯于如何使用它来有效地管理版本控制

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

然而,当我将我一直在开发的
分支
主分支
合并时,我需要
重置
为旧版本的代码,因为我设法中断了本地
主分支

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

我在我的本地机器上有几个分支,所以我试着检查了一个旧的分支,我知道这个页面仍然有效——在我的本地服务器上浏览了一下,我发现它确实有效

然后我运行了一个
git diff master exportAddsOmits
,其中
exportAddsOmits
是旧分支的名称,断页仍在该分支上工作。此命令已生成以下输出:

 (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
命令,显示第一个分支中存在但第二个分支中不存在的行,或第一个分支中不存在但第二个分支中存在的行。。。但我不知道这是怎么回事

是否以
-
行开头的行存在于我给出的
diff
(即
master
)的第一个分支中,而不是第二个分支(即
exportAddsOmits
)和以
+
行开头的行不存在于第一个分支中(
master
),但在第二个分支中(
exportAddsOmits
),还是反过来


我是否需要手动解决这些差异,或者我是否可以将旧分支(
exportAddsOmits
)与我的
主分支合并?如果我合并,这可能会撤消我刚刚实施的修复吗?

每个差异适用于两个分支中不相同的每个文件

-行显示在第一个分支中从此文件中删除的行,而不在第二个分支版本中

+行显示哪些行是从第二个分支添加到文件的,而不是第一个分支版本

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

不固定的行是不变的,没有上下文


希望这有帮助

每个差异适用于两个分支中不相同的每个文件

-行显示在第一个分支中从此文件中删除的行,而不在第二个分支版本中

+行显示哪些行是从第二个分支添加到文件的,而不是第一个分支版本

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

不固定的行是不变的,没有上下文


希望这有助于

无论您使用什么
git diff master exportAddsOmits
(-用于主分支文件,+用于exportAddsOmits分支文件)或
git diff exportAddsOmits master
(-用于exportAddsOmits分支文件,+用于主分支文件),git将提供类似的输出,但有许多不同。因为
git diff
命令提供两个分支之间的文件差异。我们确信,两个分支中的文件是不同的,因此这两个命令都应该有输出

当您运行
git merge exportAddsOmits
时,它显示已经是最新的。这是由两个分支之间的提交历史记录引起的,就像

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

因此,您应该比较两个分支的提交差异而不是文件差异。您可以使用
git log exportAddsOmits..master
,在master分支中会显示提交,但在exportAddsOmits分支中不会显示提交。并且
git log master..exportAddsOmits
将没有输出,因为exportAddsOmits较旧(或者我们称之为父级)而不是主分支。

无论您使用的是
git diff master exportAddsOmits
(-对于主分支文件,+对于exportAddsOmits分支文件)还是
git diff exportAddsOmits master
(-对于exportAddsOmits分支文件,+对于主分支文件),git将提供类似的输出,但有许多不同。因为
git diff
命令提供两个分支之间的文件差异。我们确信,两个分支中的文件是不同的,因此这两个命令都应该有输出

当您运行
git merge exportAddsOmits
时,它显示已经是最新的。这是由两个分支之间的提交历史记录引起的,就像

A---B---C---D              exportAddsOmits
             \
               E---F---G   master
因此,您应该比较两个分支提交的差异而不是文件的差异。您可以使用
git log exportAddsOmits..master
,在master分支中会显示提交,但在exportAddsOmits分支中不会显示提交。
git log master..exportA