Git 学习笔记
来源:互联网 发布:linux下怎么ping 编辑:程序博客网 时间:2024/05/04 12:08
准备学下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://git-scm.com/documentation
http://gitref.org/
http://git-scm.com/course/svn.html
http://linux.yyz.us/git-howto.html
https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools
- 【git】git学习笔记
- Git学习笔记-Git Branching
- Git学习笔记:Git命令
- git常用命令-Git学习笔记
- Git学习笔记--Git入门
- Git 学习笔记 --- 自定义Git
- git/github学习笔记
- git 学习笔记
- Git 学习笔记
- git学习笔记
- git 学习笔记
- Git学习笔记 - 1
- Git学习笔记
- Git学习笔记 - 1
- git/github学习笔记
- git学习笔记
- Git 学习笔记
- GIT之学习笔记
- windows网络命令
- 过早退出是一切失败的根源
- 基于自签名的X.509数字证书生成及验证
- SQL语句大全
- Android访问内部文件系统和模拟器中的SD卡,以及在模拟器安装apk文件
- Git 学习笔记
- EL表达式取整或者取固定位小数
- discuz论坛的安装
- 隐马尔科夫模型(Hidden Markov Models) 系列之三
- 利用递归实现不定重数多重循环(附源代码)
- Getting Your Random Sample in Proc SQL
- s3c2440上linux-2.6.28.7内核配置及Qtopia文件系统移植和搭建
- Groovy 1.8 新特性: Diamond operator 以及 DGM
- Unix/Linux下如何使用Vi编辑器