几个有用的git下令
由于git分布式版本管理系统相比subversion对于大型的项目开发更具被优势, jboss as 7/eap 6已经全面采用git来进行源码管理,您可以在 https://github.com/jbossas/jboss-as 查看 jboss as的源码以及修改历史,也可以通过阅读《玩转 JBoss AS 7》(http://jbosscn.iteye.com/admin/blogs/1037260) 来了解如果 clone jboss as源码到本地并进行编译以及贡献您的代码到jboss as 7中。
通过一段时间对git的学习和使用,有几个有用的 git 命令和大家分享。
1. git branch -avv
-vv 能显示当前本地 branch 对应的 origin branch,以及最后一次提交的信息。
-a 为显示所有的branch,包括本地branch以及远程branch。
一起组合的时候,能让你清晰的了解当前所有的branch信息。
2. git remote show origin
显示 origin 的详细信息,包括了branch track 的信息。
3. git push -u /--set-upstream
首次push的时候,会设置自动将远程branch作为默认的 push branch,但并不会作为默认的pull branch,所以直接输入 git pull 的时候,会有出错提示。
那么,可以在再次push的时候,加上-u 或者--set-upstream,则会将默认的push branch同时设置为pull branch,这样,该remote branch就成为了 tracking branch,之后就可以直接输入 git pull 来更新本地branch了。
4. get pull --rebase
git pull将远程branch更新到本地,如果远程branch有更新,则会和当前branch做merge。一般来说merge并产生不友好的commit信息,当你再次push到git服务器上之后,会给其他的合作开发人员带来极为麻烦的合并。--rebase则会在git pull 之后以远程分支为基本来应用本地的更新,生成的更新记录则会更友好。
5. git rebase --onto master server client
如果没有 --onto master,是将 client 以 server
为基准进行rebase,即将client对server的共同祖先的改动接到server的HEAD上,有了 --onto
master,则是将这个改动接到 master的HEAD后面。在同时开发多个分支,并且在需要应用某些不是以 master 为基础创建的分支的时候,特别有用。
6. git archive
git archive 用来方便的将git repo某个快照打包。
打包成gzip:
git archive master --prefix='project/' | gzip > project.tar.gz
打包成zip:
git archive master --prefix='project/' --format=zip > project.zip
打包成tar:
git archive master --prefix='project/' --format=tar > project.tar
master可用任何一个branch或者commitId替换。
要想全面了解git的特性和使用,可以参考《Pro git》一书。