Git 学习笔记 -- 查看某个文件的修改历史

转载:http://www.cnblogs.com/flyme/archive/2011/11/28/2265899.html

有时候在比对代码时,看到某些改动,但不清楚这个改动的作者和原因,也不知道对应的BUG号,也就是说无从查到这些改动的具体原因了~

【注】:某个文件的改动是有限次的,而且每次代码修改的提交都会有commit描述,我们可以从这里进行入手;

一、切换到目录

首先切换到要查看的文件所在的目录:

cd packages/apps/Mms/src/com/android/mms/ui/


二、git log --pretty

然后使用下面的命令可列出文件的所有改动历史,注意,这里着眼于具体的一个文件,而不是git库,如果是库,那改动可多了去了~

git log --pretty=oneline 文件名

如:

复制代码
root@ubuntu:android_src/packages/apps/Mms/src/com/android/mms/ui# git log --pretty=oneline MessageItem.java 
27209385caf678abe878375a470f4edd67a2d806 fix to process force close when empty address contained in card
0e04b16f1dad7dc0a36e2235f7337bc656c365c7 display for 1970-1-1
e4abf3a213197491e0855e101117b59b5dc0160d HREF#13954 receive, store, and display wap push
356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e HREF#16265_uim_show_time_error
350f9d34c35ab50bdb4b2d43fb3ff9780e6c73fa fix xxxx
715e32f97bd9d8ce4b5ba650b97ba4b137150456 Fix ANR from calling Contact.get()
fd8357ff5febab0141e1beb8dd3b26f70416b108 Fix missing From field
d130e2e6dc448fd80ecb70f0d31e3affb9888b9a fix bug 2112925: don't display zip file garbage content in MMS.
0e19f738c114f86d0d88825ee48966015fb48b6d Don't always show sent timestamp
52f854cbb75e8f9975c7e33216b828eb2f981095 Don't show Anonymous as the MMS sender
331864544ec51ba6807fc5471cc6d537b7fef198 add search capability
33a87f96f8c625aa10131a77a3968c97c4ec5a62 Remove all references to ContactInfoCache except those in Contact.
70c73e05a792832aa28da751cdaf3fa83a7b8113 Begin moving all conversation data behind a data model with a cache.
48da875f1beea835c6771977e5bd8a9aa3d4bc10 Begin adding UI unit tests to the Mms app.
66dde9460badebf8e740275cabde9cca256006eb Stop requiring a Context to be passed in to ContactInfoCache.
591d17e9a51bb9f829d6860dc7aa0bad25062cd5 auto import from //branches/cupcake_rel/...@138607
72735c62aba8fd2a9420a0f9f83d22543e3c164f auto import from //depot/cupcake/@135843
892f2c5bf965b1431ae107b602444a93f4aad4a3 auto import from //depot/cupcake/@135843
153ae99e0a7d626a24d61475eeb133249deb448c auto import from //depot/cupcake/@132589
abd7b2d90f7491075f1daba4b4cccdfc82f8ddd1 auto import from //depot/cupcake/@137055
59d72c57ce9c319b6cd43ce2ab36b7076c9e821f auto import from //branches/cupcake/...@132276
44cea74dc55e2459262d0d765ef4a69267dd09b0 auto import from //branches/cupcake/...@131421
0f236f55349f070ac94e12cca963847173393da8 Code drop from //branches/cupcake/...@124589
8eed706474910ccb978acda03e85d3261037da6e Initial Contribution
复制代码

 三、git show


如上所示,打印出来的就是针对文件MessageItem.java的所有的改动历史,每一行最前面的那一长串数字就是每次提交形成的哈希值,接下来使用git show即可显示具体的某次的改动的修改~

git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e

结果如下:

复制代码
root@ubuntu:/android_src/packages/apps/Mms/src/com/android/mms/ui# git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e
commit 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e
Author: 某某某 <某某某的邮箱>
Date: Thu Jan 6 01:50:31 2011 +0800

