# GP14-git **Repository Path**: GP14/GP14-git ## Basic Information - **Project Name**: GP14-git - **Description**: No description available - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-09-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 保姆级git使用指南 ## 目标 : 建立本地仓库,实现本地的版本管理 **因为这是驱动git进行操作,所以我们在所有的指令前都要加git** **第一步 : 需要设置全局的用户信息** 1. 用户名 2. 用户邮箱是什么 在window文件夹的 : C:\Users\你的用户名 ```c [user] name = huaaaaizhhhhhiY email = 931673916@qq.com [filter "lfs"] required = true clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process ``` 为什么要设置这个玩意 : 因为如果不设置的话,git会提示你 : place tell who you are ! **git 命令** : ``` $ git config --global user.name "[name]" $ git config --global user.email "[email address]" ``` **以上设置只需要设置一次即可** **第二部 : 建立本地仓库** **git 命令** `git init` 在指令运行结束后,git会给你一个提示 : 我在xxx路径下给你初始化的git的仓库。 **验证仓库是否建立:** `ls -a` 可以查看所有文件夹,包括隐藏文件夹; **第三步 : 本地结构** 1. 工作区 : 你能看得见摸得着可以更改的内容都是工作区的内容; 2. 暂存区 : * 对代码进行短暂的冻结; * 并且留下当前文件的索引; * 表示关注所有加入暂存区文件的更改; **暂存区的一切内容都是为了放入本地仓库做准备的,并不具备存储能力** 3. 本地仓库 `.git` 目标 : 想要讲代码放入本地仓库 : 先将工作区之中所有的代码都放入暂存区, 在暂存区的指引下将代码收录到本地仓库之中。 **一旦代码收录到本地仓库之中,那么本地仓库会立即生成一个唯一的版本** **以指令来看** 1. 添加工作区内容到暂存区 `git add -A` 表示将工作区中所有内容添加到暂存区; 2. 将暂存区控制的内容添加到本地仓库; `git commit -m "注释"` 将暂存区内容添加到本地仓库之中进行版本创建同时存入本地仓库; ## 目标 : 删除内容并还原 1. 当前版本是什么 `git reflog` 会返回给你所有本地项目版本 , 找到你需要的版本; 2. 版本还原 `git reset --hard 版本号` 版本还原 ; 另外一种版本还原语法 : git reset --hard HEAD^ 还原上一个版本 git reset --hard HEAD^^ 还原两个版本 **查看工作区是否和暂存区版本相同** `git status` ## 目标 : 本地仓库推送到远程仓库 1.**在本地仓库建立和远程仓库的联系**(这个联系只需要建立一次,一个仓库一次) `git remote add 简写名称 仓库地址` `git remote add o https://gitee.com/GP14/GP14-git.git` 给当前本地仓库添加一个远程仓库链接, 在提交时方便找到对应路径; `git remote` 指令查看当前简写路径有哪些。 `git remote get-url 简写名称` 查看当前远程仓库名称。 2. 本地仓库推送到远程 `git push -u 远程仓库链接简写 分支名称` `git push -u o master` **会提示 : \[rejecte\]** 按照下面的流程进行pull; 3. 推送之前应更新到最新版本; 如果线上的版本和本地版本不一致则表示 **冲突**。 `git pull 仓库名称简写 master` 拉取最新线上代码即可。 报错 : 不允许合并无关版本; `refusing to merge unrelated histories` * 添加允许即可 `git pull origin master --allow-unrelated-histories` **pull 成功之后重新push即可** 4. 在pull的时候可能存在问题, 会让线上的代码和本地的代码发生冲突,这时候我们需要merge; `git merge` 合并 *** VIM 操作 当你的pull直接进入自动合并的时候,你进入了vim操作 ; 1. 阅读模式; 2. 插入模式; 3. 指令模式; 1. 阅读模式更改到插入模式; 输入法切成英文 : i 最下角会变成 **--插入--** 在此可以移动光标进行编辑; 2. 插入模式更改到指令模式 ; esc 会让左下角的 **--插入--** 消失; 输入指令 `:wq` 回车 保存并退出vim模式 *** ## 分支 分支的意义在于:**每个人都可以独立开发并测试自己的代码!** **当前工作区必须全部提交!** 使用 `git state` 指令查看是否显示 *wrok tree clean* **日常开发操作 :** 1. 创建分支 : 分支名 你的姓名-模块名称(-日期) 如果新进公司不知道当前项目分支命名 请使用 `git branch -a` 查看远程分支。 创建分支指令 : `git branch [分支名]` 2. 切换分支 : 去对应的分支上进行开发。 切换分支指令 : `git checkout [分支名]` git bash 命令行最右边的括号里查看你所在的分支。 3. 合并分支 : 开发结束(测试无误之后),切回master分支, 进行分支合并 ; 在**master**分支上 输入指令 `git merge [分支名]` 4. 删除分支 : 开发测试合并结束结束之后, 将无用分支删除; `git branch --delete [分支名]` *** ## 远端VS本地 目标 : 将远端的仓库,下载到本地。 1. clone 仓库打包下载 在第一拉取线上代码的时候使用clone 2. fetch 远程仓库下载到本地仓库 使用 fetch 进行缓存; 3. pull 远程仓库最新版本下载到本地工作区 使用pull进行最新版本获取并进行迭代开发。