这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战
介绍
git是版本控制工具,平常开发中的使用还是非常普遍的,命令非常多,但是常用的就那些。
常用命令
本地操作
- 查看代码修改
命令:git status
例:
>git status
On branch dev
Your branch is up to date with 'origin/dev'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: src/main/java/com/wqy/TaskOperation.java
复制代码
查看状态,会在结果中打印出当前分支、修改内容
- 将变更加入暂存区
命令:git add .
“.”的目的是将当前目录下内容全部放入暂存区 例:
>git add .
复制代码
分支操作
- 查看当前分支
命令:git branch -v
例:
>git branch -v
* dev 8b5310f Merge branch 'feature/name' into dev
feature/wwa b7bee2 feat: <E6><8E><A8><E8><8D><90>-<E5><8F><91><E7><8E><B0><E9><A1><B5> - <E6><A0>
feature/name 1b9c1a4 feat: <E6><8E><A8><E8><8D><90><E5><AE><A1><E6><A0><B8>
master 162d523 1.<E8><AE><B2><E8><82><A1><E5><A0><82><E6><95><B0><E6><8D><AE><E5><90>
pdt a133379 feat: <E5><A2><9E><E5><8A><A0>pdt<E5><88><86><E6><94><AF>
复制代码
查看分支结果会打印出所有分支以及上次操作记录
- 切换分支
命令:git checkout [分支名称]
例:
>git checkout feature/name
Switched to branch 'feature/name'
D src/main/java/com/wqy/service/package-info.java
A src/test/java/com/wqy/mapper/NameMapperTest.java
A src/test/java/com/wqy/util/RedisListTest.java
Your branch is up to date with 'origin/feature/name'.
复制代码
切换分支,结果会打印出分支改变内容
- 新建分支
命令:git branch [新分支名称]
例:
>git branch aa
复制代码
新建分支,默认根据当前分支创建新分支
stash操作
- 保存当前代码
命令:git stash
例:
>git stash
Saved working directory and index state WIP on dev: 8b533kk Merge branch 'feature/name' into dev
复制代码
- 查看stash集合
命令:git stash list
例:
>git stash list
stash@{0}: WIP on dev: 8b3330f Merge branch 'feature/name' into dev
stash@{1}: WIP on name: d161368 feat: <E5><8F><91><E7><8E><B0><E9><A1><B5>-<E6>B4><E6><96><B0><E9><95><BF><E7><9F><A2><E5><BC><95>
stash@{2}: On dev: Uncommitted changes before Update at 2021/11/25 10:19
复制代码
列表会打印出全部分支的stash内容
- 恢复stash内容
命令:git stash pop stash@{编号}
恢复stash内容,并删除此stash
例:
>git stash pop stash@{2}
Auto-merging src/main/resources/generator.properties
Removing src/main/java/com/wqy/service/package-info.java
On branch dev
Your branch is up to date with 'origin/dev'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: src/test/java/com/wqy/mapper/QQMapperTest.java
new file: src/test/java/com/wqy/mapper/AMapperTest.java
new file: src/test/java/com/wqy/util/RedisListTest.java
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: src/main/java/com/wqy/service/package-info.java
Dropped stash@{2} (30feafb08ef0efaa58995311417ecfee86de05)
复制代码
恢复操作,会在结果打印出改变内容
日常开发常用组合操作
经常会出现在不同分支上面写业务代码,当需要切换分支工作之前,代码还没写完整,不想提交,就要将代码保存到stash
内,等再次切换回分支时恢复之前代码,不然一不注意就把代码带到切换后的分支上面了。
# 切换前查看分支
>git status
On branch dev
Your branch is up to date with 'origin/dev'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: src/main/java/com/wqy/TaskOperation.java
# 将内容放入本地暂存区
>git add .
# 添加到stash
>git stash
Saved working directory and index state WIP on dev: 8b533kk Merge branch 'feature/name' into dev
# 切换分支
>git checkout feature/name
Switched to branch 'feature/name'
D src/main/java/com/wqy/service/package-info.java
A src/test/java/com/wqy/mapper/NameMapperTest.java
A src/test/java/com/wqy/util/RedisListTest.java
Your branch is up to date with 'origin/feature/name'.
# 切换分支,切换回上个分支
>git checkout dev
Switched to branch 'dev'
D src/main/java/com/wqy/service/package-info.java
A src/test/java/com/wqy/mapper/QQMapperTest.java
A src/test/java/com/wqy/mapper/AMapperTest.java
A src/test/java/com/wqy/util/RedisListTest.java
Your branch is up to date with 'origin/dev'.
# 查看stash集合
>git stash list
stash@{0}: WIP on dev: 8b3330f Merge branch 'feature/name' into dev
stash@{1}: WIP on name: d161368 feat: <E5><8F><91><E7><8E><B0><E9><A1><B5>-<E6>B4><E6><96><B0><E9><95><BF><E7><9F><A2><E5><BC><95>
stash@{2}: On dev: Uncommitted changes before Update at 2021/11/25 10:19
# 恢复stash内容
>git stash pop stash@{2}
复制代码