版本控制
创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
初始化一个Git仓库,使用git init
命令。所添加文件放到learngit下面
添加文件到Git仓库,分两步:
- 使用命令
git add <file>
,注意,可反复多次使用,添加多个文件; - 使用命令
git commit -m <message>
,完成。
要随时掌握工作区的状态,使用
git status
命令。如果
git status
告诉你有文件被修改过,用git diff
可以查看修改内容。
git log
命令显示从最近到最远的提交日志,需要友情提示的是,你看到的一大串类似1094adb...
的是commit id
(版本号),和SVN不一样,Git的commit id
不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数:
$ git log --pretty=oneline
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交1094adb...
(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append GPL
的commit id
是1094adb...
,于是就可以指定回到未来的某个版本:
$ git reset --hard 1094a
Git提供了一个命令git reflog
用来记录你的每一次命令
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本
远程仓库
查看当前的远程仓库可以用 git remote
命令,加上 -v
选项,显示对应的克隆地址
添加远程仓库
git remote add [remote-name] [email protected]:Dreaming-life/oneday.git
从远程仓库抓取数据
正如之前所看到的,可以用下面的命令从远程仓库抓取数据到本地:
$ git fetch [remote-name]
推送数据到远程仓库
第一次推送加-u
git push -u origin master
出现如下错误:
error: src refspec master does not match any.
error: failed to push some refs to ''
原因:
本地仓库为空
ssh的key配置
ls -al ~/.ssh 查看是否存在秘钥证书
$ ssh-keygen -t rsa -C "Dreaming-life" 生成新的秘钥证书,.pub为公钥,复制粘贴到GitHub的ssh key中并生成
git push -u origin master
推送生效
后面的推送就可以直接使用命令
$ git push origin master
执行修复公钥命令,解决问题 key_load_public: invalid format
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub
查看远程仓库信息
git remote show [remote-name]
查看某个远程仓库的详细信息
远程仓库的删除和命名
$ git remote rename 原来的 重命名
$ git remote rm 名字