参考: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 (廖雪峰老师写的非常好,去看吧!)
http://blog.csdn.net/u013492736/article/details/46852611
git是一个分布式的版本控制系统。
git config --global user.name 'Your Name' git config --global user.email 'email@example.com' git init % 把当前目录变成Git可以管理的仓库 git add <file> % 把文件添加到仓库 git commit -m <info> % 把文件提交到仓库 git status % 查看仓库当前的状态 git diff % 查看修改的内容 git log % 显示从最近到最远的提交日志 git reset --hard HEAD^ % 回退到上一个版本 git reset --hard <id> % 回退到版本号为id的版本 git reflog % 记录了每一次命令 git checkout -- <file> % 丢弃工作区的改动 git reset HEAD <file> % 取消暂存 git rm <file> 从暂存区删除文件file查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
首先明白两个概念:工作区(Working Directory)和版本库(Repository) 工作区:就是在电脑上可以看到的目录; 版本库:工作区中的隐藏目录.git。
Git的版本库中存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD,HEAD表示当前版本。 上一个版本是HEAD,上上一个版本就是HEAD^,往上n个版本就是HEAD~n。
把文件往Git版本库里添加的时候,是分两步执行的: 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区; 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
github是git的一个服务器。
创建自己的公钥:
ssh-keygen -t rsa -C "your_email@youremail.com"push an existing repository from the command line 先有本地库,后有远程库,用下面的命令进行关联:
git remote add origin https://github.com/zhouna/gitDir.git git push -u origin master推送最新修改:
git push origin master注意:如果设置了免密码登陆,但push时仍然要求输入密码,原因可能是使用了https方式push。修改.git/config文件,将url改为git。
从远程库克隆一个本地库:
git clone git@github.com:<username>/<projectName>.git每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。HEAD指向当前分支。在Git里,master分支是主分支。
为什么需要分支? 因为代码要经常提交,以免丢失,但是如果一时开发不完,你提交的会影响到别人。这是,就需要创建分支,你在自己的分支上开发,提交,等你完全开发完一个功能后,再合并回去。
首先,我们创建dev分支,然后切换到dev分支:
$ git checkout -b dev Switched to a new branch 'dev'git check命令加上-b参数表示创建并切换,相当于一下两条命令:
$ git branch dev $ git checkout dev Switched to branch 'dev'然后,用git branch命令查看当前分支:
$ git branch * dev master对dev分支的工作完成后,我们就可以切换回master分支:
$ git checkout master Switched to branch 'master'现在,我们把dev分支的工作成果合并到master分支上:
$ git merge dev合并完成后,就可以删除dev分支了:
$ git branch -d devGit鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
