#给小白的git说明书

1. 建立代码仓

1.1本地新建同步远程

git 其实就是一个远程文件管理工具,使用仓库概念来进行不同功能代码的分割

建立一个代码仓库是使用git的先决条件。

1.2 创建一个代码仓:

1
2
3
4
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

1.3 通过git init 来把这个目录变成git可以管理的仓库

1
2
3
$ git init
// 命令后跟着你要创建仓库的目录地址加.git目录 /xxxx/xxxx/xxxx/.git/
Initialized empty Git repository in {xxx/xxxx/xxxx}

你的git仓库就建好了,这是目录下多了.git目录,用来跟踪管理版本库的,不要去试图改动,你可以使用ls -ah来看他

1.4 以上步骤建立了一个本地的代码仓,接下来如何关联远程的代码仓从而把代码推上去呢?

1.4.1 首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库

1.4.2 在Repository name填入代码仓名称,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库,目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

1.4.3 现在,我们根据GitHub的提示,在本地的xxxx仓库下运行命令:

1
$ git remote add origin git@github.com:LittleBeeMark/ssl_projects.git

如此一来我们本地的仓库就和远程的对应仓库关联上了,这个origin参数实际就是远程地址的别名,之后执行git push -u origin master 其实就是把目前的分支推送到刚刚建立的远程仓库的master分支,-u 在执行第一次命令时使用可以让本地和远程和指定仓库关联。

1.5 SSH 警告!当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

1
2
3
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

1
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。

1.6 生成SSHKEY

1
2
//重新生成key
ssh-keygen -t rsa -C 1398499734@qq.com连敲两次回车键

会在本地C:\Users(windows外的系统是 ~ 家目录下)你的用户名.ssh生成文件夹,里面有id_rsa和id_rsa.pub两个文件
然后复制id_rsa.pub文件里面的内容,到https://github.com/settings/keys新建一个

1.7 关联远程的另一种方式—克隆

1.7.1 远程建立一个分支

1.7.2 本地使用git地址来进行克隆:

1
$ git clone git@github.com:LittleBeeMark/ssl_projects.git

1.8 接下来就是给你的仓库添加东西了如添加一个readme.md

1.8.1 第一步 使用git add 把文件添加到仓库

这个添加其实是把工作区的文件修改添加到了git 的暂存区

git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别

1
$ git add readme.md

1.9 第二步 使用git commit告诉git 把文件提交到仓库

1
2
3
4
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt

1.10 第三步把代码推到对应分,远程的origin

1
$ git push origin (分支名)

二、分支操作

2.1 使用git log 来进行代码的日志打印:git log命令显示从最近到最远的提交日志,我们可以看到每次提交。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

需要友情提示的是,你看到的一大串类似1094adb...的是commit id(版本号)

2.2 版本回退:

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

现在,我们要把当前版本append GPL回退到上一个版本add distributed,就可以使用git reset命令:

1
2
$ git reset --hard HEAD^
HEAD is now at e475afc add distributed

2.3 回退后再回到上个版本:

找到那个版本的commit id1094adb...,于是就可以指定回到未来的某个版本:

1
2
$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL

2.4 查找已经被回退掉的版本号:

1
$ git reflog

这个命令用来记录你的每个命令,命令前有你在执行这个命令的分支