Git 版本控制

218 阅读4分钟

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战

本文是从我毕业开始工作以来,git使用过程中的一些总结, git官方文档git是一个快速管理版本工具,有三个阶段:Working Directory(工作区),Staging Area(暂存区),Repository(Git目录)

Working Directory ------------------Staging Area--------------------.git directory

                                                           git checkout(切换本地分支) 
<-----------------------------------------------------------------------------------
git commit(本地提交)
--------------------------------------------->
                                                                 git push(提交到远程)
                                     ----------------------------------------------->

一、git指令

1、常用指令

  • git fetch 拉取远程最新内容,不合并到本地的工作分支
  • git pull origin <branchName> 拉取远程最新内容,并合并到工作区
  • git commit -m "" 提交代码到暂存区
  • git push 从暂存区推送到远程
  • git branch <branchName> 新建分支
  • git log git日志查看
  • git merge 合并代码
  • git add 本地内容添加到索引中(gitignore中忽略内容除外)
  • git checkout 切换分支

2、解决一些错误pullmergecommit等的指令

1、代码写一半时,急需切换分支,但是当前分支不想commit时:

  • git stash 将当前修改提交到暂存区,需要配合下面这个一起使用
  • git stash pop 将暂存区中的修改pop推回来,跟上面那个常一起使用,用于急需要切换分支,但代码写一半还不想,就可以用这个方法

2、当commit提交错误分支时,还未push

  • git reset HEAD~ HEAD~表示上一次,该命令用于撤销上一次的commit

3、merge之后,发现有太多冲突,自己无法解决时,想撤回此次merge时:

  • git fetch -all: 获取最新代码
  • git reset --hard origin/${branch_name}:强制重置本地版本代码
  • git pull origin ${branch_name}: 更新分支最新代码

3、rebasemerge的区别:

rebase

  1. 重新设置基线,将你的当前分支重新设置开始点(无法查看这之前的历史提交记录);
  2. 会把你当前分支的commit放到公共分支的最后面,叫变基,在这种情况下,如果你在公共分支commit进来东西,别人从这个公共分支拉出去的人都需要在rebase,相当于你rebase东西进来的都是新的commit了。 merge: 会把公共分支和你当前的commit合并在一起,形成一个新的 commit 提交
  • 1-2-3 是master分支状态
  • master checkout出来一个prod分支
  • master提交了4.5,prod提交了6.7
  • 这个时候master分支:1-2-3-4-5,prod:1-2-3-6-7
  • 如果在prod上用rebase master ,prod分支状态就成了1-2-3-4-5-6-7
  • 如果是mergeprod分支为1-2-3-6-7-8(........ |4-5|)
  • 会出来一个8,这个8的提交就是把4-5合进来的提交

4、切换源命令

  1. 切换源命令:git remote set-url origin 新仓库地址
  2. 查看目前源地址:git remote get-url origin

二、git工具包的使用:

先安装 Git,工具包只是一个程序壳,必须依赖一个 Git Core

tortoiseGit是我刚工作时使用的第一个工具包。安装这个工具之后,就可以直接通过可视化按钮来克隆远程仓库、提交合并代码,该工具除了默认命令行,也可定制其它命令,常用的如下:

  1. Git Clone...是获得远程的版本库;
  2. Git Create repository here是将选定的文件夹作为要创建的版本库,会自动创建一个文件夹.git
  3. Git Commit -> "master" 提交代码
  4. Pull Push Revert clean up………… 当然,除了这个工具,现在很多IDE也都有集成git操作面板,如webstorm、微信开发者工具、VScode;没有git功能的也可以通过安装插件来支持,像HBuilder安装easy-git;觉得IDE上的git面板不够直观,还可以另外找插件来拓展功能:像VScode还可安装Git History来拓展。

三、gitignore文件

gitignore文件用于指定git忽略的文件和文件夹。但已跟踪的文件不受影响!

如果git文件已建立跟踪,可以通过git rm --cache -r .git add .清空缓存再重新提交一次

.gitignore的格式要求

  1. 空行:无意义,可作为分隔符
  2. 注释: 以#开头
  3. 目录分隔符: /
  4. 否定模式: !,被先前模式排除的文件 将会重新建立跟踪
  5. 反斜杠: \,以文字开头的模式需加上反斜杠转义
  6. **: **/表示再所有目录中都匹配; /**表示目录下的所有内容; a/**/b表示a目录中所有目录下的b,a/b也能匹配到