繁体   English   中英

git-了解diff命令的输出

[英]Git- understanding the output of a diff command

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

以前根本没有使用过Git,但我仍然习惯于如何使用它来有效地管理版本控制。

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

然而,合并时branch上,我已经与发展master分支,我需要reset到旧版本的代码,因为我设法打破我的本地master分支。

现在,将我的本地master服务器推送到服务器上,并实现了此错误的修复程序,看来我已经破坏了服务器上的另一页-一个月左右之前,此页存在一些问题,我当时已修复,而我在本地主机上执行的reset是几天前最后一次修改的版本,因此该错误不应该存在于我重置为的版本中,但是以某种方式似乎破坏了另一页,即使在将最新的错误修复程序推送到服务器之前它仍在工作。

我的本地计算机上有多个分支,因此尝试签出旧的分支,在那里我知道此页面仍然有效-在本地服务器上浏览到该分支后,我可以看到它确实起作用。

然后,我运行了一个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 )与我的master分支合并? 如果合并,是否有可能撤消我刚刚实施的修复程序?

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

-行向您显示从该文件的第一个分支中删除的行,而不是第二个分支版本中的行

+线表示您将最中间的行从第二个分支添加到文件中,而不是在第一个分支版本中

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

无前缀的行只是未更改,因此存在上下文

希望能有所帮助

无论您使用git diff master exportAddsOmits (-对于主分支文件,+对于exportAddsOmits分支文件)还是git diff exportAddsOmits master (-对于exportAddsOmits分支文件,+对于master分支文件),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比master分支更旧(或我们称为父节点)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM