原创:Daway.Huang
1,进入要的源码目录:
cd ec_tools_code (确保该目录下没有不可提交的文件,如tags不提交则应该删除)
2,初始化该目录:
git init
3,编辑“.gitignore”文件,加入忽略提交的文件:
vim .gitignore
tags
*.o
4,将当前目录所有文件都加入到提交列表:
git add .
5,提交:
git commit (信息内容一般初始导入时如此写:initial code of ec tools, 0.1)
6,建立远程库origin(确保远程仓库目录已建立好,若未建立请联系系统管理员):
git remote add origin ssh://git@172.16.0.30/ec_tools.git
7,将本地文件上推到远程库的master分支:
git push origin master
二、将远程库上的分支下载到本地(以kernel的linux-2.6.27.1-lemote为例)。
1,先将远程库clone到本地:
git clone git://dev.lemote.com/linux-loongson.git
2,与远程库同步一下:
git pull (该步骤可略,若本地很旧则需要同步一下)
3,新建远程分支到本地:
git checkout -b linux-2.6.27.1-lemote origin/linux-2.6.27.1-lemote
三、直接从远程仓库中checkout出某个分支到本地仓库
1,确保在已有的本地仓库中操作。如果没有,则创建新的空白本地仓库:
mkdir linux-2.6.27.1-lemote
cd linux-2.6.27.1-lemote
git init
2,取出远程仓库的某个分支(如linux-2.6.27.1-lemote)。
格式:
git fetch <url> <分支名>
例:
git fetch git://dev.lemote.com/linux_loongson.git linux-2.6.27.1-lemote
3,把取出的远程分支检出到本地。
格式:
git checkout -fb <新的本地分支名> FETCH_HEAD
例:
git checkout -fb linux-2.6.27.1-lemote FETCH_HEAD
四、通过打补丁email发送
1,制作补丁:
git format-patch HEAD^
(或分支名,如master,或是commit SHA(如果是多个补丁))
将生成形如下面的补丁文件:
0001-Updata-xxx.patch
也可将发送的email地址加入:
git format-patch --cc="Huang Wei <huangw@lemote.com>" HEAD^
2,配置git send-email并发送补丁:
git config --global sendemail.smtpserver (www.lemote.com)
//配置smtp服务器
git config --global sendemail.smtpencryption abc
//配置smtp服务器密码
git config --global sendemail.smtpuser huangw
//配置smtp用户名
3,发送(建议send-email的版本在1.6以上):
git send-email 0001-Update-xxx.patch --to wuzj@lemote.com
Who should the emails appear to be from?[huang wei <huangw@lemote.com>] (回车)
Emails will be sent from: huang wei <huangw@lemote.com>
Message-ID to be used as In-Reply-To for the first email? (回车)
(mbox) Adding cc: ... ...
(mbox) Adding cc: ... ...
password: (输入上面设置的密码“abc”) (回车)
OK. Log says:
... ...
注意:该命令也可写成
git send-email --from="Wu Zhangjin <wuzhangjin@gmail.com>" --to="Huang Wei <huangw@lemote.com>" 0001-Update-xxx.patch
4,将上面制作的补丁打到当前分支:
git am 0001-Update-xxx.patch
五、制作补丁文件和打补丁
1,制作patch文件,将master修改的部分加到base分支中:
git diff base..master > diff.patch
2,打补丁:
进入base分支,执行以下命令:
patch -Np1 -i diff.patch //将补丁打到base分支,让base分支与master分支完全一致。
六、其他命令用法
1,
git rm ec_sci.c
//将ec_sci.c从commit的Index中删除
2,
git branch -D master
//删除master分支(本地)
3,
git remote update //清除远程分支的缓冲区
4,
git checkout origin/master -b master
//将远程master分支创建到本地master分支
5,
git commit --amend
//修改已提交的log内容。
若修改log前已push到远程仓库,则可以强制push到远程仓库:
git push origin +master:master //加上“+”表示强制再次push
问题:
(1)如果在push时提示要输入密码,则为密钥不在当前的~/.ssh目录下,请拷贝密钥文件id_rsa到~/.ssh目录下。
如:
scp huangw@172.16.0.30:.ssh/id_rsa ~/.ssh/
(2)查看id_rsa文件用户,若为root则需要在~/.gitconfig文件中注册你的信息:
vi ~/.gitconfig
[user]
email = huangw@lemote.com
name = daway #名字任意
(3)如果你用git commit时的编辑log的工具不为vi,请在~/.gitconfig文件中添加:
[core]
editor = vi