Git使用

速查。

Git使用

  • 把文件修改添加到暂存区:

    1
    $ git add
  • 提交修改,把暂存区的内容提交到当前分支:

    1
    $ git commit
  • 下载远程分支rtk_base的代码,并把根文件夹命名为rtk_code_base

    1
    $ git clone -b rtk_base http://123.45.6.78:9999/Hlkffm_Bndroid/2951_hlkffm_0402.git rtk_code_base 
  • 单行显示git记录,包括版本号和commit log:

    1
    $ git log --pretty=oneline
  • 显示1个commit:

    1
    $ git log -1

    如果想显示5个,就-5,不指定的话,会从该commit一直往后显示

  • 查看一段时间区间的提交信息:

    1
    $ git log --oneline --since="2019-11-18 00:00:00" --until="2019-12-01 00:00:00"
  • 查看具体某一个版本,包括修改的作者、时间、文件等,以及“shows number of added and deleted lines”:

    1
    $ git show 7f7c809c1f537a3ffff57667d41424e1cff8cad1 --numstat
  • 查看某行代码提交记录:

    查看index.js文件中第38行的提交修改记录:

    1
    $ git blame -L 38,38 src/component/BarCode/index.js
  • 查看某个文件中某个函数的提交记录:

    1
    $ git log -L :FunctionName:FilePath
  • 查找某个字符串的提交记录:

    1
    $ git log -S "Hello,World!"
  • 查看单个文件的历史修改记录:

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

    1
    $ cd kernel/android/pie/vendor/realtek/app/HKMediaBrowser/app/src/main/java/com/hk/mediabrowser/activity/

    列出文件的所有改动历史

    1
    $ git log --pretty=oneline PhotoPlayerActivity.java

    显示该文件每次提交的diff

    1
    $ git log -p PhotoPlayerActivity.java

    查看某个提交中的某个文件的变化

    1
    $ git show 4a771319a90dad7d654dbd7ece50cd9add0fef30 PhotoPlayerActivity.java
  • HEAD指向的版本就是当前版本,在版本的历史之间切换:

    1
    $ git reset --hard commit_id
  • 在两个版本之间创建Diff:

    1
    $ git diff [旧版本 Commit ID] [新版本 Commit ID] > [Diff文件名]

    eg:

    1
    $ git diff 5af260f2e3974e0d043a42f397b2d9165e6b4d3f e4c3cbd7700e5230e6b053cf3e231bced23f4edc > patch.diff
  • 应用Diff:

    检查Diff文件

    1
    $ git apply --stat patch.diff

    检查Diff文件是否能正常打入

    1
    $ git apply --check patch.diff

    打入Diff

    1
    $ git apply patch.diff
  • 查看命令历史:

    1
    $ git reflog
  • 查看工作区和版本库里面最新版本的区别:

    1
    $ git diff HEAD -- readme.txt
  • 丢弃工作区的修改:

    1
    $ git checkout -- readme.txt

    把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    1. readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
    2. readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
      总之,就是让这个文件回到最近一次git commit或git add时的状态。
  • 把暂存区的修改撤销掉(unstage):

    1
    $ git reset HEAD <file>
  • 合并某分支到当前分支:

    1
    $ git merge <name>
  • 清理掉本地不受版本库控制的文件:

    1
    $ git clean -f
  • 删除服务器分支的命令:

    1
    $ git push --delete origin 分支名
  • stash应用场景 - 处理临时任务前需要保存工作现场

  • 多人协作

  • rebase

  • 标签

  • 配置别名

  • 开发步骤

    1. 切换到最新的develop分支
      1
      $ git fetch origin;git checkout origin/develop;git branch -D develop;git checkout -b develop
    2. 新建一个自己的临时开发分支
      1
      $ git checkout -b user_01
    3. 添加修改
      1
      $ git add path/file
    4. 提交修改,并产生一个git_ID:0deaddead
      1
      $ git commit -m """"
    5. 切换到最新的develop分支
      1
      $ git fetch origin;git checkout origin/develop;git branch -D develop;git checkout -b develop
    6. 拉取刚才的提交,到最新的develop分支
      1
      $ git cherry-pick 0deaddead
    7. 推送到服务器
      1
      $ git push origin develop:develop
    8. 删除自己临时的开发分支
      1
      $ git branch -D user_01
  • git不同code,修改相同路径相同的文件,直接抓取的修改文件的方法:

    例如,谷歌TV抓取歌谷TV上的文件,在谷歌TV code执行:

    1
    2
    3
    4
    5
    6
    $ git remote add gegu git@123.45.6.78:Android_RD/gegu_tv.git  
    $ git remount -v
    $ git fetch gegu
    $ git pull
    $ git cherry-pick xxxxxxx(gegu上的gitid)
    $ git push origin develop
  • 查看另一个分支的文件:
    有时你想查看另一个分支的文件的内容。用一个简单的Git命令就可以实现,而且不需要切换分支。
    假设你有一个名为README.md的文件,它在main分支中,而你正在dev分支上工作,使用下面的Git命令,你可以在终端上完成:

    1
    $ git show main:README.md

    一旦你执行了这个命令,你就可以在你的终端上查看文件的内容。

参考链接