如果您的公司用的是CVS,那么不用考虑学习git,虽然有的公司用的是mecurial,不过都是分布式版本控制系统,相比之下,git的功能更加的复杂,我们掌握了git,也就自然而然掌握了其他的版本控制软件。
一些废话:git更改后是以快照的方式来保存每个版本,而传统的是保存不同版本的差异
git版本控制下文件的三种状态,commited(已提交) modified(已修改) staged(暂存状态,标记提交但尚未提交,就是你add了但是没有commit的)
➜ mvctest git config --global user.name "ericzheng"
➜ mvctest git config --global user.email "cxrhphp@qq.com"
配置好你当前主机对应的用户,只需要配置一次,以后就不用配置了。
➜ mvctest mkdir git
➜ mvctest cd git
➜ git git init
Initialized empty Git repository in /Users/ericzheng/mvctest/git/.git/
➜ git git:(master) git add .
fatal: pathspec '.' did not match any files
创建一个准备使用git控制的文件夹,然后git init就初始化了,我们可以使用这个文件夹作版本控制了
➜ git git:(master) ✗ touch a.php
➜ git git:(master) ✗ echo "hello" > a.php
➜ git git:(master) ✗ git add .
➜ git git:(master) ✗ git commit
这时候会到一个VI的编译器的环境,我们输入我们的commit文字,然后就可以按wq保存了
➜ git git:(master) ✗ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: a.php
我们可以看到我们刚才提交的新文件
➜ git git:(master) ✗ touch b.php
➜ git git:(master) ✗ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: a.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
b.php
这时候我们有没有提交的b.php,我们这时候不想保存changes,我们可以输入以下的命令:
git reset --hard
编辑自己的.gitignore文件
➜ git git:(master) nano .gitignore
➜ git git:(master) ✗ cat .gitignore
.DS_STORE
创建我们自己的新分支
➜ git git:(master) ✗ git commit -m 'wef'
[master (root-commit) 2467b8a] wef
2 files changed, 1 insertion(+)
create mode 100644 .gitignore
create mode 100644 a.php
➜ git git:(master) git branch
* master
➜ git git:(master) git branch ericzheng
➜ git git:(master) git branch
ericzheng
* master
➜ git git:(master)
切换分支
➜ git git:(master) git checkout ericzheng
Switched to branch 'ericzheng'
➜ git git:(ericzheng)
增加标签
➜ git git:(ericzheng) git tag v1.4.2
➜ git git:(ericzheng) git tag
v1.4.2
git status
检查文件状态,如果文件没有纳入git管理,会在untracked files列出
git add <filename>
把工作目录下的已修改的文件添加到staged状态
git diff 指示的是处于modified状态的修改内容,处于staged和commited状态的不显示
git rm <filename>强制删除添加-f,从仓库中删除,但保留本地文件
git reset <filename> staged -> modified
git checkout -- <filename> 丢弃修改,恢复到老版本