根据学习廖雪峰老师的git教程做的笔记
安装git
进行git的配置
-
配置您的用户名和邮箱地址,使用--global 这个参数表明了在此台机器上的所有仓库都会使用该配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
创建版本库
-
在本地的一个文件目录下,创建一个仓库test,就是一个名为test的文件夹
$ mkdir test
$ cd test
$ pwd
/d/Repositories/test -
将该仓库交由git进行管理
cd test
git init
Initialized empty Git repository in D:/Repositories/test/.git/执行 git init 命令会将该仓库叫由git进行管理,在该仓库下会多出一个.git的文件夹,该文件夹是用于跟踪管理版本库的
将文件添加至版本仓库
首先在仓库里创建一个文件,比如README.md
-
使用 git status 可以查看当前版本仓库的状态,当新建了README.md文件后,执行 git status 命令,可以看到以下的信息,未添加到仓库的文件列表以及提示可以使用 git add命令来将其添加到仓库中
$ git staus On branch master Initial commit Untracked files:
(use "git add <file>..." to include in what will be committed) README.md nothing added to commit but untracked files present (use "git add" to track) -
使用 git add 命令来将文件添加到仓库,此时再执行 git status 可以看到以下信息,文件README。添加到了仓库中
$ git add README.md
$ git status
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file: README.md -
使用 git commit 提交操作,-m 后面是对本次提交进行说明,可以说是这次提交干了啥事,得到的信息是:命令执行成功,一个文件改变插入了69行。
$ git commit -m "add README.md" [master (root-commit) a88471c] add README.md
1 file changed, 69 insertions(+)
create mode 100644 README.md
由于README.md文件就是我正在编辑的笔记文件,所以该文件已经较上一次提交发生了改变,我们使用 git status 来查看状态
```shell
$ git stauts
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
```
可以使用 git diff 来查看文件具体的修改,显示的是当前文件与上一次提交的文件的不同
```
$ git diff README.md
```
然后我们可以将修改后的文件在添加并提交到仓库
```shell
$ git add README.md
$ git commit -m "update REMADE.md"
```
版本控制
-
以上的操作向版本库提交了两次,使用 git log 可以查看提交的历史记录,按照由最近的提交到最远的提交排列,没一次提交都有唯一的 commitid 来标识,可以看到下列信息有,add README.md 和 update README.md 两次提交记录。
$ git log commit 00673827e54d35b3db1950f8ac6f728d6e809386
Author: lychiyu <lychiyu@gmail.com>
Date: Sat May 6 14:10:14 2017 +0800 update README.md commit a88471c627f934ca1540bd5cc1d51c8a4a3b65ee
Author: lychiyu <lychiyu@gmail.com>
Date: Sat May 6 10:30:19 2017 +0800 add README.md -
如果想要回退到当前版本的上一个版本,可以使用以下命令,便回到了上一个版本,此时再执行 git log 命令,只能得到一个提交记录。
$ git reset --hard HEAD^
HEAD is now at a88471c add README.md $ git log
commit a88471c627f934ca1540bd5cc1d51c8a4a3b65ee
Author: lychiyu <lychiyu@gmail.com>
Date: Sat May 6 10:30:19 2017 +0800 add README.md -
如何回到 update README.md 这个版本,可以使用以下命令,--hard 后面的字符是 update README.md 版本的 commitid 的前几位,这样就可以回到指定的版本了
$ git reset --hard 00673827
HEAD is now at 0067382 update README.md 可以使用 git reflog 来查看命令记录
$ git reflog
管理修改
-
撤销操作
- 当修改文件后并未执行 git add 时使用 git checkout --README.md 命令来撤销修改
- 执行了 git add 时,先使用 git reset HEAD README.md 再执行情况1的指令
$ git reset HEAD README.md
$ git checkout --README.md
3. 如果已经提交了,这可以执行版本回退操作
远程仓库
-
生成 SHH Key,填上自己的邮箱地址,复制当前用户目录下“.ssh/id_rsa.pub” 里面的内容到github或者其他代码托管网站的ssh设置里面
$ ssh-keygen -t rsa -C "lychiyu@gmail" -
将本地仓库,推送到远程代码库中的master分支上
$ git remote add origin git@bitbucket.org:lychiyu/test.git
$ git push -u origin master -
克隆远程仓库到本地
$ git clone git@bitbucket.org:lychiyu/test.git
分支管理
-
创建分支,创建一个dev分支,并切换至dev分支下
$ git branch dev
$ git checkout dev
Switched to branch 'dev'使用git branch命令来查看所有的分支,在当前分支前会有星号标注
$ git branch
* dev
master -
合并分支,使用git merge 命令来接需要合并的分支名,如下面,先切到master分支下,在将dev分支与其合并。
$ git checkout master
$ git merge dev -
删除分支,如下
$ git branch -d dev
Deleted branch dev (was 0067382).
$ git branch
* master