Git 若干问题及解答

一 中文显示和ls高亮问题

1  添加ls设置存储到 /etc/profile 解决ls高亮问题

 echo "alias ls='ls --color=tty --show-control-chars'" >> /etc/profile

 echo 'cd "$HOME"' >> /etc/profile

说明: 这是为了在您使用ls命令时候可以高亮显示文件夹和可执行文件; 让Git Bash启动后停留在home路径下面.


2 添加设置到/etc/inputrc中解决显示git bash中汉字问题, 并没有解决git diff xxx.c中汉字注释的问题

echo "set meta-flag on" >> /etc/inputrc

echo "set input-meta on" >>/etc/inputrc

echo "set output-meta on" >>/etc/inputrc

echo "set conver-meta off" >> /etc/inputrc

3 git diff xxx.c显示<A8><B9>...乱码问题的解决

git
-----------------

Pro Git中文在线: http://git-scm.com/book/zh/v1
                   http://git-scm.com/book/zh/v2
[问题]
[解答]

[问题]  使用git合并多个提交
[解答]   假设要合并最后的2个提交,可以按如下命令进行:
1. git rebase –i HEAD~2
2. 将第二个pick修改为squash或者s,然后输入":wq”退出。

前提条件, 合并的提交不能有冲突, 若有的话, git rebase失败.

[问题] error: src refspec master does not match any.
[解答] 没有master分支, 创建master分支即可

[问题] old mode 100644 new mode 100755
[解答] git config core.filemode false
      or
      git config --global core.filemode flase
      .repo/repo/repo forall -c git config core.filemode false

[问题] ! [remote rejected] HEAD -> refs/for/refs/heads/Indroid4.4-master (change 36303 closed)
[解答] 两次提交的commit-id重复了,重新提交
      This error occurs if you are trying to push a commit that contains the Change-Id of a closed change in its commit message.
      https://git.eclipse.org/r/Documentation/error-change-closed.html

[问题] You are in the middle of an am session
[解答]

[问题]
[解答]
error: unpack failed: error Missing tree 64e965a3155d8913b63574138bd568325d25ef91
fatal: Unpack error, check server log
To ssh://hjhong_sz@192.168.1.26:29418/android/kernel/kernel-3.0.8
 ! [remote rejected] HEAD -> refs/for/refs/heads/Indroid4.4-master (n/a (unpacker error))
error: 无法推送一些引用到 'ssh://hjhong_sz@192.168.1.26:29418/android/kernel/kernel-3.0.8'


[问题] 在中文情况下 git status是 “\344\272\247\345\223\201\351\234\200\346\261\202” 差不多这样的。
[解答] git config --global core.quotepath false


[问题] git打补丁的方法
[解答] git format-patch -s 028e541af040c76a6e
      git apply xxxx.patch

[问题] CentOS6中配置git命令自动补全
[解答] http://www.111cn.net/sys/CentOS/65611.htm

[问题] git pull ing Indroid4.4-master
You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.
[解答] git commit -m "temp" && git reset --hard HEAD~1

[问题]
[解答] git diff --cached

[问题] git pull默认配置怎么弄?
[解答]
git config branch.working.remote os
git config branch.working.merge Indroid4.4-master
或者
git pull os Indroid4.4-master
简单来说使用git push -u origin master以后就可以直接使用不带别的参数的git pull从之前push到的分支来pull。


[问题] git push默认配置怎么设置?
[解答] git push -u ing Indroid4.4-master


[问题] 升级 CentOS6 git 1.7.1 到 1.7.12
[解答] http://my.oschina.net/heiing/blog/355561

[问题] git push出错
Counting objects: 17, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 916 bytes, done.
Total 9 (delta 8), reused 0 (delta 0)
remote: Resolving deltas: 100% (8/8)
remote: Processing changes: refs: 1, done    
remote: ERROR: missing Change-Id in commit message footer
remote: Suggestion for commit message:
remote: ulps: fix power consume increasing problem when exit ulps
remote:
remote: Change-Id: I7faa12ff904202c3ed6d8e334fddec1af50e3b60
remote:
remote: Hint: To automatically insert Change-Id, install the hook:
remote:   gitdir=$(git rev-parse --git-dir); scp -p -P 29418 mlwang_sz@gerrit.ingenic.com:hooks/commit-msg ${gitdir}/hooks/
remote:
remote:
To ssh://mlwang_sz@194.169.1.26:29418/sw1/slpt
 ! [remote rejected] master -> refs/for/refs/heads/master (missing Change-Id in commit message footer)
error: failed to push some refs to 'ssh://mlwang_sz@194.169.1.26:29418/sw1/slpt'
ingenic@studentworks:/media/data/slpt$ git commit --amend
[master 3ce3724] ulps: fix power consume increasing problem when exit ulps
 2 files changed, 11 insertions(+), 12 deletions(-)

[解答]
ingenic@studentworks:/media/data/m200_android_4_3/bootable/bootloader/uboot$ cp .git/hooks/commit-msg /media/data/slpt/.git/hooks/ -vf
`.git/hooks/commit-msg' -> `/media/data/slpt/.git/hooks/commit-msg'
ingenic@studentworks:/media/data/slpt$ chmod +x .git/hooks/commit-msg
ingenic@studentworks:/media/data/slpt$ git commit --amend


