GIT 搭建、定制、生成patch及打补丁、git基础操作命令

来源:互联网 发布:招收淘宝客服 编辑:程序博客网 时间:2024/06/07 07:34

一:GIT搭建:Gitolite --搭建Git 服务器详解


二:GIT 定制:

git config用户信息$ git config --global user.name "John Doe"$ git config --global user.email johndoe@example.com更改你的编辑器$ git config --global core.editor emacs添加别名$ git config --global alias.last 'cat-file commit HEAD'$ git lasttree c85fbd1996b8e7e5eda1288b56042c0cdb91836bparent cdc9a0a28173b6ba4aca00eb34f5aabb39980735author Scott Chacon <schacon@gmail.com> 1220473867 -0700committer Scott Chacon <schacon@gmail.com> 1220473867 -0700fixed a weird formatting problem$ git cat-file commit HEADtree c85fbd1996b8e7e5eda1288b56042c0cdb91836bparent cdc9a0a28173b6ba4aca00eb34f5aabb39980735author Scott Chacon <schacon@gmail.com> 1220473867 -0700committer Scott Chacon <schacon@gmail.com> 1220473867 -0700fixed a weird formatting problem添加颜色所有的color.*选项请参见git config的文档$ git config color.branch auto$ git config color.diff auto$ git config color.interactive auto$ git config color.status auto或者你可以通过color.ui选项把颜色全部打开:$ git config color.ui true提交模板$ git config commit.template '/etc/git-commit-template'日志格式$ git config format.pretty oneline差异分析工具还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:$ git config --global merge.tool vimdiffGit 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。当然,你也可以指定使用自己开发的工具。查看配置信息要检查已有的配置信息,可以使用 git config --list 命令:$ git config --list- it配置文件    - /etc/gitconfig 对所有用户有效    - ~/.gitconfig 对当前用户有效    - {工作目录}/.git/config 仅对当前项目有效    - $HOME 或者 C:Documents and Settings$USER 下的.gitconfig    - git安装目录下的/etc/gitconfig    - 同上在类 unix 系统中,配置文件为:在Windows中对应分别为:对应命令:$ git config --system$ git config --global$ git config --local 或 $ git config帮助与参数资料想全面了解更完整和详细的说明,方法有三:    - $ git help      $ git --help      $ man git-    - 比如,要学习 config 命令可以怎么用,可执行:      $ git help config其他配置选项除上面提到的选项外, 还有很多很有趣的选项去配置打包, 垃圾回收, 合并, 分支, http传输, diff, 分页, 空白字符等等的行为. 如果你需要更加深入地调教git, 请阅读git config文档.

三:生成patch及打补丁
在git中,我们没有必要使用diff 和patch做补丁,这样做即危险有麻烦。git提供了两种做patch的方法,一种是git diff生成标准的patch,另一种是使用git format-patch生成git专用的patch:     1:git diff生成标准patch:          $ git branch          $ aaa             bbb          $ git diff aaa bbb > patch          $ git checkout bbb          $ git branch test_patch          $ git checkout test_patch          $ git apply patch     到此patch补丁成功。你可以通过git diff test_patch  aaa > differ 查看     2:git format-patch 生成git 专用补丁:          $ git branch          $ aaa             bbb          起先aaa  bbb 分支是一样的;          比如你在aaa分支做了对某一文件的修改,          之后你可以运行:          $ git format-patch -M bbb      /*M 表示这个patch要和哪个分支对比,          之后:          $ git diff aaa bbb > patch          $ git checkout bbb          $ git branch test_patch          $ git checkout test_patch          /* 有时候以下两条命令不一定成功*/          $ git am patch_name          $ git commit -a -m "patch apply"          /* 如果遇到冲突 */          $ git am --abort           之后手动添加此patch           之后$ git commit -a 提交代码          /* 不成功你需要运行以下命令*/          $ git apply patch_name --reject          $ git status           /* 手动解决冲突*/          $ git commit -am "patch_name“          假如aaa 与 bbb 之间有很多个版本差异,那么就会针对每个版本生成一个patch     3:两种patch的比较:          - 兼容性:很明显,git diff生成的Patch兼容性强。如果你在修改的代码的官方版本库不是Git管理的版本库,那么你必须使用git diff 生成的patch才能让你的代码被项目的维护人接受。          - 除错功能:对于git diff生成的patch,你可以用git apply --check 查看补丁是否能够干净顺利地应用到当前分支中; 如果git format-patch 生成的补丁不能打到当前分支,git am会给出提示,并协助你完成打补丁工作,你也可以使用            git am -3进行三方合并,详细的做法可以参考git手册或者《Progit》。从这一点上看,两者除错功能都很强。          - 版本库信息:由于git format-patch生成的补丁中含有这个补丁开发者的名字,因此在应用补丁时,这个名字会被记录进版本库,显然,这样做是恰当的。因此,目前使用Git的开源社区往往建议大家使用format-patch生成补丁。