一份工作 6 年前端的 Git 备忘录 🛠(一)

简介: 一份工作 6 年前端的 Git 备忘录 🛠(一)

前言


熟练的使用 git 指令,是一个程序员的基本功,本文记录了我这些年常用的一些 git 操作。


进入新团队需要做的一系列 git 操作


高频使用的指令


1. 注册内网 gitLab 账户
2. 项目管理员拉我进项目
3. 有了权限后,git clone 'url' 项目到本地
4. 自己创建新的项目分支 git branch '分支名'
5. 开始编码吧...
6. git clone 默认是下载了所有分支的代码
7. git branch -a 查看项目所有分支
8. git branch -r 查看项目所有远程分支
9. git checkout '分支名' 切换分支
10. git branch 打印出来所有的分支,以及当前所在分支
11. git log 查看提交记录,退出 英文状态下 Q
12. git reflog 可查看修改记录(包括git reset 的回退记录)
13. git reset --hard {commit id} 回退版本
14. git stash //代码放进暂存区(未被commit的代码)
15. git stash apply 还原
16. git stash drop 清除最近一次的stash记录
17. git stash pop 还原并清除最近一次 stash
18. git stash list 查看暂存列表
19. git stash clear 清空所有 stash 的记录
20. git remote -v 显示所有远程仓库
21. git remote add url 添加一个远程仓库
22. git remote rm name # 删除远程仓库
23. git remote rename old_name new_name # 修改仓库名


git 文件名大小写问题


踩了git的坑!!

在 windows下,一开始提交了一个 login.less文件,后来把它重命名为 Login.less,居然提交不了,git 提示没有改动,后来才知道,原来git默认对文件名的大小写不敏感。

如何解决git文件名大小写问题?

方案1,配置 git

首先可以通过配置git来达到识别文件名大小写的问题。命令如下:

git config core.ignorecase false

缺点是每个仓库都需要修改。

方案2,手动修改

  1. 首先删除存储在git本地仓库的目标文件,以 Login.less 为例:


git rm Login.less 或者
git rm -f Login.less -f 表示强制删除。


  1. 修改文件名
  2. 添加文件到本地仓库 git add .
  3. 提交到本地仓库及远程仓库


git commit -m 'rename file'; 
git push


git merge 冲突后恢复到合并前状态


git merge --abort // 回滚到合并之前
第二种方案:
git stash
git stash clear


修改 git 仓库的提交用户名和邮箱地址


// 查看
git config user.name
git config user.email
// 全局仓库
git config --global user.name "yourName"
git config --glocal uer.email "yourEmail"
// 单个仓库
git config user.name "yourName"
git config user.email "yourEmail"


取消 Git 对某文件的跟踪 (示: development.env.js)


git update-index --assume-unchanged config/development.env.js  可以忽略文件
git checkout .\config\development.env.js
git update-index --no-assume-unchanged .\config\development.env.js 可以取消忽略文件


版本回退


解决方法

1、运行git reflog 命令查看你的历史变更记录,如下:


fdb70fe HEAD@{0}: pull origin newpbft: Fast-forward
40a9a83 HEAD@{1}: checkout: moving from guan to master
b3fa4c3 HEAD@{2}: commit: copy from newpbft, first init
71bf0ec HEAD@{3}: checkout: moving from newpbft to guan
71bf0ec HEAD@{4}: commit: 1. add moveStore() to clean up certStore and blockStore.
1006d67 HEAD@{5}: commit: 1. Add PBFT branch to Puppeth.
fa3fb56 HEAD@{6}: commit: 1. change some errors about packages and vars
5f40fdc HEAD@{7}: checkout: moving from master to newpbft
40a9a83 HEAD@{8}: clone: from https://github.com/yeongchingtarn/geth-pbft.git


2、然后用 git reset --hard HEAD@{n},(n是你要回退到的引用位置)回退;比如上图可运行 git reset --hard 40a9a83


git reset 与 git revert 的区别?
git reset --hard {commitHashId} // 回退到某一个版本
git revert -n {commitHashId} // 回退某一个 commit, 会生成一个新的版本,反转覆盖掉原来的提交代码


注意:关于版本回退记录!!

一个commit对应这一个版本,有一个commit id,40位的16进制数字,通过SHA1计算得到,不同的文件计算出来的SHA1值不同(有很小的几率相同,可忽略),这样每一个提交都有其独特的id。每提交一个新版本,实际上 Git 就会把它们自动串成一条时间线。

