创建版本库(repository)
$ mkdir firstry
$cd firstry
$git init
$vi readme.txt
$git add readme.txt
$vi readme1.txt
$git add readme1.txt
$git commit -m 'I write two flies'
PS:git init就相当于为当前状态的文件夹建立一个指针链表,主要用来追踪文件的状态,同时可以回退,还原等
在git init之后,在文件夹中添加文件,只有在git add ,git commit后才有效
git commit可以一次性提交所有已经add了的文件
add和commit区别见下图,add后只是进入了stage区,commit后才链入respository(注意是在master分支下的)
图片来自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000
保存修改
$vim readme.txt
//修改内容
$git status
$git add readme.txt
$git status
$git commit -m 'readme modified'
$git status
PS:git status用来显示当前git库的状态(上述三图分别表示了三种状态)
SSH连接
$ ssh-keygen -C 'your email' -t rsa
//之后询问rsa公钥私钥的储存位置,enter即可
$cat /root/.ssh/id_rsa.pub
//显示rsa公钥,复制
//然后将该公钥添加到github的ssh列表中
$ ssh -T git@github.com
//之后显示以下提示,表示连接成功
添加远程库
$ git clone git@github.com:xxxx/xxx.git
//将远程库copy一份到本地
//进行相应的编辑修改(假设已经进行了git操作)后
$git remote add origin git@github.com:xxx/xxx.git
//origin代表远程操作,如果显示error,则先执行 git remote rm origin
$git push origin master
//将本地分支(默认是master)push到远程的master分支上去,本地master和远程master会合并
//在之前可能会需要确认身份
//git config --global user.email "xxx“
//git config --global user.name "xxx"
分支
$ git branch
//查看当前分支的情况
$ git branch visitor
//创建一个分支
$ git branch
$ git checkout visitor
$ git branch
//然后对该branch内容修改并加入到git库中,之后切换到master分支,查看在visitor分支中修改了的内容,可以发现在master分支中并未修改
$ git checkout master
$ git merge visitor
//将visitor分支的内容合并到master分支中去
$ git branch -d visitor
//删除visitor分支
不同分支之间的关系见url:http://github.liaoxuefeng.com/sinaweibopy/video/master-and-dev-ff.mp4
一些简化的操作
一些容易混淆的操作
$ git add .
//将工作区未追踪新建文件和已追踪修改文件添加到暂存区,但是不包括删除的文件
$ git add -u
//将工作区已追踪的文件的修改或者删除添加到暂存区,可以在该操作后commit达到在git库中删除文件的目的
$ git add -A
//集成了 git add . 和git add -u的所有功能
一些可能出现的问题
Example-one:
$ git clone xx@xx.git
$ mkdir xxx
$ git status
//显示本地库与远程库版本一致,工作区没有新文件,可能会疑问:我不是建了一个文件夹么?但是没有内容,只有目录分支是不行的。
解决:
$ cd xxx
$ vi README.md
..之后就可以添加了
Example-two:
Permission denied (publickey).
多日没有进行git操作后,ssh失效