Git 入门与实践

Git 入门与实践

推荐:

Git 的使用方式有很多。图形化 —— 小乌龟(Tortoise Git )、命令行—— git bash、IDE 集成等 ......

目录

基础配置

(1) 配置用户名和邮箱:

git config --global user.name "自己的名字"  # 用户名
git config --global user.email "自己的邮箱" # 邮箱
git config --list # 查看配置项
补充,以上设置保存了用户名与邮箱信息到 C:\Users[用户名].gitconfig 文件中

(2)公用的电脑来备份(github)(远端仓库)

Github 本身是个网站,但是这个网站所在的电脑可以做为公用的电脑来备份代码!

  1. 注册 Github 账号,并登陆
  2. 先使用 git bash 窗口,输入

ssh-keygen -t rsa || ssh-keygen
这个命令就会生成一个标识,我们需要把这个标识上传到服务器会在 【/c/Users/[用户名]/.ssh】目录中生成两个文件:【id_rsa, id_rsa.pub】, 我们用编辑器打开 id_rsa.pub,复制内容并关闭
  1. 在 Github 网站上,把复制的密钥,添加到 Github 上去!
  2. 测试 $ ssh -T git@github.com
如果能看到类似于Hi XXXX! You've successfully authenticated, but GitHub does not provide shell access.这样的提示,则表示 ssh key 配置成功!

Git 工作区、暂存区和版本库

我们先来理解下 Git 工作区、暂存区和版本库概念

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage, 或 index。一般存放在"git 目录"下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是 Git 的版本库。

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:

201609291519223166.png

工作流

  1. 在项目根目录下创建.git文件,暂存区和版本库的代码都在此文件夹下
git init
  1. 添加文件到暂存区
git add A4.txt //添加单一文件
git add -A    //把自上一次git commit后,修改过的文件全部添加到暂存区
  1. 放到仓库
git commit -m "注释" // 是把暂存区的代码,放到仓库
  1. git 上传代码到远端分支
git push git@github.com:yanyue404/fed02.git master

简化命令

git remote add origin git@github.com:yanyue404/fed02.git
git push origin master

origin 的名称随便起, 就相当于设置 var origin = "git@github.com:yanyue404/fed02.git",将本地的 master 分支推送到 origin 主机的 master 分支。

  1. 忽略清单文件(.gitignore)

在项目根目录,新建一个名为 .gitignore 的文件。假如,我们希望 test 文件中的内容不被备份, 就在.gitignore 文件中添加一行。

