欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: koala bear

Git 是一款开源优秀的版本打点东西,它最初由 Linus Torvalds 等人开拓,用于打点 Linux Kernel 的版本研发。相关的书籍和教程网上琳琅满目,它们大都都具体的先容其根基的利用和呼吁。本人按照本身的履历,整理出几个较为高级而常用的呼吁。

推荐资料 Git Book。


Git blame

Git blame 可以查询每一行代码的 commit ID、提交者和提交日期。

$ git blame nova/api/openstack/compute/servers.py

5b866f3a nova/api/openstack/v2/servers.py               (Kevin L. Mitchell        2012-01-09 13:13:08 -0600  776)     @wsgi.response(202)
5b866f3a nova/api/openstack/v2/servers.py               (Kevin L. Mitchell        2012-01-09 13:13:08 -0600  777)     @wsgi.serializers(xml=FullServerTemplate)
5b866f3a nova/api/openstack/v2/servers.py               (Kevin L. Mitchell        2012-01-09 13:13:08 -0600  778)     @wsgi.deserializers(xml=CreateDeserializer)
5b866f3a nova/api/openstack/v2/servers.py               (Kevin L. Mitchell        2012-01-09 13:13:08 -0600  779)     def create(self, req, body):
cc642ff1 nova/api/openstack/compute/servers.py          (Alex Meade               2012-04-15 21:44:15 -0400  780)         """Creates a new server for a given user."""
d1ad73ee nova/api/openstack/compute/servers.py          (Mark McLoughlin          2012-09-12 12:50:53 +0100  781)         if not self.is_valid_body(body, 'server'):
5b866f3a nova/api/openstack/v2/servers.py               (Kevin L. Mitchell

Git show

确切的说,Git show 并非是一个高级呼吁,只是它常常共同 git blame,从而查询整个 patch。

$ git show 5b866f3a

...

diff --git a/nova/api/openstack/common.py b/nova/api/openstack/common.py
index 5def03f..e96c42a 100644
--- a/nova/api/openstack/common.py
+++ b/nova/api/openstack/common.py
@@ -334,6 +334,21 @@ def get_networks_for_instance(context, instance):
     return networks


+class MetadataDeserializer(wsgi.MetadataXMLDeserializer):
+    def deserialize(self, text):
+        dom = minidom.parseString(text)
+        metadata_node = self.find_first_child_named(dom, "metadata")
+        metadata = self.extract_metadata(metadata_node)

...

Git reflog

Git reflog 记录了 git 某个分支的每次操纵,凡是用来规复误操纵影响的数据。

$ git reflog

1dcfb0f HEAD@{0}: reset: moving to 1dcfb0f
d5640a9 HEAD@{1}: checkout: moving from test to master
1dcfb0f HEAD@{2}: checkout: moving from icehouse to test

$ git reset d5640a9

Git cherry-pick

Git cherry-pick 可从其它分支抓取 commit 合入当前分支中,昆山软件公司,常用于从 upstream 合入 patch。

$ git cherry-pick -x commit_id

Git rebase

Git rebase 无疑是最为巨大、最难以领略,虽然也长短常强大的呼吁,常用于归并分支,可以简朴的领略为一系列的 git cherry-pick,昆山软件开发,它具有以下成果。

  • 归并分支
  • 从头修改 Commit,如归并 commit,调解 commit 的顺序。
  • Git rebase 用法请见 Git Book,昆山软件开发,可是利用时,请留意以下准则:

    The golden rule of git rebase is to never use it on public branches.