git常用指令及相关配置

本文详细介绍了Git的基础配置、常用命令,包括本地仓库管理、分支操作、远程仓库关联,以及多人分支开发中的协作流程,同时涉及代码校验工具husky和lint-staged的配置。

一、Git设置

1.打开 bash 终端(git 专用),检验成功命令(查看版本号):git -v

2.配置:用户名和邮箱,应用在每次提交代码版本时表明自己身份

第一次使用时要设置用户名和邮箱,之后不需要(修改用户名和邮箱也是以下命令)

git config --global user.name 你的用户名

git config --global user.email 你的邮箱

3.查看用户名和邮箱

git config user.name

git config user.email

二、Git常用命令

1.查看提交历史

命令作用备注
git log列出所有历史记录。按PgUpPgDn控制显示,按Q退出历史记录列表第一行的commit ...(HEAD -> master)代表提交到了master分支
git log --pretty=full获取全部基本信息和git log同效
git log --pretty=oneline一行显示,简略信息可简写成git log --oneline
git log --graph带图形的日志
git log --pretty=format:"%h - %an, %ar : %s"定制记录的显示格式Git - 查看提交历史 (git-scm.com)
git log --auther='作者名'查看筛选后提交记录,指定作者名
git reflog查看本地提交历史包括revert

2.本地仓库操作

命令作用
git init初始化当前目录为仓库,初始化后会自动将当前仓库设置为master会生成git的配置文件目录(隐藏)
git add .将文件添加到本地仓库的提交缓存(注意.前有空格)
git add 文件标识暂存指定文件文件标识以终端为起始的相对路径
git commit -m "111"提交并保存,说明不可省略(‘’和“”都可以)如果不使用-m,会调用终端的注释编辑器输入描述信息
git commit --amend重写上一次的提交信息会进入编辑器界面
git status查看文件状态 - 详细信息modified修改但未提交
git status -s查看文件状态 - 简略信息A新添加未提交;M修改。提交了的文件且未改动的不会显示到这个里面

3.远程仓库操作

命令作用
git remote add origin 远程仓库地址将本地仓库关联到远程仓库origin远程仓库,如果是远程仓库必须使用这个选项
git push -u origin master-u:将本地仓库分支与远程仓库分支一起合并,就是将master及其分支也提交上去,这样你就可以在远程仓库上看到你在本地仓库的master中创建了多少分支,不加这个参数只将当前的master与远程的合并,没有分支的历史记录,也不能切换分支一般空远程仓库第一次上传使用使用
git clone 远程仓库地址从0得到一个远程的Git仓库到本地使用,会自动以项目名作为项目最外层文件夹,不需要自新建进入再clone不需要初始化,使用该命令会自动帮我们初始化
git fetch origin 分支名获取远端分支的更新,git fetch获取全部更新,不会自动合并或修改工作目录pull = fetch + merge
git pull origin 分支名抓取,完整写法:git pull origin 远程分支名:本地分支名该写法远程仓库与本地同名分支,完整写法可以任意分支
git push origin 分支名推送,完整写法:git push origin 本地分支名:远程分支名需同名
git pull 或 git push需要本地和远程分支建立链接
git remote -v查看远程仓库地址:fetch代表可以拉取仓库,push代表可以推送。如果没有权限只能拉取的情况下不会显示push。(不加-v只看到仓库名称)
git remote remove 分支名删除本地关联的远程仓库,可以用git remote -v看到关联情况一般使用git remote remove origin取消关联
git branch -vv显示本地分支与远端分支的链接关系未连接:* dev 3459716 a ///已连接:* dev 3459716 [origin/dev] a
git branch --set-upstream-to=origin/dev指定当前本地分支与远程同名分支的链接

4.分支操作

命令作用
git branch 分支名创建分支
git checkout 分支名切换分支
git checkout -b 分支名创建并切换分支
git branch查看当前分支分支前有星号的是当前分支
git branch -r查看远程仓库中的所有分支
git branch -a查看本地和远端的所有分支远程仓库中HEAD指向当前分支
git branch -D 分支名删除本地分支
git push origin --delete 远程分支名删除远程分支这里的远程分支名不需要加origin,输入分支名即可
git merge 分支名合并分支

当test分支开发完成提交至master时

 // 切换至提交合并的分支
 git checkout master
 // 合并test
 git merge test
rebase操作
git rebase 目标分支名将当前分支合并至目标分支有冲突解决后git add,再git rebase --continue
git rebase --abort取消变基操作,恢复所有状态例如有冲突时使用
// 切换至要提交的分支
 git checkout test
// 将test提交至master
 git rebase master

// 切换回master
 git checkout master
// 让指针向前移动
 git merge test

5.tag标签

tag是相较于commit独立的系统,当提交被reset回退时,tag依旧存在,可以使用以下命令恢复至tag提交状态

git reset --hard commitID
命令作用备注
git tag查看所有tag名
git show 标签名查看某标签的详细信息
git tag 标签名给最新的提交创建tag
git tag -a 标签名 -m "注释" commitID创建带有说明的标签本地创建tag
git push origin标签名推送固定版本到远程仓库
git push origin --tags一次性推送本地 tag
git tag -d 标签名删除一个本地标签
git push origin :refs/tags/标签名删除一个远程标签

6.回退、重做

(1)reset

1.工作区:未使用git add命令加入暂存区的文件;

2.暂存区:本次还未提交的新增文件(绿色U)、使用了git add命令后的文件;

