版本控制
创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
初始化一个Git仓库,使用git init
命令。所添加文件放到learngit下面
添加文件到Git仓库,分两步:
git add
,注意,可反复多次使用,添加多个文件;git commit -m
,完成。要随时掌握工作区的状态,使用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
[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 ''
原因:
本地仓库为空
错误:
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
原因:本地和github没有设置密钥
设置完,重新添加仓库并执行git push -u origin(仓库名) master
ssh的key配置
ls -al ~/.ssh 查看是否存在秘钥证书
$ ssh-keygen -t rsa -C "Dreaming-life" 生成新的秘钥证书,.pub为公钥,
测试ssh keys是否设置成功。
$ ssh -T [email protected]
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access. #出现词句话,说明设置成功。
复制粘贴到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 名字
Tortoisegit clone 需要设置setting
绑定本地git的ssh ,然后就可以愉快的玩耍了
总结
1下载git (个人需要tortoisegit,配置git的ssh)
2生成公私钥
3github,码云配置公钥
4git 设置用户,remote绑定远程仓库
5,git 第一次push -u 剩下的直接push
电脑window安全中心账号密码凭证,账号密码为传到该远程仓库的账号密码
添加Git Config 内容
进入git bash终端, 输入如下命令:
git config --global credential.helper store
执行完后查看C:\Users\目录下的.gitconfig文件,会多了一项:还有一个生成的.git-credentials
[credential]
helper = store
重新开启git bash会发现git push时不用再输入用户名和密码
! [rejected] master -> master (fetch first)......
出现这个问题是因为仓库中的README.md文件不在本地代码目录中,可以通过如下命令进行代码合并
git pull --rebase origin master
然后再
git push origin master
便可上传成功