修改的描述(是该代码commit时所填)

Signed-off-by: 某某某 <某某某的邮箱>

diff --git a/src/com/android/mms/ui/MessageItem.java b/src/com/android/mms/ui/MessageItem.java
index 0a0c4b7..55c3b27 100644
--- a/src/com/android/mms/ui/MessageItem.java
+++ b/src/com/android/mms/ui/MessageItem.java
+
+ 列出具体的改动
-
-
复制代码

这样就可以知道是谁做了修改,以及具体的修改代码~

那接下来不管是直接去找他交流还是研究代码,都有依据了~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `git reset --hard` 命令会将 Git 仓库中的 HEAD 指向指定的提交,同时重置暂存区和工作区,这样会丢失工作区中未提交的修改和所有已暂存但未提交的修改。 如果你只是想撤销暂存区的修改,可以使用以下命令: ``` git reset HEAD ``` 这个命令会将暂存区的修改撤销,但不会影响工作区的修改。如果你想撤销工作区的修改,可以使用以下命令: ``` git checkout . ``` 这个命令会将工作区中所有修改还原到最近的一次提交状态。注意,所有未提交的修改都会被丢弃,因此请谨慎使用。 ### 回答2: git reset --hard 暂存文件是指使用git的reset命令来重置工作区和暂存区,并且放弃对某个文件的更改,恢复到之前的提交状态。 当我们在进行代码开发时,有时可能会修改一些文件,但事后发现自己的修改是错误的或不需要的。此时,我们可以使用git reset --hard命令来撤销对这些文件修改。 使用git reset --hard命令,会同时重置工作区和暂存区,将它们恢复到上一次提交的状态。这个命令会永久性地丢弃我们对文件修改,所以在执行这个命令之前,一定要确保我们不需要保存这些修改。 要使用git reset --hard命令,我们需要先确定要重置的提交版本或分支。可以通过git log命令来查看提交记录,找到我们需要回滚到的版本号或提交哈希。然后,在终端中输入git reset --hard <提交哈希>命令,将工作区和暂存区重置到指定的提交。 需要注意的是,git reset --hard命令会永久性地丢弃所有没有提交的修改,所以在执行这个命令之前,一定要确认工作区中没有重要的未保存的更改。在重置之前,也可以使用git stash命令将修改文件暂存起来,以便稍后可以恢复到当前状态。 综上所述,git reset --hard 暂存文件是一个强制性的重置命令,它可以丢弃对文件修改,恢复到之前的提交状态。但是由于这个命令会永久地丢弃未提交的更改,使用之前需要谨慎确认。 ### 回答3: git reset --hard 对于暂存文件的作用是把所有已暂存的文件回退到最近一次提交的状态。也就是说,执行这个命令后,暂存区中的文件会被清空,工作目录中的文件会与最近一次提交的版本完全一致。 当我们使用 git add 命令将文件添加到暂存区后,我们有时可能会发现自己添加了一些不必要的或错误的文件。这时,可以使用 git reset --hard 暂存文件来撤销这些暂存的文件,使其回到工作目录并且不出现在暂存区中。 另外,当我们想要回退到之前某个提交的状态时,可以使用 git reset --hard 加上想要回退的提交的SHA值来实现。执行该命令后,Git会将HEAD指针和分支指针移动到指定的提交上,并且重置工作目录和暂存区到该提交的状态。这意味着,我们回退后之前的提交及其之后的提交都会被丢弃,工作目录和暂存区会和指定的提交完全一致。 需要注意的是,git reset --hard 命令是具有破坏性的,它会永久性地清空暂存区和工作目录中的文件,并且丢弃掉之前的提交。因此,在执行该命令之前,需要确保已经备份了重要的更改,以免造成数据的不可挽回的损失。 总之,git reset --hard 暂存文件命令用于撤销暂存的文件,或者回退到之前某个提交的状态,但需要谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值