3.本地仓库:git commit之后的文件在本地仓库;

4.远程仓库:git push之后文件推送到远程仓库。

命令作用备注
git reset --soft commiID回滚点之后版本提交的文件将变为绿色存入暂存区中常用于取消上一次提交,将更改重新放入暂存区,以便进行修改后再次提交
git reset --hard commiID暂存区、工作区、回滚点之后已提交的文件全部丢弃永久性地丢弃本地的更改,谨慎使用
git reset --mixed commiID暂存区和回滚点之后已提交的文件全部丢弃;工作区中的文件继续保留在工作区git reset的默认选项,常用于取消上一次提交,但保留更改在工作目录中,不放入暂存区【最常用】
git reset --keep commiID回滚点之后已提交的文件全部丢弃;暂存区内容保留;工作区所有文件撤销修改用于保留提交内容但清空未提交的本地更改

(2)revert

git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(A、B、C),突然想要撤销版本B,但又不想影响版本C的提交,就可以用 git revert 命令来反做版本B,生成新的版本D,版本D会保留版本C的内容,但撤销了版本B的内容。

注意:如果B修改了文件x,C也修改了文件x,则此时revert版本B会发生冲突,需要手动修改解决冲突

  • revert后无冲突:git commit -m '...'

  • revert后发生冲突:解决冲突后git add + git commit

命令作用
git revert -n commitID反做某一版本,即撤销该版本做的修改

三、多人分支开发

初始化本地仓库并连接到远程仓库 git initgit remote add origin 远程仓库地址

1.先在网站上新建一个分支test(按照要求的命名规则自定义),新分支会复制分支起点里的内容

2.创建本地的同名分支并切换到你创建的远程分支 git checkout -b test,再抓取已有的代码 git pull origin 分支名,即可进行开发

3.开发完成后使用git add .git commit -m '描述本次提交的内容'提交到暂存区

4.将本地分支推向远端分支——多人单分支

  • 远程仓库test分支没有其他成员修改git push origin test(test:本次需要提交的分支名称,必须是同名的)

  • 如果test分支有人先提交push后会报错,此时需要先pull该分支,可能会进入vim文本编辑器(默认处于命令模式,输入:进入末行模式,输入wq,代表保存并退出。)

    • 若两者修改了同一文件,冲突文件内容会显示两者的文本,手动修改冲突后再add/commit/push

    • 若甲先修改a文件或新建文件并提交,乙修改b文件push时报错,会把甲修改的和新增的更新到本地,之后再次push,远程仓库上就会更新b的修改。

5.推送——多人多分支

  • 多人分别创建不同分支进行开发,先push到远程仓库分支,再采用 pull request 的方式合并分支至master。

  • 在gitee上直接进行pull request(gitlab是merge request)。可自动合并说明没有遇到冲突。不可自动合并说明遇到了冲突,需要先将master分支合并到 当前开发分支test上,解决完冲突后再add/commit/push、将test分支合并到master分支上。

     // 切换至master分支
     git checkout master
     // 拉取master内容
     git pull origin master
     // 切换回test分支
     git checkout test
     // 将master分支合并到test分支上
     git merge master
     // 解决冲突后再`add/commit/push`
     // 提交pull request

  • 若甲乙clone master分别开发——甲合并dev分支至master——乙合并test分支至master,若甲乙修改了同一文件,此时不可自动合并,需要按照以上方法解决冲突

四、本地新项目推送

1.在网站创建一个新的远程仓库,此时会初始化生成README.md文件

2.本地仓库 (init+)add+commit 正常完成提交

3.本地和远程的仓库建立关联git remote add origin 远程仓库地址,并合并本地和远程仓库中的代码git pull --allow-unrelated-histories origin master

4.此时本地的README文件等大概率会冲突,修改完成add+commit后git push origin master即可将本地仓库推送至新的远程仓库。

五、其他配置

代码校验

代码校验,仅安装一次,两种检查方式二选一(一般选第二种

基于 husky 的代码检查工作流:在需要的项目中,cmd终端即可

 // 初始化 husky 工具配置
 pnpm dlx husky-init && pnpm install

(1)对所有的文件进行校验

修改 .husky/pre-commit 文件即可 npm test 修改为 pnpm lint

(2)仅对暂存区的文件进行校验

(好处是只校验自己写的代码,不用管历史区代码)

安装lint-staged

 pnpm i lint-staged -D

配置 package.json

 {
   // ... 省略 ...
   "lint-staged": {
     "*.{js,ts,vue}": [
       "eslint --fix"
     ]
   }
 }
 ​
 {
   "scripts": {
     // ... 省略 ...
     "lint-staged": "lint-staged"
   }
 }

修改 .husky/pre-commit 文件

npm test 修改为 pnpm lint-staged

六、可能遇到的问题

1.push报错HTTP 413 curl 22 The requested URL returned error: 413

HTTP 413 状态码表示 “请求实体过大”(Request Entity Too Large),即文件、媒体、JSON 数据等超过了服务器配置所允许的最大大小,服务器因此拒绝处理请求。

解决思路:减少文件大小分片上传;在服务器端放宽限制;

这篇文章解决方法博主木有试过,供参考:git报错:error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413_git rpc failed 413-CSDN博客

其他

配置ssh

查看密钥:输入密码
cd ~/.ssh
ls
cat ~/.ssh/id_rsa.pub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值