在Git中,HEAD 表示当前版本,也就是e620a6ff0940a8dff…,HEAD^ 表示上一个版本,HEAD^^ 表示上上一个版本,往上100个版本可以写成HEAD加连续100个 ^ ,也可以写成:HEAD~100


拉取远程分支


// 拉取远程分支并建立本地分支,但不会自动切换到此本地分支
git fetch origin 远程分支名x:本地分支名x
git checkout -b 本地分支名 origin/远程分支名


分支合并


git merge a 将 a 分支合并到当前分支
注意事项: 
合并分支需要先更新本地分支代码,然后将本地分支1合并到本地分支2,不能直接合并远程分支1到本地分支2


暂存区


当你需要紧急切换到主分支,执行紧急任务的时候,可以使用


git stash // 当前分支代码加入暂存区
git stash list // 查看暂存记录id
git stash apply // 还原
git stash drop 删除最后一条暂存区信息


修改分支名(重命名)


git branch -m oldName newName


删除本地分支和远程分支


1. git branch -d '分支名'
2. git branch -D '分支名' //强制删除
3. git push origin --delete '分支名' // 删除远程分支


新建本地分支及远程分支


  1. git branch '分支名' //本地新建分支
  2. git fetch origin b1:b2 // 从远程拉取分支 b1 的代码到 本地并新建b2分支

查看和修改本地分支和远程分支 关联情况


git remote -v // 查看git对应的远程仓库地址
git remote rm origin // 删除关联对应的远程仓库地址
git remote -v // 查看是否删除成功,如果没有任何返回结果,表示OK
git remote add origin https://github.com/developers-youcong/Metronic_Template.git // 重新关联git远程仓库地址


git cherry-pick (摘樱桃)


使用场景:

  1. 代码 commit 到错误的分支
  2. 转移另一个代码库的提交A

阮一峰的讲解


在当前分支重新复制提交一份改commit 的代码,生成新的 commitHash
-x 配置项
在提交信息的末尾追加一行(cherry picked from commit ...),方便以后查到这个提交是如何产生的。
git cherry-pick {commitHashId}


git rebase 和 git merge


rebase 翻译为变基,他的作用和 merge 很相似,用于把一个分支的修改合并到当前分支上, 不同于 git rebase的是,git merge 在不是 fast-forward(快速合并)的情况下,会产生一条额外的合并记录,类似Merge branch 'xxx' into 'xxx'的一条提交信息。

目录
相关文章
|
4月前
|
存储 前端开发 开发工具
前端开发中的Git版本控制:构建可靠的协作和代码管理
前端开发中的Git版本控制:构建可靠的协作和代码管理
49 0
|
7月前
|
JSON 前端开发 JavaScript
前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(一)
前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(一)
525 0
|
4天前
|
前端开发 持续交付 开发工具
【专栏:工具与技巧篇】版本控制与Git在前端开发中的应用
【4月更文挑战第30天】Git是前端开发中的必备工具,它通过分布式版本控制管理代码历史,支持分支、合并、回滚等操作,促进团队协作和冲突解决。在前端项目中,Git用于代码追踪、代码审查、持续集成与部署,提升效率和质量。优化协作包括制定分支策略、编写清晰提交信息、定期合并清理分支及使用Git钩子和自动化工具。掌握Git能有效提升开发效率和代码质量。
|
4月前
|
前端开发 数据可视化 开发工具
前端git必备技能,如何合并分支以及出现合并冲突后如何解决
前端git必备技能,如何合并分支以及出现合并冲突后如何解决
56 0
|
5月前
|
存储 前端开发 Linux
前端开发中的Git版本控制:构建可靠的协作和代码管理
前端开发中的Git版本控制:构建可靠的协作和代码管理
55 1
|
9月前
|
存储 前端开发 网络安全
前端项目实战拾贰-git@github.com: Permission denied (publickey).
前端项目实战拾贰-git@github.com: Permission denied (publickey).
41 0
|
11月前
|
存储 缓存 前端开发
一份工作 6 年前端的 Git 备忘录 🛠(二)
一份工作 6 年前端的 Git 备忘录 🛠(二)
68 0
|
9月前
|
Web App开发 前端开发 JavaScript
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
98 0
|
9月前
|
前端开发 定位技术
前端学习笔记202305学习笔记第二十三天-地图单线程配置
前端学习笔记202305学习笔记第二十三天-地图单线程配置
66 0
前端学习笔记202305学习笔记第二十三天-地图单线程配置
|
9月前
|
前端开发 API
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
55 0