Git 学习笔记

晨曦之光 发布于 2012/05/08 10:16
阅读 732
收藏 0

准备学下git,才发现1年前就在电脑上装上git了。当时PySide的windows版尚未出来,用它下载了PySide的源码,后来因编译未果,竟然把这事忘了。

Git?

词典中解释:

git  [ɡit] n.饭桶,无用的人

由此而来?

git: The stupid content tracker(傻瓜内容追踪器)

简单点说:

Git 是一个由 Linus Torvalds 创建的源代码管理软件

官方说法:

Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,
对内部系统提供了高级操作和完全访问。

当我们讨论Git时,可能指代两种东西(后者是我们关心的):

  • 内容追踪 :git探索?本质?(git plumbing)

    • git-fetch-pack, git-send-pack, git-hash-object等命令
    • ...
  • 源代码管理器 :git外壳?(git porcelain)

    • git commit 等命令 (git默认的外壳)
    • 其他外壳: easy-git, yap, widgit, darcs-git.py 等

安装

  • ubuntu下:
    • 安装 git-core, gitk, git-gui 3个包
  • windows下:
    • 安装 msysgit 或 TortoiseGit(据说还不太完善,但很值得一试)

  • 注:
    • gitk is a simple Tcl/Tk GUI for browsing history of Git repositories easily, distributed with Git.

    • git-gui is a tool for creating commits and managing branches. Written in Tcl/Tk. Stable versions are shipped with Core Git since version 1.5.

部分命令

最重要一个:

  •  git help

创建仓库

本地创建

git init

克隆远端

git clone

stage 操作

添加

git add

查看状态

git status

查看差别

git diff

提交

git commit

unstage

git reset HEAD

移除

git rm

分支(branch)操作

列出

git branch

创建

git branch branchname

切换

git checkout branchname

删除

git branch -d branchname

合并

git merge branchname

  • 创建和切换可以合并成
    git checkout -b branchname

远端仓库(remote repository)操作

管理

git remote [add rm ...]

拉取内容 ↓

git fecth alias

拉取内容(merge) ↓

git pull alias

推送内容 ↑

git push alias branch

  • pull 相当于 fetch 和 merge 两条命令

几条与svn对比的命令:

查看diff

git diff

svn diff | less

查看diff

git diff rev path

svn diff -rrev path

应用patch

git apply

patch -p0

恢复

git checkout path

svn revert path

提交

git commit -a

svn commit

注意事项

  • Google到的不少资料都是git 1.4之前的。所以要注意看官方的文档。
  • git 的 master 分支 不同于 subversion 的 trunk!
It’s a common error to think of the master branch as being 
equivalent to Subversion’s trunk. However, a custom development 
branch is much closer in practice to the Subversion trunk, where 
experimental work is done.
  • 不同于svn,分支不是单独的目录。需要自己跟踪各个分支?
  • 每次commit时需要用户名和email。设置:
$ git config --global user.name 'Your Name'
$ git config --global user.email you@somedomain.com
  • git 有个以stage的概念,所有的东西提交之前需要加入到staged区域
    • 可以使用 git commit -a 来避免繁琐的添加

    • 注意 git reset HEAD 的含义。只是 unstage !

参考

 


原文链接:http://blog.csdn.net/dbzhang800/article/details/6418215
加载中
返回顶部
顶部