slider

还是菜鸟
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

git 基本命令介绍

Posted on 2011-11-14 22:44  slider  阅读(2686)  评论(0编辑  收藏  举报

最近用上了git工具来协作开发,因此git一些基本的命令要学习,由于很多工具如果不用,过一段时间就会忘记,所以索性就记录下来,下次查找也方便的多。为什么要写呢?因为网络上的东西都是别人的,终究不是自己的,不自己做下总结,是没有收获的。下面有关git多是互联网搜索到的和git的帮助文档,不过这一篇介绍的简单,以后深入了,在给大家讲的更详细些。

  git环境的搭建这里就先不说。本篇主要是普通开发工作者在开发过程中所使用的命令。

  作给开发者,别人搭建git服务器之后,你呢就配置个人的客户端:

  git config --global user.name "yourname"
  git config --global user.email "xxxx@gmail.com"

  检出仓库

  git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6

  查看远程仓库:$ git remote -v


  查看本地分支:git branch

  查看远程分支:git branch -r

  删除本地分支:git branch -d branch_name

  选择分支:git check out branch_name

  创建本地分支:git branch branch_name (注意提交代码前一定要建立本地分支)

  

  拉取远程分支,并合并:git pull origin branch_remote:branch_local

  查看状态:git status

  查看详细修改:git diff

  添加/删除文件:git add/rm filename

  提交并添加信息:git commit -m  "your descriptions"

  查看历史日记:git  log

  本地分支推送:git push origin branch_local:branch_remote

  

  还要介绍下恢复撤销命令:

  git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息   :git reset

  git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可。比如返回到commit前(含有index信息,这也是跟-mixed的区别) :git reset --soft HEAD^     

  git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容。如:git reset --hard HEAD^返回上一个版本

  git revert:还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本号都是生成的一个哈希值

  注:reset是指将当前head的内容重置,不会留任何痕迹。git reset --hard HEAD~3,会将最新的3次提交全部重置,就像没有提交过一样。根据--soft --mixed --hard,会对working tree和index和HEAD进行重置。revert是撤销某次提交,但是这次撤销也会作为一次提交进行保存。

 

  至于还有许多的内容没有说,比如git的配置,git(client-server)环境的搭配,各个命令的详细用法没有说,以后会慢慢写出来给大家分享,也欢迎高手指点。

  下面是网上找的别人的,我觉得写的不错,所以就复制了一部分 
  将 Current working directory 记为 工作目录(1)
  将 Index file 记为 暂存区(2)
  将 Git repository 记为 代码仓库(3) 


  他们之间的提交层次关系是 (1) -> (2) -> (3)
  git add完成的是(1) -> (2)
  git commit完成的是(2) -> (3)
  git commit -a两者的直接结合 




  从时间上看,可以认为(1)是最新的代码,(2)比较旧,(3)更旧
  按时间排序就是 (1) <- (2) <- (3)

  it diff得到的是从(2)到(1)的变化
  git diff –cached得到的是从(3)到(2)的变化
  git diff HEAD得到的是从(3)到(1)的变化

 
 
      git localremote
 
      git workintree