[问题] 让 git输出颜色变成彩色的方法
[解答] 使用下面的配置代码即可
git config --global color.status auto  
git config --global color.diff auto  
git config --global color.branch auto  
git config --global color.interactive auto  

0. 提交代码和同步代码
   提交代码,是往北京的代码仓库提交。cat .git/config里面的[remote "os"]表示深圳代码库,[remote "ing"]表示北京代码库
   同步代码,是从深圳的代码仓库同步。

1.  查看git状态
git status
2.   保存当前目录
git stash

设置全局用户名和邮箱
git config --global user.name "username"
git config --global user.email "email"
git commit --amend --reset-autho
设置当前git仓库的用户名和邮箱
git config user.email maolei.wang@ingenic.com
git config user.name maolei.wang
设置commit默认的编辑器
export EDITOR=vim 或者 另外一个办法
编辑.git/config,在core这块,加入editor = vim


3. 更改git配置,设置代码提交的地方
vi .git/config
[remote "ing"]
    url = ssh://hhyang_sz@192.168.1.26:29418/android/kernel/kernel-3.0.8
    review = https://review.ingenic.cn/
    projectname = android/kernel/kernel-3.0.8
    fetch = +refs/heads/*:refs/remotes/ing/*
    push = HEAD:refs/for/refs/heads/Indroid4.3-master

4. 新建一个分支
git branch s2121b_16t_x2_mlwang

5. 切换到新的分支上
git checkout s2121b_16t_x2_mlwang

6. 更新到最新代码
git fetch --all

7. 弹出当前分支
git stash pop

8. 提交更新代码
git add file1 file2 file3 ....

9. 提交
git commit -m "message"

10.推送代码
git push ing
名字“ing”在目录./.git/config中


11.查看日志
git log

12.查看状态
git status

13.重新提交(recommit)
git commit --amend
弹出一个vi窗口,命令:wq保存退出即可


14.查看分支的详细信息
git show-branch -a --sha | less

15.查看仓库的配置
git config -l

16. 硬回滚
 git reset  --hard 66c103f741d09777448a140f4622e058fc5218d3
在当前目录和最新目录不一样时候,先将更改commit到本地,用git diff sha1 sha2> xxx.patch生成一个补丁。
再用git reset newest_sha 把代码更新到最新的节点。再用patch -p1 xxx.patch打补丁来实现将自己的更改添加到最新的节点上。

17. 制作补丁和打补丁
制作补丁
git diff sha1 sha2 > mlwang.patch
打补丁
patch -p1 < ./mlwang.patch

18. 查看一个文件在两次提交的差别
git diff f2ead7f4bbc  a6c6ef00e2 drivers/video/jz_lcd/lcd_panel/auo_x163.c
git diff HEAD studentworks drivers/video/jz_lcd/lcd_panel/edo_e1392am1.c #其中studentworks是分支名,HEAD是当前commit节点
【问题】
remote: Resolving deltas:  17% (185/1073)
error: unpack failed: error Missing tree 79f34925083ccf5367832f4ad49e4aea8f37c20f
fatal: Unpack error, check server log
To ssh://mlwang_sz@192.168.1.26:29418/android/kernel/kernel-3.0.8
 ! [remote rejected] HEAD -> refs/for/refs/heads/ingenic-master (n/a (unpacker error))
error: failed to push some refs to 'ssh://mlwang_sz@192.168.1.26:29418/android/kernel/kernel-3.0.8'
【解决】

【问题】git status不显示新添加的文件夹
【解决】


【问题】git push后的代码要在gerrit中仔细浏览代码的格式,尤其是从别人那拷贝的代码,不是自己要提交的代码要abandon掉
【解决】

【问题】从 (no branch)合并到master中
【解决】http://blog.csdn.net/zmlovelx/article/details/7464972

【问题】从Git仓库中恢复已删除的分支、文件或丢失的commit
git checkout [commit_id] -- <path_to_file>
举例 git checkout 5ee141400d drivers/video/jz_lcd/lcd_panel/auo_x163.c
     git checkout studentworks drivers/video/jz_lcd/lcd_panel/edo_e1392am1.c # studentworks为分支名
参考:http://sumsung753.blog.163.com/blog/static/146364501201301711943864/

【问题】撤销上次提交,用命令git status还可以看到上次提交的内容
【解决】git reset --mix HEAD~1

同步代码的方式
git checkout --track os/Indroid4.4-master
git pull
或者
./repo sysnc

19. git打包归档
 git archive -o ingenic-master.zip ab70e09c1f5b63fd217d1
 git archive --format tar.gz HEAD -o ~/Downloads/kernel.tar.gz

[问题] github中添加本地的ssh-key的方法

[解答]

1、生成github上可以使用的公钥

ssh-keygen -t rsa -C "jiankangshiye@xxx.com"

一路默认即可

2. 往github中添加ssh key

3. 验证ssh key是否设置成功了

ssh -T git@github.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值