2024-03-04
分类:日常运维
阅读(103) 评论(0)
基本命令
====
初始化仓库
-----
```
git init
```
修改工作区提交到暂存区stage
----------------
```
git add .
```
提交暂存区到仓库(版本库)
-------------
```
git commit -m "msg"
```
### 撤销操作(新旧版本git有差异)
### 旧版本
* 没有`git add`时,用`git checkout -- file`
* 已经`git add`时,先`git reset HEAD <file>`回退到1.,再按1.操作
* 已经`git commit`时,用`git reset`回退版本
### 新版本
* 文件只在工作区操作,未add\*\*。撤销操作:**git restore \** 。结果:**工作区文件回退**。
* **文件已add,未commit** 。撤销操作:**git restore --staged \** 。结果:**暂存区文件回退,工作区文件未回退,如需继续回退,操按情况1操作。**
* **文件已add,已commit** 。撤销操作:**git reset --hard commit_id** 。结果:**工作区文件、暂存区文件、本地仓库都回退**
查看提交操作日志
--------
```
git log
git log --pretty=oneline 简化日志
```
查看文件状态
------
```
git status
```
查看工作区和版本库里面最新版本的区别
------------------
```
git diff HEAD -- readme.txt
```
删除文件(本质是修改文件,同rm删文件后git add)
----------------------------
```
git rm <file>
```
克隆远程库到本地
--------
```
git clone <url>
```
本地已有库关联远程库
----------
```
git remote add origin <url>
```
推送远程库
-----
```
git push <-u> origin master -u参数推送且关联分支,方便后续操作
```
查看远程库信息
-------
```
git remote -v
```
删除远程库的绑定
--------
```
git remote rm <name> name一般为origin
```
创建分支
----
```
git branch <branchName>
```
创建并切换分支(旧)
----------
```
git checkout -b <branchName>
```
创建并切换分支(新)
----------
```
git switch -c <branchName>
```
查看当前分支
------
```
git branch
```
合并指定分支到当前分支
-----------
```
git merge <指定分支名>
```
删除分支
----
```
git branch -d <分支名>
```
合并分支且禁用`Fast forward`模式
-----------------------
本次合并要创建一个新的commit,所以加上`-m`参数,把commit描述写进去。
```
git merge --no-ff -m "merge with no-ff" <指定分支名>
```
![](https://img1.51tbox.com/static/2024-03-04/col/e195fce34cc2606d34f844ca86c0dc7a/31afa38f8b7d4711af2d22d5e829b025.png)
开发分支管理原则
--------
master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活,干活都在dev分支上,dev分支是不稳定的,到比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
Bug分支
-----
当前dev分支工作未完成提交且需处理Bug时,把当前工作现场"储藏"起来,等以后恢复现场后继续工作:此时工作区为clean的
```
git stash
```
查看stash存放的工作现场
```
git stash list
```
要恢复工作现场dev,可用以下指令
```
git stash apply 恢复
git stash drop 删除stash内容
git stash pop 恢复的同时把stash内容也删了
```
多次stash,恢复的时候,先用`git stash list`查看,然后恢复指定的stash
```
git stash apply stash@{0}
```
在master分支上修复的bug,想要合并到当前dev分支,可以用`git cherry-pick <commit>`命令,把bug提交的修改"复制"到当前分支,避免重复劳动。
设立本地分支与远程分支的链接
--------------
```
git branch --set-upstream-to <branch-name> origin/<branch-name>
```
拉取远程库
-----
```
git pull <remote> <branch>
```
优化Git的提交历史(变基)
--------------
```
git rebase
```
rebase操作可以把本地未push的分叉提交历史整理成直线;rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比;
创建标签(标记版本)
----------
```
git tag <name> 例:git tag v1.0
git log --pretty=oneline --abbrev-commit 找到历史版本的commit_id
git tag <name> <commit id>
创建带有说明的标签,用-a指定标签名,-m指定说明文字:
git tag -a v0.1 -m "version 0.1 released" 1094adb
```
查看标签
----
```
git tag
```
查看标签信息
------
```
git show <tagname>
```
删除标签
----
```
git tag -d <name> 本地
从远程删除:先本地后远程:
git push origin :refs/tags/v0.9
```
推送标签到远程
-------
```
git push origin <tagname>
一次性推送全部尚未推送到远程的本地标签:
git push origin --tags
```
标签:
众生皆苦,唯有自渡!