# 忽略项目根目录的test文件夹中的内容
/test
# 忽略项目中所有名为test的文件夹,或者文件
test
# 忽略项目中的名为app.js的文件
app.js
# 忽略项目中的所有js
*.js
/test/*.*

常用命令

查看信息:

  • git status // 查看有哪些修改后的文件在暂存区,哪些不在
  • git log //只能看到 head 指向之前的提交记录
  • git reflog // 查看所有的操作记录

版本回退:默认 head 指向 master,回退后 Git 会把 master 中的提交的代码拿到工作区。

git reset --hard commitID

# 版本回退需要强制提交
git push -f
注意,如果是回退到最近的一次提交的状态,可以省略 commitID 参数,直接 git reset --hard head即可。

分支:

默认只有一个 master 分支(主分支),可以创建新的分支。在新分支中提交代码直到这个功能完成了,就可以回到 master 分支,然后合并。

git branch # 查看本地分支
git branch -r # 查看所有远程分支
git branch -a # 查看所有远程分支和本地分支

git branch [branch-name]  # 新建一个分支,但依然停留在当前分支
git checkout [branch-name]  # 切换到指定分支,并更新工作区
git checkout -b [branch-name] #  创建一个分支并切换到该分支中,相当于以上两条命令

git merge [branch-name] # 合并指定分支到当前分支

git branch -d [branch-name] # 删除分支
git push origin --delete [branch-name] # 删除远程分支

标签:

git tag # 列出所有tag
git tag [tag] # 新建一个tag在当前commit
git tag [tag] [commit] # 新建一个tag在指定commit
git tag -d [tag] # 删除本地tag
git push origin :refs/tags/[tagName] # 删除远程tag
git show [tag] #查看tag信息
git push [remote] [tag] # 提交指定tag

远程同步:

git fetch [remote] # 下载远程仓库的所有变动

git remote -v # 显示所有远程仓库
git remote show [remote] # 显示某个远程仓库的信息
git remote add [shortname] [url] # 增加一个新的远程仓库,并命名

git pull [remote] [branch] # 取回远程仓库的变化,并与本地分支合并

git push [remote] [branch] # 上传本地指定分支到远程仓库
git push [remote] --force # 强行推送当前分支到远程仓库,即使有冲突
git push [remote] --all # 推送所有分支到远程仓库

配置代理:

如在公司内网使用需要配置代理可设置

# 添加代理
$ npm config set proxy=http://web-proxy.oa.com:8080

$ npm config set https-proxy=https://web-proxy.oa.com:8080

# 删除代理

$ npm config delete proxy
$ npm config delete https-proxy

git push 免密码

每次提交代码时需要输入用户名密码,则说明你在从仓库中 clone 代码时使用的是 HTTPS 的 key 进行拉取代码。而使用 SSH key 拉取代码时,则不需要。

首先创建文件 .git-credentials 存储 GIT 用户名和密码。

# 创建
touch .git-credentials
# 在vim中打开
vim .git-credentials
# 文件内容
https://{username}:{password}@github.com

长期存储密码,进入 git bash 终端, 输入如下命令:

git config --global credential.helper store

经过这样操作后就可以免密登录了

注意:文件结构要与初始化连接 github 的.gitconfig 文件在同级别目录下。

完整流程

git init # 是第一次建立版本库
git clone [url] # 下载一个项目和它的整个代码历史

git pull origin master    # 从远程获取最新版本并merge到本地等同于
git checkout -b dev       # 这里在新分支上开发,考虑实际是否需要
git add -A, git commit -m # 一样是这两个命令功能完成之后回到 master 分支
git checkout master
git merge dev
git push

# 删除本地 dev分支和远程的dev分支
git branch -d dev
git push origin --delete dev

常用命令速查表

1486348362884912.jpg

参考链接


Rainbow's Blog
Front-end-development-technology

一个喜欢唱歌的前端工程师.

1k 声望
16 粉丝
0 条评论
推荐阅读
正则手记——方法篇
方法篇,JavaScript 中都有哪些操作正则的方法。RegExp 对象方法方法描述exec检索字符串中指定的值。返回找到的值,并确定其位置。test检索字符串中指定的值。返回 true 或 false。正则.test(字符串)regexp.test(...

RainBow阅读 665

git 常用命令 记录
有错误和改进的地方望留言,谢谢 : )顺便推荐一下,git入门教程Git 教程图解 GitPro Git 2(中文版)Git 使用Git 使用规范流程Git 工作流程Commit message 和 Change log 编写指南全局设置git config --system //...

Luff阅读 3.2k

写一个Vue DevTools,让开发体验飞一会
近年来,人们越来越关注开发者体验 (DX)。工具和框架也一直在努力改进 DX,比如这两年光速发展的Vite。在大多数人的印象中,Vite的特点是快,但是在我看来让它发展迅速并在前端构建工具占据一席之地的主要原因是...

null仔2阅读 942

封面图
git/pip/easy_install/apt代理/源设置
在公司内网环境中,访问公网往往需要经过公司的代理,对于浏览器、IDE等开发工具,都提供了设置代理的配置,而git、pip、easy_install等CLI工具,则需要通过命令或配置文件进行代理设置;对于Python、Ubuntu、Mav...

乘着风1阅读 5.6k

Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.5k

一个令人惊艳的ChatGPT项目,开源了!
最近在GitHub上发现了一个爆火的开源项目。好家伙,凑近一看,居然还是由微软开源,并且和最近炙手可热的ChatGPT息息相关。项目的名字叫做:Visual ChatGPT。[链接]这个项目最早是3月上旬微软开源的,项目宣布开...

CodeSheep2阅读 1.9k

封面图
github 和 gitlab 之自定义首页样式
🎈 个性首页相信很多小伙伴在逛 github 和 gitlab 的时候会发现很多开发者的首页异常的炫酷,如 [链接]🎈 制作步骤是不是立马想拥有一个属于自己的高大上主页了从上图中我们可以看出,其实它展示的一个 readme 里面...

tiny极客3阅读 1.9k评论 4

封面图

一个喜欢唱歌的前端工程师.

1k 声望
16 粉丝
宣传栏