为了搭建Hexo个人博客的学习Git
目录:
1.安装Git
可以从Git的官网下载安装包:
-Git for Windows http://git-scm.com/download/win 网站会自动判断系统下载;
-Git for MAC http://git-scm.com/download/mac 假如用Mac电脑有安装Xcode,默认会安装Git;
-Git for Linux http://git-scm.com/download/linux Linux安装步骤;
2.配置Git
1 | $ git config --global user.name "jiajiayu" |
注意:双引号里面的jiajiayu和邮箱275944903@qq.com是我个人的帐号,请改成自己的用户名和邮箱;
1 | $ git config --list |
用来检查配置信息
1 | $ ls -al ~/.ssh |
执行以上命令,检查我们的终端是否已经存在SSH Key
1 | $ ssh-keygen -t rsa -C "your_email@example.com" |
执行以上命令生成 SSH Key
1 | $ cd ~/.ssh |
查看SSH Key
1 | $ ssh -T git@github.com |
测试 ssh 链接
3.Git的使用
3.1 目录操作
1 | $ cd desktop/work/document/www |
进入desktop/work/document/www
进入www目录
1 | $ mkdir abc |
在www目录下新建一个目录abc
1 | $ pwd |
查看当前目录所在的位置
1 | $ ls -ah |
查看隐藏目录
1 | $ rm [filename] |
删除文件
1 | $ mv [filename] |
移动文件
3.2 创建仓库
有两种创建 Git 项目仓库的方法。 第一种是在现有项目或目录下导入所有文件到 Git 中; 第二种是从一个服务器克隆一个现有的 Git 仓库。
3.2.1 第一种方法(初始化仓库):
1 | $ git init gittest |
命令格式:git init [poject-name]
样会在本地目录下创建一个指定项目名称的仓库,上面这个命令会在当前目录下新建一个名字为gittest的项目仓库;也可以先在本地创建好目录后,用cd命令进入该空目录。用命令把目录变成一个项目仓库。命令如下
1 | $ git init |
注意:以上两个命令都会创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件。这个子目录是Git 来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把 Git 仓库给破坏了。
1 | $ git remote add origin https://github.com/jiajiayu/testgit.git |
上面这个命令可以使本地的项目仓库和远程的的Github项目关联起来;
1 | $ git push -u origin master |
把本地库的内容推送到远程,使用git push
命令,实际上是把当前分支 master 推送到远程。由于远程库是空的,使用第一次推送 master 分支时,加上了 –u 参数,Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。
1 | $ git push origin master |
从现在起,只要本地做了修改删除新增提交后,就可以通过如下命令:git push origin master
把本地master分支的最新修改推送到github上了,可以看到github页面的内容和我们本地的内容是一模一样的了。
3.2.2 第二种方法(克隆现有的仓库):
1 | $ git clone https://github.com/jiajiayu/testgit.git |
HTTP方式
1 | $ git clone git@github.com:jiajiayu/testgit.git |
SSH方式
可以使用HTTP方式或SSH方式来克隆。命令格式:git clone [url]
,这会在当前目录下创建一个名为testgit
的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件。 如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以使用如下命令:
1 | $ git clone https://github.com/jiajiayu/testgit.git gitstudy |
这条命令将执行与上一个命令是相同的操作,不过在本地创建的仓库名字变为 gitstudy。
3.3 本地修改(检查已有的编辑并执行commit操作)
1 | $ git status |
列出所有新建或者更改的文件,这些文件需要被commit。检查当前文件状态。执行:git status -s
可以得到简要紧凑的文件状态。??表示有新添加的文件没有添加到暂存区;M表示文件有修改过;A表示有新添加的文件已经添加到了暂存区。
1 | $ git diff |
展示那些没有暂存文件的差异。查看尚未暂存的文件更新了哪些部分。
1 | $ git add [file] |
将文件进行快照处理用于版本控制
1 | $ git diff --staged |
展示暂存文件与最新版本之间的不同
1 | $ git reset [file] |
将文件移除暂存区,但是保留其内容。重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
1 | $ git commit -m "[descriptive message]" |
将文件快照永久地记录在版本历史中。另外撤销提交:git commit --amend
例如git commit -m 'initial commit'
、git add forgotten_file
、git commit --amend
最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。
3.4 批量更改(命名一系列commit以及合并已完成的工作)
1 | $ git branch |
列出当前仓库中所有的本地分支
1 | $ git branch [branch-name] |
建立一个新分支
1 | $ git checkout [branch-name] |
切换到一个特定的分支上并更新工作目录。其中git branch [branch-name]
、git checkout [branch-name]
可以合并起来使用命令:git checkout -b [branch-name]
这一条命令将创建分支并进行切换。
1 | $ git merge [branch] |
合并特定分支的历史到当前分支
1 | $ git branch -d [branch-name] |
删除指定的分支
1 | $ git branch -m [oldbranch] [newbranch] |
修改分支的名称
3.5 重构文件(重定位并移除版本文件)
1 | $ git rm [file] |
从工作目录中删除文件并在暂存此删除。
1 | $ git rm --cached [file] |
从版本控制中移除文件,并在本地保存文件
1 | $ git mv [file-from] [file-to] |
改变文件名并准备commit。移动文件
3.6 停止追踪(不包含临时文件和路径)
1 | *.log |
文本文件.gitignore可以防止一些特定的文件进入到版本控制中
1 | $ git ls-files --other --ignored --exclude-standard |
列出所有项目中忽略的文件
3.7 保存临时更改(暂存一些未完成的更改)
1 | $ git stash |
临时存储所有修改的已跟踪文件
1 | $ git stash pop |
重新存储所有最近被stash的文件
1 | $ git stash list |
列出所有被stash的更改
1 | $ git stash drop |
放弃所有最近stash的更改
3.8 查阅历史(浏览并检查项目文件的发展)
1 | $ git log |
列出当前分支的版本历史。查看提交历史。
1 | $ git log --follow [file] |
列出文件的版本历史,包括重命名
1 | $ git diff [first-branch]...[second-branch] |
展示两个不同分支之间的差异
1 | $ git show [commit] |
输出元数据以及特定commit的内容变化
3.9 撤销commit(擦除错误并更改历史)
1 | $ git reset [commit] |
撤销所有[commit]后的的commit,在本地保存更改
1 | $ git reset --hard [commit] |
放弃所有更改并回到某个特定的commit
3.10 同步更改(注册一个远程的链接,交换仓库的版本历史)
1 | $ git fetch [bookmark] |
下载远程仓库的所有历史
1 | $ git merge [bookmark]/[branch] |
合并远程分支到当前本地分支
1 | $ git push [remote-name] [branch-name] |
上传所有本地分支commit到远程仓库。推送到远程仓库。必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。
1 | $ git pull |
下载书签历史并合并更改