Git使用技巧

为了搭建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
2
$ git config --global user.name "jiajiayu" 
$ git config --global user.email "275944903@qq.com"

注意:双引号里面的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
2
3
$ cd ~/.ssh
$ ls
$ cat ~/.ssh/id_rsa.pub

查看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_filegit 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
2
3
*.log
build/
temp-*

文本文件.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

下载书签历史并合并更改