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

浙公网安备 33010602011771号