zoukankan      html  css  js  c++  java
  • git的用法

    常用的几条命令

    1. 修改代码后,统计代码状态git status

    2. git add 新添加的文件,和改动文件的目录,git rm删除掉不用的文件

    3. git commit -m “message” 需要提交的代码目录。

    注:git commit -a 后面不能跟文件目录

    转自:http://blog.csdn.net/littleshaka/article/details/6697039

    1. git pull    更新服务器代码到本地

    a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支

    2. git push    将本地代码提交到服务器

    3. git log    查看提交信息

    a). git log -p    查看历次的log信息及更改情况

    b). git log -p -4    查看距现在最近的4次的log信息及更改情况

    c). git log frameworks/    查看关于frameworks/目录修改相关的log信息

    d). git log --stat    查看log显示文件修改情况

    e). git log --stat packages/apps/Contacts/    查看关于packages/apps/Contacts/目录修改相关的log显示的文件修改情况

    4. git status    查看工作目录和代码仓库的改动情况

    5. git diff 查看工作目录和本地仓库的差异或者本地仓库各个版本的差异

    a). git diff packages/apps/Contacts/AndoridManifest.xml    查看工作目录中AndoridManifest.xml和本地仓库中AndoridManifest.xml的不同

    b). git diff b46cae3b9a377bcd9cfc249a5778fce647feb961 dc94bf29aab18168e79d6496a89e47dba7a1d494    查看这两个版本的不同(git diff history_old history_current)

    c)git diff 84d7c8bf6fde87316f693015d4a541a1adf037b3   b39cf58eea2f7733723ad90d104b83774136efa8   packages/apps/Phone/src/com/android/phone/CallCard.java   查看两个版本之间针对特写文件的变化


    6. git commit 提交当前修改内容

    a). git commit file1 file2 -m "log message"    提交file1,file2到本地仓库

    b). git commit -a -m "log message"    提交所有在Git索引中的改动

    7. git add 增加文件到Git索引

    a). git add file3 file4    将file3,file4加入到Git索引中

    8. git rm 从Git索引移除文件

    a). git rm file3    将file3从Git索引中删除

    9. git branch    对分支的增、删、查操作

    a). git branch    显示所有本地分支

    b). git branch new_branch    在当前版本创建一个名为new_branch的分支

    c). git branch -D new_branch    强制删除名为new_branch的分支

    10. git checkout    在不同的branch切换和还原文件

    a). git checkout branch1    切换到branch1分支

    b). git checkout /packages/apps/Contacts/AndroidManifest.xml    会将AndroidManifest.xml文件从上一次提交的版本更新回来,未提交的部分会全部回滚

    11. git reset 将当前的工作目录完全回滚到指定的版本号

    a). git reset [--fixed] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1    只更新索引,不更新工作目录,也就是说所有的本地文件都不会更新

    b). git reset [--soft] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1    

    c). git reset [--hard] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1    强制回滚到指定版本号,未提交的和此版本之后的更改全部删掉

    12. git merge 

    a). git merge branch1    将branch1的改动合并到当前所在分支

     

    13. git patch

    a). git format-patch -1 打一个当前提交的补丁,也就是最后一次的提交改动

    b). git fromat-patch -1 6525c43add803bfee37cf5c1cb573ed8aecf529e    打一个指定具体某一次的补丁

    c). git format-patch -2 6525c43add803bfee37cf5c1cb573ed8aecf529e    打基于指定具体某个版本的接连两次的补丁

     

     

    14. tig linux下Git的界面化工具

     

    15.git reset HEAD^ 表示回退刚刚的提交, git reset HEAD^^ 表示回退刚两次的提交,以此类推, 补充一下

    16.git format-patch -1 打印刚刚提交的一版的patch,相当于svn diff

    17.git show 查看当前提交的版本

    18.git show ffd98b291e0caa6c33575c1ef465eae661ce40c9 查看指定版本的文件

    19.git show ffd98b291e0caa6c33575c1ef465eae661ce40c9:filename 查看指定版本的某个文件

    20.git show 2010-Aug-12 查看指定tag的文件

    21.git remote show 查看远程仓库的信息

    22.git remote show origin 查看某个远程仓库的详细信息,比如要看所克隆的 origin仓库

    23.git revert -n hashcode : git撤销某次历史提交; -n 不加的话,相当于撤销后的树状态也提交了,加了-n只是工作树回退了那次提交的内容,工作树处于待提交状态

    24.git show 9f5202b77bdd33f885207b618b7b2a78b6671813 packages/apps/FM/src/com/hymost/fm/ui/FMRadio.java 查看特定版本特定文件的修改

    25.git diff 6af41d3 d67778 packages/apps/Music/>2.patch
    这个非常有用, 6af41d3 比 d67778 新, 上句这样做的好处是可以产生从 6af41d3 到 d67778的反向diff ,把这个反向diff 写入2.patch,这样谁打了2.patch,谁就等于作了一次6af41d3 版本在对packages/apps/Music上所做修改的文本回退(如果该版本对这个目录的改动是有错的需要回退的,这是个好办法).回退,千万少用 revert和reset ,这两个动作和危险,容易导致结点丢失.

     

     Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage) //reset 加--soft 会保持文件的stage状态,(to be committed,这往往是被撤消的提交中的文件,stage中的文件的修改是diff不出来的), 如果不加(默认:mixed)就会把所有mark to be committed的文件全unstage掉,这时可以diff出来该文件的改动了
    #
    #    modified:   packages/apps/Contacts/src/com/android/contacts/ContactsUtils.java  //不会被diff出来,
    #

     

    # Changed but not updated:                        //会被diff出来
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #    modified:   frameworks/base/core/java/com/android/internal/app/RingtonePickerActivity.java
    #    modified:   frameworks/base/media/java/android/media/RingtoneManager.java
    #

    # Untracked files:                                       //不会参与版本管理,除非用git add进来
    #   (use "git add <file>..." to include in what will be committed)

    补充一下: reset --hard hashcode就是相当于check out 掉所以从此hashcode之后的所有本地修改了,很危险,慎用.

    revert hashcode1相当于 reset --hard, 不过它的指针不回退,反而是在当前HEAD之上再加一个版本,而该版本在文本上相当于hashcode1之前一个版本的文本内容,但这时候指针都没丢,反而还多了一个,这时候想回过来有办法,就是reset --hard 到 HEAD^就行了,一切都回来了,等于什么也没做过.不过尽量不要用revert. 这已经是一个deprecated 命令了.

    其实对于像 1->2->3->4->5,这样的版本链上,如果2->3东 西有问题,想回掉这部分修改,却不影响3后面的修改,最好的办法就是不要通过指针来实现 ,而是通过本文修改来实现新增一个6版本,盖在5之上,我们只要把2->3的patch拿过来,在当前5的基础上,打个反向patch就行: git apply -R 2to3.patch, 这时你的本地代码从文本上就达到了你要想的结果,就是5的状态下把2->3的修改抹掉. 不过打patch有一点要注意,我们尽量不要把png等图片的patch放里头,这样会很慢,图片的二进制码很大. 而且我们可以对patch 进行修改,回退我们想要回退的文件和修改.

  • 相关阅读:
    css文本及文本装饰
    css尺寸常用样式
    了解css的两大特性
    css长度单位及字体
    css颜色
    css选择器详解
    了解css
    html行级元素与块级元素以及meta标签的使用
    了解html表单
    html图片和html实体
  • 原文地址:https://www.cnblogs.com/redspider110/p/2425181.html
Copyright © 2011-2022 走看看