Git常用用法

  1. am
  2. format-patch
  3. fetch
  4. rebase
  5. push
  6. commit
  7. cherry-pick
  8. git乱码情景对号入座和解决方案

am

git am xxx.patch
git am --ignore-space-change -3 xxx.patch

“忽略空格的改变,这个可以忽略windows和linux换行符的差异”

format-patch

git format-patch -23
git format-patch -s 4e16

某次提交以后的所有patch, –4e16指的是SHA1 ID, -s : signed off`

git format-patch –n 07fe

// - n指patch数,07fe对应提交的名称, 某次提交(含)之前的几次提交

git format-patch -1 commit-id

// + commit-id 选定的那个commit打patch

1
2
3
4
5
6
7
git format-patch -6
0001-patch-ALPS.L1.MP6.V2_MAGC6580.WE.L_P16.patch
0002-patch-ALPS.L1.MP6.V2_MAGC6580.WE.L_P23.patch
0003-patch-ALPS.L1.MP6.V2_MAGC6580.WE.L_P28.patch
0004-patch-ALPS.L1.MP6.V2_MAGC6580.WE.L_P40.patch
0005-patch-ALPS.L1.MP6.V2_MAGC6580.WE.L_P46.patch
0006-patch-ALPS.L1.MP6.V2_MAGC6580.WE.L_P48.patch

fetch

git fetch <remote_host_name> <branch_name>

取回远程分支的更新

1
2
3
4
5
6
7
8
9
10
11
12
13
git branch -a
* test_k89
remotes/origin/k100/master
remotes/origin/k86_bsponly

git fetch origin k89
From ssh://gerrit.y/k89/frameworks
* branch k89 -> FETCH_HEAD

fetch hide branch

git fetch git fetch ssh://xx@gerrit.y/K26/frameworks refs/build/abc/123456
git checkout FETCH_HEAD

rebase

git rebase <branch_name>

1
2
3
git rebase origin/k89
First, rewinding head to replay your work on top of it...
Fast-forwarded xx_k89 to origin/k89.

push

git push

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
git branch -r
m/k89 -> origin/k89
origin/k100/master
origin/k200/master

git push origin HEAD:refs/for/k89
Counting objects: 24, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 522 bytes | 0 bytes/s, done.
Total 5 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: new: 1, refs: 1, done
remote:
remote: New Changes:
remote: http://gerrit.y xxxx
remote:
To ssh://wilber@gerrit.y/k89/bootable
* [new branch] HEAD -> refs/for/k89

commit

git commit

1
2
3
4
5
6
7
git commit --amend --author "author <xx@xxx.com>" --no-edit

[k100 c494ea0] ALPS.L1.MP6.V2_MAGC6580.WE.L_P33 P***h Type: Customer Request CR ID: ALPS02632495 Severity: N/A Description: [P***h Request] [PMS] [SBPM] MAGCOMM, Proje***: MAGC6580_WE_L, SW Version: ALPS.L1.MP6.V2N/A
Date: Sat Mar 25 18:08:49 2017 +0800
29 files changed, 592 insertions(+), 43 deletions(-)
create mode 100755 compiler/boot.p
mode change 100755 => 100644 compiler/dex/compiler_ir.h

cherry-pick

git cherry-pick -n <HASH>

在提交到gerrit进行review的时候,每个commit中都要带有一个唯一的change-id字串,当我们在cherry-pick一些commit到另外的分支的时候,如果被cherry-pick的commit已经是在gerrit中了,那么就需要重新生成change-id,否则再重新提交到gerrit的时候会被拒绝。

有两种方式可以办到:

  1. 使用cherry-pick -n , 然后用git commit, git log 不会丢失,我们只是需要将change-id那一行删除,系统提交后会自动生成新的唯一change-id.
    这个方法操作步骤少,但是当面对几百个需要cherry-pick的提交时,就要重复几百次,尤其是查找和复制hashcode的时候会比较繁琐。

  2. 可以在开发分支上调用git rebase –interactive <主分支>, 然后将呈现文字中pick全部改成edit,如此这样,在rebase的过程中,每一个commit都会提醒你使用git commit –amend去修改commit, 你只要将change-id删掉即可,然后执行git rebase –conitue 开始执行下个commit的rebase操作,如此反复,直到所有commit完成rebase。

    这种方式适合大量commit需要cherry-pick到另外一个分支的情况。

ref:http://blog.csdn.net/xinfuqizao/article/details/21234551

git乱码情景对号入座和解决方案

  • 乱码情景1

在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\273\223.png的乱码。
解决方案:
在bash提示符下输入:

git config –global core.quotepath false
core.quotepath设为false的话,就不会对0×80以上的字符进行quote。中文显示正常。

  • 乱码情景2

在MsysGit中,使用git log显示提交的中文log乱码。
解决方案:
设置git gui的界面编码

git config –global gui.encoding utf-8
设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致!

git config –global i18n.commitencoding utf-8
使得在 $ git log 时将 utf-8 编码转换成 gbk 编码,解决Msys bash中git log 乱码。

git config –global i18n.logoutputencoding gbk
使得 git log 可以正常显示中文(配合i18n.logoutputencoding = gbk),在 /etc/profile 中添加:

export LESSCHARSET=utf-8

  • 乱码情景3

在MsysGit自带的bash中,使用ls命令查看中文文件名乱码。cygwin没有这个问题。
解决方案:
使用 lls –show-control-chars 命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。

为了方便使用,可以编辑 /etc/git-completion.bash ,新增一行 alias ls=”ls –show-control-chars”

from http://www.cnblogs.com/perseus/archive/2012/11/21/2781074.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wilber_bai@hotmail.com

文章标题:Git常用用法

文章字数:1,143

本文作者:风沉殇史

发布时间:2017-12-12, 12:12:12

最后更新:2020-01-03, 17:18:33

原始链接:http://wilber.win/posts/3d317a07/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