git

163 阅读7分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

首先要了解git工作流程

在这里插入图片描述

git的初始配置

在这里插入图片描述 第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要, 每次 Git 提交时都会引用这两条信息,说明是谁提交了更新, 所以会随更新内容一起被永久纳入历史记录

git config --global user.email "572813824@qq.com"
git config --global user.name "guopengchang"

git里面路径的问题

1. cmd里用 \
2. gitbush用 /
3. cd .. 返回上一级目录
4. cd aa 进入aa
5. cd 返回根目录

从当前目录右键直接打开管理的文件夹,更方便哦

git复制粘贴

git 无法快速复制粘贴

  1. 在电脑打开git bash命令窗口
  2. 右键顶端边框,点击“属性”,如图所示
  3. 在进行点击选项的菜单,如图所示
  4. 勾选上编辑选项的“快速编辑”

另一种方法

第一种解决方案: Ctrl+ins 复制 Shift+ins 粘贴 第2种解决方案: 打开git bash 点击右键选择Paste 即可实现黏贴啦

git命令

  1. git init 初始化git项目 (如果看不见.git项目,点击查看,勾选隐藏的项目)
  2. git status 查看状态
  3. git add index.html 添加到暂存区中
  4. git add -A 提交所有文件
  5. git commit -m "提示信息" 提交到仓库中
  6. git log 查看提交记录
  7. 创建新分支:git branch branchName
  8. git branch --merged 查看已经合并的分支
  9. git branch --no-merged 查看没有合并的分支
  10. 切换到新分支:git checkout branchName
  11. 然后,上面两个命令也可以合成为一个命令 git checkout -b branchName
  12. 删除版本库与项目目录中的文件 git rm index.php
  13. 只删除版本库中文件但保存项目目录中文件 git rm --cached index.php
  14. 修改最后一次提交 git commit --amend
  15. git checkout list.html 暂存区文件覆盖工作区的文件
  16. git rm --cached 文件名 只删除版本库中文件但保存项目目录中文件 (这个文件 他又不被git所管理了)
  17. git reset --hard commitID 从git仓库拿出来,覆盖暂存区和工作区 (commitId要从git log 里面查找--相当于返回某一次提交)

基础流程

首先克隆你的项目
git clone https://gitee.com/gpc/gpc.git

将所有文件提交到暂存区
git add .

不小心将工作区中的 hd.js 文件删除了,现在可以将暂存区中的hd.js恢复回来
如果没有文件删除需要恢复,忽略此步骤
git checkout hd.js

完成工作后创建一个新的提交,并使用 -m 选项说明完成的工作
git commit -m '购物车开发'

将代码提交到远程服务器,与同事或其他开发者分享代码
git push 

分支命令

分支流程概念

大部分情况下不会直接在master分支工作,我们应该 保护这个分支是最终开发完成代码健康可交付运行的。 所以功能和缺陷(bug)修复都会新建分支完成, 除了这个概念外与基本流程使用是一样的。

  1. git branch 文件名 新建一个分支
  2. git checkout 文件名 切换到这个这支
  3. git commit -m 'H5 支付功能'
  4. 合并分支到master
  5. 演示
切换到master分支
git checkout master

合并pay分支的代码
git merge pay
  1. 提交代码到master远程分支 git push

基本管理

工作区管理

git clean命令用来从工作目录中删除所有没有跟踪(tracked)过的文件

git clean -n是一次clean的演习, 告诉你哪些文件会被删除 git clean -f删除当前目录下没有tracked过的文件,不会删除.gitignore指定的文件 git clean -df删除当前目录下没有被tracked过的文件和文件夹

暂存区管理

提交所有修改和新增的文件 git add . 只提交修改文件不提交新文件 git add -u 放弃没有提交的所有修改 git checkout . 放弃指定文件的修改 git checkout hd.js 查看暂存区文件列表 git ls-files -s 查看暂存区文件内容 git cat-file -p 6e9a94

版本库管理

使用reset恢复到历史提交点,重置暂存区与工作目录的内容。

清空工作区和暂存区的改动 git reset --hard 恢复前三个版本 git reset --hard HEAD^^^ 保留工作区的内容,把文件差异放进暂存区 git reset --soft 恢复到指定提交版本(先通过 git log 查看版本号) git reset --hard b7b73147ca8d6fc20e451d7b36

分支管理

分支用于为项目增加新功能或修复Bug时使用。

创建分支 git branch dev (创建开发分支) 查看分支 git branch

切换分支 git checkout dev

创建并切换分支 git checkout -b feature/bbs

合并dev分支到master (要在主分支下合并,所以先切换到主分支) git checkout master git merge dev 合并分支

删除分支 git branch -d dev (分支提交完,并且没用了,就可以删除了) (如果没有被合并,是不可以被删除的)

删除没有合并的分支git branch -D dev

删除远程分支 git push origin :dev

查看未合并的分支(切换到master) git branch --no-merged

查看已经合并的分支(切换到master) git branch --merged

日志查看

查看日志 git log 查看最近2次提交日志并显示文件差异 git log -p -2 显示已修改的文件清单 git log --name-only 显示新增、修改、删除的文件清单 git log --name-status 一行显示并只显示SHA-1的前几个字符 git log --oneline

分支的概念

  1. 主分支,第一次向git仓库提交更新记录时自动长生的一个分支
  2. 开发分支,基于主分支创建的
  3. 功能分支,开发具体功能的,基于开发分支创建的
当功能分支创建完成后,提交给开发分支,
这个功能分支就没u有用了,就可以删除了
等开发分支功能累积到一定程度时,合并到主分支

定义别名

也就是给命令弄一个简写的形式,提升工作效率 配置文件定义 修改配置文件 ~/.gitconfig 并添加以下命令别名配置段

[alias]
	a = add .
	c = commit
	s = status
	l = log
	b = branch

现在可以使用 git a 实现 git add . 一样的效果了。

.gitignore

用于定义忽略提交的文件

所有空行或者以注释符号 # 开头的行都会被 Git 忽略。 匹配模式最后跟反斜杠(/)说明要忽略的是目录。 可以使用标准的 glob 模式匹配。 .idea /vendor .env /node_modules /public/storage *.txt

解决冲突

两个人同时改了同一个文件,同一个地方 使用编辑器修改冲突的文件 添加暂存 git add . 表示已经解决冲突 git commit 提交完成

Stash

暂时保存更改 (工作了一半的东西,暂时保存起来,切换到别的工作区) (文件必须要提交才可以切换分支,否则将会带到别的分支) 临时转换到其他工作 使用场景 分支临时切换 储藏工作 git stash 查看储藏列表 git stash list 应用最近的储藏 git stash apply 应用更早的储藏 git stash apply stash@{2} 删除储藏git stash drop stash@{0} 应用并删除储藏 git stash pop

Tag

Git 也可以对某一时间点上的版本打上标签 ,用于发布软件版本如 v1.0

添加标签 git tag v1.0 列出标签 git tag 推送标签 git push --tags 删除标签 git tag -d v1.0.1 删除远程标签 git push origin :v1.0.1

打包发布

对mster分支代码生成压缩包供使用者下载使用,--prefix 指定目录名

git archive master --prefix='hdcms/' --format=zip > hdcms.zip

添加纤细说明

在根目录新建readme.md

github.com/guopengchan…