Git学习笔记

Git:分布式版本控制系统

1. 安装git

下载地址:https://git-for-windows.github.io
下载版本:Git-2.14.1-64-bit
安装完成--》开始菜单--》Git--》Git Bash--》出现命令行

命令行设置:
# --global参数表这台机器上所有的git仓库都会使用这个配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

2. 初始化

$ cd e:/gitdir
$ mkdir xx
$ cd xx $ pwd /e/gitdir/xx # 初始化仓库,使git可以进行管理 # 初始化完成后可以用ls -ah命令看到隐藏的.git目录,用于跟踪管理版本库 $ git init

3. 工作区与暂存区

工作区:当前机器目录,比如第2步建的xx文件夹
版本库:工作区下的隐藏目录.git
版本库中最为重要的部分、是称为stage或index的暂存区,还有git自动创建的第一个分支master,
和指向master的指针HEAD

4. 添加或修改文件提交到仓库

# 前提条件:工作区有进行修改
# 比如:新建一个test文件放入gitdir/xx/文件夹内
# 查看工作区状态
$ git status
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        test
nothing added to commit but untracked files present (use "git add" to track)
# git add .添加所有修改的文件到暂存区,git add file添加某个修改的文件到暂存区
$ git add test
# git commit 提交更改,把暂存区的所有内容提交到仓库,-m参数表提交说明
$ git commit -m 'test file'
[master 130f858] test file
1 file changed, 1 insertion(+)
 create mode 100644 test

5. 版本回退

# 显示从最近到最远的提交日志,--pretty=oneline一行显示,最前面的类似于130f858c的表识符是commit id
$ git log
$ git log --pretty=oneline
130f858cc81e57b4fb2d8dcc73cad32534c42a4e (HEAD -> master) test file
06fa8b61c5f9e61fef95119c7ad69d32b72a47a8 Update README.md
6df0a63abfdeb0dd43b995ee8e61ee8a6ca41860 Update README.md
53341409a64a95e4359a7b2d165b318ae9f8cfb1 ftp
26894450290fce61589a376a77cec1a5fb793944 Initial commit

# 需要回退必须知道当前版本是哪个版本,HEAD表当前版本,HEAD^表上个版本,HEAD^^表上上版本
# HEAD~100表上100个版本
$ git reset --hard HEAD~3
# 此时如果想再穿回到6df0a63a版本,可以执行如下命令。
# 前提是命令行窗口没有关闭,使用现有回退了三个版本的版本执行git log是看不到之后三个版本的提交日志的
$ git reset --hard 6df0a63a
# 如果实在关闭了命令行窗口,可以使用git reflog,它记录了每次命令的执行
$ git reflog

6. 撤销修改与删除

工作区test:This is a work file
暂存区test:This is a stage file
分支test: This is a work file

# 如果git status显示文件有修改,可以用git diff可以查看修改内容
# git diff 是工作区和暂存区的对比 
# git diff -- cached 是暂存区和分支的对比 
# git diff HEAD -- filename 工作区和分支的对比

$ git diff
diff --git a/test b/test
index 13bce07..1d4447e 100644
--- a/test
+++ b/test
@@ -1 +1 @@
-This is a stage file
+This is a work file

$ git diff --cached
diff --git a/test b/test
index 6dfa057..13bce07 100644
--- a/test
+++ b/test
@@ -1 +1 @@
-This is a new file
+This is a stage file

$ git diff HEAD -- test
diff --git a/test b/test
index 6dfa057..1d4447e 100644
--- a/test
+++ b/test
@@ -1 +1 @@
-This is a new file
+This is a work file

撤销修改:
# 如果不小心改乱了工作区的内容,想要撤销工作区的修改:
# 场景a. 修改后还未放到暂存区,可以直接丢弃修改
$ git checkout -- file
# 场景b. 已经添加到暂存区
# git reset把暂存区的修改回退到工作区,如果不回退到工作区,commit时会把改乱的内容提交
$ git reset HEAD test
$ git checkout -- file
# 场景c. 已经提交到分支,想撤销只能回退版本,参见第5步,不过前提是没有推送到远程库

文件删除:
# 场景a. 需要删除文件test
$ rm test
$ git rm test
# 场景b. 误删文件test
# git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以一键还原
$ git checkout -- test

7. 关联Github

# 1.创建SSH KEY,一路回车,创建成功后会在用户主目录的.ssh下生成id_rsa和id_rsa.pub两个文件
ssh-keygen -t rsa -C "xx@xx.com"
Your public key has been saved in /c/Users/ww/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:XXXX
# 2.登录GitHub
# Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快
# Github需要根据公钥识别出提交是否由你推送
右上角--》Settings--》SSH and GPG keys--》New SSH key--》填上任意Title,在key文本框里粘贴id_rsa.pub文件的内容--》Add SSH key
# 3.创建git仓库
右上角--》New repository--》填上Repository name--》Public--》Create repository
# 4.a.克隆仓库到本地
Clone or download--》 复制克隆命令
在本地仓库执行
$ git clone git@github.com:xx/xx.git
# 4.b.关联远程仓库
# Git默认远程仓库为origin
$ git remote add origin git@github.com:xx/xx.git
# 5.把本地仓库推送到远程
# 用git push,实际是把当前分支master推送到远程
# 第一次推送使用git push -u origin master,-u参数会把本地master分支和远程master分支关联起来,
# 之后的推送和拉取不用带-u
$ git push origin master

 

posted @ 2017-09-05 15:51  不知所以  阅读(100)  评论(0)    收藏  举报