git 使用积累 .

git 使用积累
www.diybl.com    时间 : 2011-08-27  作者:网络   编辑:hawk 点击:  48 [ 评论 ]
-
-




Git简介 


—————————
Git 是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的,被认为是分布式版本控制工具中的顶级水准。智能、友好、强健、高效。 


HEAD代表当前的工作树。


SHA1代表项目文件的对象名。有40位。


tag为对象标签。


在git的概念里总共有四种对象:tree、blob、commit、tag。其关系如下图:





一个重要的概念是:git与其他版本控制系统不一样的是,其它管理系统如svn采用的事增量文件系统。而git则是将每一次提交的全部内容都保存下来。这虽然占用了系统空间。但是在如今这个时代,容量已不是问题。这样做显然可以提高速度。这也是git快捷高效的一个原因。


注:一个blob就是一个内容块。它没有文件名。可能多个对象指向同一个blob。


Git 工作流程 
—————————-
1、使用中央服务器辅助协作; 


2、每人在服务器拥有一个以自己 id 为名称的分支; 


3、各人只许推送更新到自己的分支,不允许推送到别人的分支或者 master; 


4、master 由专人管理,在合适时 merge 其它分支(开发初期每日自动 merge 各人分支,生产化后则由人工 merge 经过 review 的分支); 


5、代码修改 merge 到 master 后,将同步到所有终端。 


Git 常用命令


——————————


1、查看blob对象内容


$ git show SHA1-BLOB


2、查看tree对象内容


$ git ls-tree SHA1-TREE(亦可以用git show)


3、查看commit对象(配合--pretty=raw可以查看详细的commit的内容


$ git show -s --pretty=raw SHA1-COMMIT


      或$ git log -s --pretty=raw SHA1-COMMIT


4、一个标签对象包括一个对象名(译者注:就是SHA1签名), 对象类型, 标签名, 标签创建人的名字("tagger"), 还有一


条可能包含有签名(signature)的消息. 你可以用git cat-file 命令来查看这些信息:






$ git cat-file tag v1.5.0


object 437b1b20df4b356c9342dac8d38849f24ef44f27


type commit


tag v1.5.0


tagger Junio C Hamano <junkio@cox.net> 1171411200 +0000


GIT 1.5.0


-----BEGIN PGP SIGNATURE-----


Version: GnuPG v1.4.6 (GNU/Linux)


iD8DBQBF0lGqwMbZpPMRm5oRAuRiAJ9ohBLd7s2kqjkKlq1qqC57SbnmzQCdG4ui


nLE/L9aUXdWeTFPron96DLA=


=2E+0


-----END PGP SIGNATURE-----
5、查看索引:所谓的索引一个在你的工作目录和项目仓库间的暂存区(staging area). 有了它, 你可以把许多内容的修改一起提交(commit). 如果你创建了一个提交(commit), 那么提交的是当前索引(index)里的内容, 而不是工作目录中的内容.


        $ git status  


该命令可以看到哪些文件被暂存了,哪些文件被修改了但没有被暂存。哪些文件没有没有被跟踪。


6、仓库的建立:




git clone 其支持三种协议 git clone git://url
git clone http://url
git clone name@ssh  


mkdir temp 
cd temp
git init-db 初始化自己一个仓库。
可以通过git pull来更新仓库。
使用仓库前一定要敲入一下命令
git config --global user.name "your name"
git config --global user.email "your email"




7、提交:
$ git commit -a -m "your blabla"
如果有新添加的文件要被跟踪需要敲 git add filepath 或者git add .
8、移动和重命名:
$ git mv oldfilename newfilename
9、删除文件:
$ git rm file
10、字符串查找:
$ git grep "your word" (其相比于grep 可以实现跨分支查找)
11、比较不同的commit:
git diff commit1 commit2
如果只有一个commit则缺省与当前HEAD进行比较。
也可以比较不同commit的同一文件 git diff tag1:file tag2:file 比较一个文件在两个tag之间的不同。  
12、查看日志:


git log 选项:-p 显示具体内容 --name-only 只显示更改的文件名称


13、显示文件:


git ls-files 选项: -m 显示修改过的


14、推送的服务器:


将自上次 push 以来的,本地历次 commit,推送到服务器。 结合我们的实际,应该这样写:


$ git push origin master:your-id 
其中,master 是本地的分支名;your-id 填你在服务器上的 id,服务器的版本库里会有以你的 id 为名称的分支。 


15、创建显示分支:


$ git branch mybranch [commit-SHA1,分支状态(git show-branch 的标识),远程分支]


$ git checkout mybranch 


如此便可以得到某次commit的内容分支或者跟随某一个远程分支。


单独的git branch可以用来查看分支 


git branch -a可以将远程分支也显示出来。


git branch -d branch用以删除已经合并的分支


git branch -D branch强制删除分支


16、显示提交状态:


$ git show-branch


17、迁出文件:


恢复某个已修改的文件(撤销未提交的修改)
$ git checkout file-name
切换到另外的分支,进行开发: $ git checkout branch-name
18、撤销提交:  
$ git revert commit-SHA1(可能会产生冲突)
19、删除提交:
$ git reset --soft commit-SHA1(只是删除提交信息,除此,其他东西都还在)
$ git reset --harf commit-SHA1 全部删除
20、修改最近一个次提交:
此种情况是为了如果在提交后发现有个文件没有添加跟踪或者要修改注释时可以在分别作了相应 处理后敲入git commit -amend21、STASH 先将未提交的修改暂存起来,接着清除所有改动,
使之与没修改时一样。若你正在开发功能 A,又需立即去开发功能 B。A 的代码正改到一半,未认 真整理,你不想立即提交。此时……请呼叫 stash ~。 
它会使你所有未提交的修改瞬间不见了: $ git stash 
它会使刚刚不见了的修改,瞬间又回来了: $ git stash pop
21、其他:
git ls-tree HEAD file 显示file在HEAD中的SHA1值。  


git cat-file -t SHA1 显示一个SHA1的类型。  


git cat-file type SHA1 显示一个SHA1的内容。type是blob、tree、commit、tag之一。  


 


patch:  


 


git format-patch -1 生成最后一个提交对应的patch文件。  




git am < patch 把一个patch文件加入git仓库中。  


git am --resolved 如果有冲突,在解决冲突后执行。  


git am --skip 放弃当前git am所引入的patch。  







  clean:  


 


 


git clean -dxf 用于清除未跟踪文件。  


git clean -dnf 可以显示需要删除的文件,但不包括被.gitignore忽略的。  


git reset --hard HEAD 用于清除跟踪文件的修改。 


文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/6_system/linux/linuxjq/20110827/559051.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值