dhy-Git使用笔记

## GIT介绍
### Git是什么?
##### GIT 分布式版本控制系统
分布式版本控制系统即每个人的电脑上都有一个完整的版本库。
- 也可以有一个中央仓库(使用第三方代码托管平台,代码保密性差)
- 没有网络也可以正常提交,正常进行版本管理
- http://note.youdao.com/noteshare?id=11f64c47c20eac887c7121c59a765193&sub=F785768558E64462AC1124C9652927DD

##### SVN 集中式版本控制系统
- 代码版本集中保存在一个中央仓库里
- 必须有一个中央仓库(需要单独搭建SVN服务器,代码安全性高)
- 必须有网络才能提交更新
- http://note.youdao.com/noteshare?id=c134e00d9fec9ebd9509aab02f1cf77c&sub=EA0313A5739A45C0BA092EB5E62F0882

使用版本控制系统主要作用:代码备份、版本回退、协作开发、权限管理

Git与SVN的最主要的区别? 
- Git是分布式版本控制系统,不是必须要有中央服务器
- Git远程仓库通常使用公共服务器,速度快灵活,可以离线工作,操作复杂,代码保密性差
- SVN是集中式版本控制系统,必须要有中央服务器
- SVN远程仓库要单独搭建服务器,不能离线工作,操作简单,代码保密性较强
- http://note.youdao.com/noteshare?id=ff486c49dd8e9513ea0ea1fa9e908541&sub=BA88F896790C4C35A6548F7062317E52


#### GIT安装
1. 下载安装程序 Git-2.21.0-64-bit.exe
2. 因权限问题,安装目录尽量保持默认设置在C盘
3. 在桌面任意位置点击右键,右键菜单中有 Git Base Here 说明安装成功
4. Git Base中的一些基本的操作命令:

- 命令 `cd d:`  进入相应的磁盘 
- 命令 `cd 目录` 进入某个目录
- 命令 `cd ..` 返回上一级目录
- 命令 `mkdir 目录名` 创建目录 
- 命令 `pwd` 显示当前工作目录的全路径
- 命令 `touch xx` 新建xx文件
- 命令 `vim xx` 编辑xx文件,按esc切换到命令模式,输入冒号:wq 回车保存并返回
- 命令 `rm 文件名` 删除某个文件
- 命令 `rm -r 文件夹名称` 删除某个文件夹
- 命令 `cat xxx` 查看xxx文件内容
- 命令 `ls` 查看当前目录的所有文件
- 命令 `ctrl+c` 取消命令
- 命令 `clear` 清屏
- 上下方向键,可以查看命令使用历史


#### 命令窗口
- CMD:cmd是command的缩写即命令提示符(CMD),Win为基础的操作系统下的'MS-DOS 方式'
- Powershell: 可以看作是cmd的升级版、补充版,并且支持大多linux命令
- Git Bash:bash是linux风格的命令行,路径也是linux式的,可以使用windows和linux的命令,Git在安装的时候也安装了一个轻量级的bash环境,然后启动这个'git bash',出来的命令窗口就带有这个bash环境的环境变量。bash是基于shell的命令库,本身是unix下的命令脚本。你甚至可以在'git bash'中使用一个轻量的vi编辑器。

#### 环境变量
- 简单来说,环境变量就是快速打开文件的方法
- 当你想要执行某个程序时,系统会在当前目录下找寻它,如果找不到就会去path环境变量里面找,找到就执行,找不到那很可能就会报错,通过设置环境变量,可以更高效的执行某个程序
- 配置环境变量:**控制面板->系统和安全->系统->更改设置->高级->环境变量->path**


## 命令
#### 本地操作
1. 初始全局配置:

- 命令 `git config --global user.name "xiaocuo"`
- 命令 `git config --global user.email "99835885@qq.com"`
- 查看配置命令:
  `git config --list` 查看所有配置
  `git config user.name` 查看用户名称
  `git config user.email` 查看用户邮箱
- 提交时提示:`Please tell me who you are.` 说明全局配置没设置好
- 每台计算机上只需要配置一次,每次提交都会使用这些信息

2. 初始化仓库命令:`git init`

- 执行`git init`命令后,当前目录下会生成一个隐藏文件.git表示当前目录已经是一个版本库
- .git目录包含你初始化Git仓库时的所有必须文件,这些文件是Git仓库的骨干
  *** .git 目录:***
- hooks 目录包含客户端或服务端的钩子脚本,在特定操作下自动执行。
- info 包含一个全局性排除文件,可以配置文件忽略
- logs 保存日志信息
- objects 目录存储所有数据内容,本地的版本库存放位置
- refs 目录存储指向数据的提交对象的指针(分支)
- config 文件包含项目特有的配置选项
- description 用来显示对仓库的描述信息
- HEAD 文件指示目前被检出的分支
- index 暂存区数据
- **切记: 不要手动去修改 .git 文件夹中的任何内容**

3. 三个区域:

- 第一个是 工作区,它持有实际项目文件(代码编辑区)
- 第二个是 暂存区(Index),保存你的临时改动(修改待提交区)
- 第三个是 仓库区,保存代码的各个版本(本地仓库区)

4. 将工作区提交到暂存区的命令:`git add xxx`

- `git add test.txt` 提交当前目录test.txt到暂存区
- `git add .` 提交当前目录所有文件到暂存区(或`git add -A`或`git add *`)

