git使用

58 阅读4分钟

基础使用

初始化

git init // 初始化
git status // 查看当前状态
git log // 日志文件
git log --patch // 日志文件详细信息
git config --global user.name "" // 配置用户名
git config --global user.email "" // 配置邮箱
ssh-keygen -t rsa -C ‘你的邮箱’ // 生成公钥
cat ~/.ssh/id_rsa.pub // 查看公钥
  • 文件夹中无被git跟踪的文件时,不会被git 跟踪
touch temp/.gitkeep // 给temp文件夹创建跟踪

提交

git add [file1] [file2] // 添加一个或多个文件到暂存区
git add // 把当前目录下得所有文件改动都添加到暂存区
git add -A // 把当前仓库内所有文件改动都添加到暂存区
git commit -m "提交信息" // 暂存区到本地分支
git reset HEAD readme.md // 撤销上一次关于readme.md的git add
git reset HEAD^ readme.md // 撤销上一次关于readme.md的git commit
git reset --hard commitId // 直接回滚到commitId版本
git push --set-upstream origin branch1 // 推送分支并建立关联关系
git remote add "远程库名" // 添加一个远程版本库关联
git remote rm "库名" // 删除某个远程版本库关联

// 比如我们本地有个初始化好的仓库,同时还有一个创建好的远程空仓库,那么我们就可以执行一下操作让他们关联起来
git remote add origin xxx.git // 先添加到本地仓库
git push -u origin master // 表示把当前仓库的 master 分支和远端仓库的 master 分支关联起来,后面我们执行 push 或者 pull 都可以非常方便的进行操作了。

分支操作

git checkout -b "分支名" // 创建并切换到该分支
git checkout "分支名" // 切换到该分支
git branch -d "分支名" // 删除该分支,未集成时会报错
git branch -D "分支名" // 强制删除该分支

// 解决分支冲突
// 当主分支无新提交 可以进行快进合并时,提交到本地仓库后直接切换到主分支进行合并
git checkout master 
git merge "需合并分支"
git merge --abort // 当发生冲突 git 无法进行工作时,停止合并,git回到可工作状态
// 当主分支也有新提交 无法进行快进合并时,提交到本地仓库后先切换到主分支
git checkout master 
git rebase "需合并分支"
git add .


拉取

git pull // 和远程分支已建立关联
git pull origin branch1 // 未建立关联

git fetch //拉取到本地 但不合并
git merge origin/[当前分支名] // 将本地变更提交到本地仓库后 和远程拉下来的代码进行合并

删除

如果不需要某个文件直接右键删除,那么这个文件的记录还是会被保存到远端仓库,别人还是能看得到你这个信息,所以我们需要先从 git 仓库中删掉这个文件。

git rm .env // 执行完这个命令就表示 .env 文件从 git 仓库中删除了,配合 .gitignore 就能保证以后所有的 .env 文件变更都不用担心被提交到远程仓库。
git rm -r dist // 如果我们要删除的是一个目录,那么加上 -r 参数就好了。
  • Commit Message
-   feat: 新特性

-   fix: 修改问题

-   refactor: 代码重构

-   docs: 文档修改

-   style: 代码格式修改, 注意不是 css 修改

-   test: 测试用例修改

-   chore: 其他修改, 比如构建流程, 依赖管理.

-   scope: commit 影响的范围, 比如: route, component, utils, build...

-   subject: commit 的概述, 建议符合 [50/72 formatting](https://link.juejin.cn?target=https%3A%2F%2Flink.zhihu.com%2F%3Ftarget%3Dhttps%253A%2F%2Fstackoverflow.com%2Fquestions%2F2290016%2Fgit-commit-messages-50-72-formatting "https://link.zhihu.com/?target=https%3A//stackoverflow.com/questions/2290016/git-commit-messages-50-72-formatting")

-   body: commit 具体修改内容, 可以分为多行, 建议符合 [50/72 formatting](https://link.juejin.cn?target=https%3A%2F%2Flink.zhihu.com%2F%3Ftarget%3Dhttps%253A%2F%2Fstackoverflow.com%2Fquestions%2F2290016%2Fgit-commit-messages-50-72-formatting "https://link.zhihu.com/?target=https%3A//stackoverflow.com/questions/2290016/git-commit-messages-50-72-formatting")

-   footer: 一些备注, 通常是 BREAKING CHANGE 或修复的 bug 的链接.

git stash(储存区)

-   `git stash save 'xxx'`: 储存变更
-   `git stash list`: 查看储存区所有提交列表
-   `git stash pop`: 弹出并应用最近的一次储存区的代码提交
-   `git stash drop stash@{n}`: 删除某次储存记录
-   `git stash clear`: 清楚所有 stash 信息

它的数据将被存在你仓库 .git 文件下的 refs/stash 里。

题外话

vim 基础使用

vim "文件名" // 创建该文件 并进入vim模式

// [正常模式]切[插入模式]
- 输入aio 
// [插入模式]切[正常模式]
- 点击esc
// [正常模式]切[底行模式]
-shift + ;」, 其实就是输入「:」
// 退出
-  w //(保存当前文件)
-  wq //(输入「wq」,存盘并退出vim)  
-  q! //(输入q!,不存盘强制退出vim)

vim mkdir touch

mkdir 创建文件夹(目录)

touch 创建文件

vim/vi 打开一个文本编辑器