「这是我参与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 loggit日志查看git merge合并代码git add本地内容添加到索引中(gitignore中忽略内容除外)git checkout切换分支
2、解决一些错误pull、merge、commit等的指令
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、rebase和merge的区别:
rebase
- 重新设置基线,将你的当前分支重新设置开始点(无法查看这之前的历史提交记录);
- 会把你当前分支的
commit放到公共分支的最后面,叫变基,在这种情况下,如果你在公共分支commit进来东西,别人从这个公共分支拉出去的人都需要在rebase,相当于你rebase东西进来的都是新的commit了。merge: 会把公共分支和你当前的commit合并在一起,形成一个新的commit提交
- 1-2-3 是
master分支状态 - 从
mastercheckout出来一个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 - 如果是
merge,prod分支为1-2-3-6-7-8(........ |4-5|) - 会出来一个8,这个8的提交就是把4-5合进来的提交
4、切换源命令
- 切换源命令:
git remote set-url origin 新仓库地址 - 查看目前源地址:
git remote get-url origin
二、git工具包的使用:
先安装
Git,工具包只是一个程序壳,必须依赖一个Git Core。
tortoiseGit是我刚工作时使用的第一个工具包。安装这个工具之后,就可以直接通过可视化按钮来克隆远程仓库、提交合并代码,该工具除了默认命令行,也可定制其它命令,常用的如下:
Git Clone...是获得远程的版本库;Git Create repository here是将选定的文件夹作为要创建的版本库,会自动创建一个文件夹.git。Git Commit -> "master"提交代码PullPushRevertclean 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的格式要求
- 空行:无意义,可作为分隔符
- 注释: 以
#开头 - 目录分隔符:
/ - 否定模式:
!,被先前模式排除的文件 将会重新建立跟踪 - 反斜杠:
\,以文字开头的模式需加上反斜杠转义 **:**/表示再所有目录中都匹配;/**表示目录下的所有内容;a/**/b表示a目录中所有目录下的b,a/b也能匹配到