本文参考了廖雪峰大大的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
创建仓库
在当前用户下创建一个目录,进入到此目录下
mkdir learngit
cd learngit
初始化一个Git仓库,使用git init命令。
git init
添加文件到Git仓库,分两步:
第一步,使用命令git add <file>。(注意,可反复多次使用,添加多个文件)
git add readme.txt
第二步,使用命令git commit,创建完成。(-m 参数为提交说明)
git commit -m "wrote a readme file"
版本控制
1.查看版本
查看当前工作区的状态
git status
查看修改的内容
git diff
查看提交历史,显示从最近到最远的提交日志,可以看到几次提交
git log [--pretty=oneline]
2.版本回退
HEAD: 当前版本
HEAD^: 上一个版本
HEAD^^ 上上一个版本
HEAD~100 上100个版本
回退到上一个版本
git reset --hard HEAD^
如果你反悔了,又想回到回退之前的版本,只要你的命令行没关,
找到回退之前版本的commit id的前几位,输入下面命令(最后那个是commit id的前几位),就可以了。
git reset --hard 6f2148e
查看命令历史,如果命令行已经关了,找不到commit id了怎么办,git reflog可以查看每次命令,找到commit id
git reflog
3.工作区域
工作区(Working Directory)
这里的learngit目录就是
版本库(Repository)
.git
Git版本库里面有很多东西
stage 暂存区
master 第一个分支(git自动创建的)
HEAD 指向master的指针
4.管理修改、撤销修改和删除文件
git add 将修改添加到缓存区
git commit 每次只提交缓存区的的修改,若修改没有通过git add提交到缓存区,则不会git commit
git checkout -- file可以丢弃工作区的修改
就是让这个文件回到最近一次git commit或git add时的状态
git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区
当你在文件管理器中删除了文件,即在工作区中删除了文件,但是版本库中还没有删除
这是git status一下,就可以看到哪些文件在工作区中被删除了
1).确实要从版本库中删除
git rm test.txt
git commit -m "remove test.txt"
2).误删的,要在工作区中重新引回文件
git checkout -- test.txt
远程仓库
1.连接github
生成ssh密钥
ssh-keygen -t rsa -C "youremail@example.com"
ssh连接
在github中添加Git生成的本地ssh密钥
2.添加远程仓库
关联一个远程库(这里你需要自己在Github上先建一个仓库)
git remote add origin https://github.com/gaozh1995/learngit.git
在命令行中Push一个本地已存在的仓库到github上去(第一次要加上-u参数,以后可以省去-u参数)
git push -u origin master
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
3.从远程库克隆
默认的git://使用ssh(最快)
git clone git@github.com:gaozh1995/jstraining.git
也可以https协议(慢,麻烦,但有的公司内部只能使用https)
git clone https://github.com/gaozh1995/jstraining.git
分支管理
1.创建与合并分支(Git鼓励大量使用分支)
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
2.解决冲突
3.分支管理策略
4.Bug分支
5.Feature分支
6.多人协作
标签管理
1.创建标签
2.操作标签
自定义GIT
1.忽略特殊文件
2.配置别名
3.搭建Git服务器