5. 将暂存区提交到仓库区的命令:`git commit -m '提交说明'`
5. 将工作区提交到仓库区的命令:`git commit -a -m '提交说明'`

- 加上参数-a可以跳过git add而直接提交到仓库区,针对已被git追踪过的文件

6. 查看状态命令:`git status`

- Git有三种状态:已提交(committed)、已修改(modified)和已暂存(staged)

7. 查看提交日志命令:

- `git log` 查看详细的提交日志
- `git reflog` 查看简单的提交日志

HEAD 代表当前版本
8. 一些撤销操作:

- `git checkout -- xxx` 放弃工作区中xxx文件的修改
- `git checkout -f` 强制放弃工作区和暂存区的改动
- `git reset HEAD xxx` 撤销xxx文件暂存,针对已被git追踪过的文件
- `git reset HEAD` 撤销所有文件暂存,针对已被git追踪过的文件
- `git rm --cached xxx` 从版本库中删除xxx文件,恢复到未追踪状态

9. 版本回退命令:`git reset --hard xxx`

- `git reset --hard HEAD^` 回退到上一个版本
- `git reset --hard HEAD^ xxx` 回退xxx文件到上一个版本
- `git reset --hard HEAD^^` 回退到上上一个版本
- `git reset --hard 191e0c7` 回退到指定版本
- 版本回退后,工作区的文件会自动切换到指定版本,不会保留工作区尚未提交的修改
- `git reset --soft HEAD ~ 1` **常用** 可以撤消我们的提交,但使用以下命令保留我们的文件和索引

#### 远程操作
git常用的远程仓库:
国外:github、gitlab
国内:gitee、coding

1. 注册账号:https://gitee.com/

- 注册完了绑定邮箱地址(注意设置为公开邮箱地址)

2. 将本地仓库提交到远程仓库:

- `git remote add origin xxx` 将本地仓库与远程仓库进行关联
- `git push -u origin master` 提交到远程仓库(第一次),以后可以直接用`git push`
- `-u origin master` 指定origin的默认主分支为master
- `git push -u origin master --force` 强制覆盖提交(谨慎使用!!!)

提交到远程仓库时,如果输入账号密码错误:

- window中系统可能会缓存Git连接的凭证
- 打开控制面板->用户账户->凭据管理器->windows凭据->普通凭证
- 找到刚刚添加的凭据,可以删除或修改凭据,建议直接编辑用户名和密码为正确的即可

3. 查看本地仓库关联的远程仓库命令:`git remote -v`

4. 修改origin对应的远程仓库地址:

- `git remote rm origin` 删除origin关联的远程仓库
- `git remote add origin xxx` 重新设置origin对应的远程仓库地址

5. 拉取远程仓库的数据:https://gitee.com/tao_shu_jian/h5-0213

- `git fetch` 从远程拉取最新到本地,不会自动merge
- `git merge FETCH_HEAD` 合并FETCH_HEAD指针到HEAD指向的版本
- `git pull` 从远程拉取最新版本并merge到本地(fetch+merge)
- `git clone xxx` 从远程克隆某个仓库到本地

6. 分支操作:

- `git branch` 查看本地所有分支,当前分支前有 * 号
- `git branch -r` 查看远程所有分支
- `git branch 分支名` 创建一个分支
- `git checkout 分支名` 切换到某个分支
- `git checkout -b 分支名` 创建+切换分支
- `git merge 分支名` 合并某个分支到当前分支
- `git branch -d 分支名` 删除某个分支
- `git push origin 分支名` 提交某个分支到远程仓库
- `git pull origin 分支名` 从远程更新某个分支到本地
- `git stash` 将没有提交的内容缓存到栈中当前分支重置为未修改状态(切换分支时)
- `git stash pop`默认恢复的就是最新一次stash

7. 例:将某个分支合并到主分支并提交到远程:

- 新建一个分支:git branch 分支名
- 切换到新建的分支:git checkout 分支名
- 提交分支上的代码:git add .  ->  git commit -m '提交注释'
- 切换至主分支上:git checkout master
- 合并分支:git merge 分支名
- 合并完以后提交到远程:git push origin 分支名
- 远程仓库刷新查看最新提交结果

8. 解决冲突:

- 当多个分支修改同一个文件后,合并分支的时候就会产生冲突
- 解决冲突时将内容修改为最终想要的结果,然后执行 git add 和 git commit 就可以了

9. 设置git忽略文件列表(在忽略列表中的文件及目录不会被提交到版本库中)

- 创建忽略列表文件:.gitignore
- 在忽略列表中添加要忽略的文件

10. 配置SSH:

- git使用https协议,每次pull, push都要输入密码,相当的烦
- 使用git协议,然后配置好SSH,这样可以省去每次都输密码
- (1)首先检查电脑是否曾经生成过私钥:`cd ~/.ssh`
  若打开该文件夹为空,则表示没有生成过秘钥,进入第二步。(~表示根目录)
- (2) 生成私钥:`ssh-keygen -t rsa -C "your email"`
  命令要求输入密码,不用输,三个回车即可
  会在主目录.ssh路径下生成两个文件:id_rsa私钥文件和id_rsa.pub公钥文件
- (3)配置公钥:复制 id_rsa.pub 中的所有内容,在对应的远程仓库中添加配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值