注:第一次使用git提交代码前需要先设置用户名和邮箱
1、重置用户名和邮箱
git config --global user.name "username"
git config --global user.email "email"
设置完后可以使用git config --list查看即可
也可以单独查看
如:
查看用户名和邮箱地址:
git config user.name
git config user.email
2、清除缓存在git中的用户名和邮箱
git credential-manager uninstall
3、git init 初始化git本地仓库\
你会发现文件下多了一个.git文件,说明仓库初始成功
4、git clone + 远程地址 克隆代码
5、git status 查看监听的状态 (可选)
6、git add . 全部添加到可操作的状态 (当前状态应该为绿色)
7、git commit -m 'first' 把监听的文件添加到本地仓库
8、git log 查看修改日志 (可选)
9、git remote add origin http http是你的运程仓库地址 需要你在 github 或者 码云上创建
10、git push -u origin master 提交到主分支上
11、git checkout -b 分支的名称 创建并切换到新分支
12、git branch 查看分支
13、git branch -r 查看远程分支
14、git checkout 分支名称 切换分支
15、删除commit提交记录
请注意,如果使用git reset命令删除commit,那么commit之后的所有commit都会被删除,并且在本地仓库中无法恢复。如果您希望保留commit历史记录,建议使用方法一。
无论选择使用git reset还是git revert命令来删除commit都要注意,一旦将更改推送到远程仓库,可能会影响其他人的工作,因此在执行删除commit操作时,最好与团队成员协商并备份代码。
-
方法一: git revert
创建一个新的 commit,撤销了指定 commit 的更改。这种方法不会改变历史记录。
-
方法二: git reset
有两种 reset 模式可以使用:–soft 模式保留已修改的文件,–hard 模式会删除已修改的文件。
-
方法三: git rebase
# 压缩这3次commit,head~3表示从最近1次commit开始,前3个commit git rebase -i head~3
输入i进入编辑模式,并将要删除的commit记录的pick修改为d
pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)
使用ESC退出编辑模式,输入:wq 再回车 保存并退出
成功后
16、git reset --hard commit_id 代码回退
17、合并
git merge 分支名称 要确保你是在master 分支上操作
18、删除
git branch -d 分支名称 删除本地分支
git branch -D 分支名称 强制删除本地分支
git push origin --delete 分支名称 删除远程分支
19、重命名
git branch -m 要改的本地分支名 修改后的分支名(修改本地分支)
git push origin :远程修改前的分支名(删除远程分支)
git push origin 修改后的分支名:修改后的分支名(push 到远程分支)
git branch --set-upstream 修改后的分支名 origin/修改后的分支名(绑定远程分支)
20、代码拉取
git pull origin master
21、强制删除远程分支
git push origin --delete 分支名称
出现这个问题是因为gitee中的文件不在本地代码目录中,可以通过如下命令进行代码合并,之后在提交 代码合并
22、git merge 分支名称 本地合并
23、git push 提交到远程
24、git pull --rebase origin master 同步远程和本地的代码
25、切分支
git checkout -b v2.1.4-prod-fix-0825 origin/v2.1.4-prod-fix-0825
- 这样就可以在创建新分支的同时与远程分支关联了,之后拉取代码和提交代码只需要
git pull和git push了
26、如果使用git checkout -b 分支名 origin/分支名 来切换远程分支失败,并报错
-
首先要确定你在远程仓库是否创建成功dev分支
-
git branch -r -
输入这个命令后查看远程所有的分支,检查你所需要下拉的分支是否已经在远程仓库底下。
-
如果分支已经创立好了,而执行还是同样的错误,那么就需要从git上重新拉取数据然后再创建远程分支到本地
-
git pull -
git checkout -b 分支名 origin/分支名 -
如果你的远程分支仓库并未创建出来,那么你可以选择执行下面这条语句,在远程仓库创建你需要的分支
git push origin 分支名创建完分支后再重复前面第一步操作检查是否创建成功,然后再重复第二步操作,从git上重新拉取数据然后再创建远程分支到本地,即可实现下拉远程新分支。
27、git fetch
- git pull = git fetch + git merge
git fetch 命令:
$ git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地
如果只想取回特定分支的更新,可以指定分支名:
$ git fetch <远程主机名> <分支名> //注意之间有空格
最常见的命令如取回origin 主机的master 分支:
$ git fetch origin master
取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:
$ git log -p FETCH_HEAD
28、解决git每次拉代码都需要输入账号密码的问题
- 在当前项目目录下执行`git config --global credential.helper store`命令(在~/.gitconfig目录下多出一个文件,用来记录你的密码和帐号)
- 再拉一次代码git pull
- 最后一次输入账号和密码,以后再拉取代码就不用输了
29、修改最后一次commit的注释信息
- 1、
git commit --amend - 2、按“i”键,进入编辑模式进行修改
- 3、开始编辑修改
- 4、修改完成后。按ESC键退出编辑模式
- 5、按组合键 Shift + :
- 6、输入wq,回车(保存退出)
- 7、修改完成,继续git pull、git push
30、将修改暂存到本地
- 1、保存数据在堆栈中
git stash save 'message(保存到堆栈中的数据的信息)'
- 2、堆栈中的列表
git stash list
// 返回数据:
// stash@{0}: On master: stash1
// stash@{1}: On master: stash2
- 3、从堆栈中将刚才保存的未提交的数据恢复出来
git stash pop stash@{0}
或
git stash apply stash@{0}
// pop和apply的区别
// git stash pop 将当前stash中的内容弹出,并应用到当前分支对应的工作目录上,该命令将堆栈中最近保存的内容删除。
// git stash apply 将堆栈中的内容应用到当前目录,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
31、git命令合并某一个分支的某个commit到目标分支
如:A分支上有a、b、c三个commit,B分支上有d、e、f三个commit,然后需要将A分支上的b合并到B分支上
- 1、切换到要合并的目标分支上
git checkout B
- 2、选择一个commit版本号,合并进当前分支
git cherry-pick xxxx(对应commit版本号)
// git cherry-pick xxxx xxxxx 选择多个commit进行合并
- 3、推送到目标分支远程仓库
git push
- 高级用法
//增加 -x 参数,表示保留原提交的作者信息进行提交。然后在生成的新提交信息中增加一行记录,表明这个新提交是从之前的那一个提交衍生出来的
git cherry-pick -x <commit_id>
32、git从某一个commit新建分支进行开发
-
- 使用
git log查看历史commit信息
- 使用
-
- 使用命令
git checkout [commitid] -b [new-branch-name]来根据某个commit记录创建新分支
git checkout xxxxxxxxxxxxx -b develop_1.0_new // 最新代码是xxxxxxxxxxxxx这个提交记录
- 使用命令
-
git push origin [new-branch-name]将新分支推送到远程仓库
33、本地项目git地址切换
-
- 检查当前地址:
git remote -v -
- 切换地址:
git remote set-url origin xxx -
- git pull、git push将原git仓库新提交的代码提交到现git仓库
34、git提交规范
参考文章:zhuanlan.zhihu.com/p/685996170
一个规范的Git提交描述格式如下
# Header头
<type>(<scope>): <subject>
# Body体
<body>
# Footer体
<footer>
1.Header头
Header头只有一行,包括3个字段: type(必需), scope(可选), subject(必需)
| 属性 | 描述 |
|---|---|
| type(必填) | commit提交类型 |
| scope(选填) | commint提交影响范围 |
| subject(必填) | commint提交简短描述 |
-
type 提交类型
- type说明提交类型:只允许使用下面属性
| 属性 | 描述 |
|---|---|
| feat | 新功能 |
| fix | 修改bug |
| docs | 文档修改 |
| style | 格式修改 |
| refactor | 重构 |
| perf | 性能提升 |
| test | 测试 |
| build | 构建系统 |
| ci | 对CI配置文件修改 |
| chore | 修改构建流程、或者增加依赖库、工具 |
| revert | 回滚版本 |
-
scope 作用范围
- scope说明提交影响范围:一般是修改的什么模块或者是什么功能,如【xx模块】/【xx功能】
-
subject 提交主题
- subject 说明提交简短描述:一般是5-10各自简单描述做的任务,如【xx模块加入消息队列】
2.Body体
- body说明提交详细描述:对于功能详细的描述,解释为什么加入这段代码,为什么调整优化等,如因分布式锁问题,导致死锁问题,优化调整xxxx
3.Footer脚
Footer脚包括2个字段: Breaking Changes、Closed Issues
| 属性 | 描述 |
|---|---|
| Breaking Changes | 中断性不兼容变动(不常用) |
| Closed Issues | 关闭Issues问题 |
- Breaking Changes
当前版本与之前版本不兼容,如迭代升级对之前版本不能做到兼容,就需要在Breaking Changes后面描述变动理由和迁移方法之类,此属性不常用
- Closed Issues
当前 commit提交针对某个issue问题或者是禅道bug编号等,如Closes # 234
Git描述规范插件: [Commit Message Editor]
-
提交代码时打开插件
-
edit as text
-
edit as form
35、查看版本
查看指定包在npm仓库中的所有可用版本。这对于了解包的版本历史、选择合适的版本进行安装或更新非常有用。
npm view [package-name] versions
36、信息查看
用于查看项目或全局环境中安装的所有包及其依赖关系。这可以帮助开发者了解项目的依赖树,检查是否存在版本冲突或不必要的依赖
npm list
npm list -g // 全局查看
npm list [package-name] // 查看某个包的依赖关系
37、检查漏洞
npm audit用于检查项目中安装的包是否存在已知的安全漏洞。npm audit fix则会尝试自动修复这些安全漏洞,通常是通过更新有问题的包来实现
npm audit
npm audit fix
38、查询某次提交属于哪个分支
git branch --contains commitID --all
38、git查找所有分支中的某个提交信息
-
在所有分支中查找特定的提交信息
git log --all --grep="<commit_message_substring>" 例如: git log --all --grep="接口" -
如果你想要获取包含该搜索词的提交的哈希值
git log --all --grep="<commit_message_substring>" --pretty=format:"%H"
39、终止未完成的合并
git merge --abort
再重新拉代码git pull