Git实用命令集合

一、基础

git clone 克隆远程分支

git clone http://192.168.0.45/spade2/spade.git 拉取远程分支在spade目录

git clone http://192.168.0.45/spade2/spade.git spadeV2 拉取远程分支在spadeV2目录

git pull 从远程仓库下载更新内容

git add . 添加所有文件到暂存区

git commit -m "feat: bug修改" 提交暂存区中的修改到本地仓库

git commit -am "feat: bug修改" 提交代码到本地仓库

约等同于
git add git commit 命令组合添加到暂存区并提交到本地仓库。但该命令不会提交未进入版本管理的的文件。 未进入版本管理的新文件必须通过 git add 命令添加在暂存区才能提交。

git push 约等于推送当前本地分支到远程分支

以上大概能处理到一个简单的拉取、修改、提交本地仓库、推送远程的流程。

二、撤销本地代码修改

1、还未将变更加入到暂存区,即未执行 git add 命令前,可以使用 git checkout 命令来撤销修改,命令如下

git checkout -- <file>

比如:

git checkout -- *.txt

git checkout -- a.txt

也可使用

git checkout . 撤销所有文件修改

2、已将变更加入到暂存区,即已经执行了 git add 命令,可以使用 git reset HEAD 命令先从暂存区中移除文件,命令如下:
git reset HEAD <file>

比如

git reset HEAD rainbow.txt start.txt 从暂存区中移除 rainbow.txt start.txt等文件

git reset HEAD * 从暂存区中移除所有文件

git reset HEAD *.txt 从暂存区中移除所有txt格式文件

后续就可以使用 git checkout 命令撤销修改。

三、分支命令
1、查看分支

git branch 查看本地分支列表

git branch -r 查看远程分支列表

git branch -a 查看本地分支和远程分支

输出 :wq 退出查看模式

2、创建新分支

git checkout -b newB 创建newB分支并切换到该分支

相当于

git branch newB 创建newB分支

git checkout newB 切换到newB分支

3、推送新分支到远程

第一步 git push origin newB 推送本地分支到远程

第二步 git branch -u origin newB 建立本地分支和远程分支关联,也就是跟踪分支

或者

git push -u origin newB 推送本地分支到远程并跟踪分支

4、拉取本地不存在的远程分支

比如远程仓库存在一个分支feature/bugfix1,本地仓库不存在该分支,但需要拉取该分支到本地仓库修改,则可执行
git checkout -b 本地分支名x origin/远程分支名x

5、切换分支

git checkout rng 切换到本地rng分支

如果要切换到某个git提交节点可执行

git checkout commitId commitId为git提交节点ID

6、合并分支

git merge branchName 把branchName分支合并到当前分支,比如当前分支在rng分支,则代表把branchName分支合并到rng分支

如果在合并过程中碰到冲突,想取消合并,则可执行

git merge --abort

如果合并成功,但想撤销合并,则可先切到主分支,然后执行

git revert -m 1 commitId

四、贮藏

贮藏是一个非常实用的操作,比如我们在分支A修改了很多代码文件,然后来一个紧急任务需要去分支B修改,如果没有用贮藏,那么切换到分支B的前提,是在分支A把之前的修改内容提交或者丢弃,但这两种情况可能都不是我们想要的。 我们想要的是保留A分支的修改同时也不用提交到A分支。这时候我们就可以把A分支的修改内容贮藏起来,既可以保留修改也不用提交修改到分支中。

比如现在在A分支执行

git stash 则该命令会把所有的在A分支的修改内容添加到贮藏,同时A分支的修改也被撤销,这时候就可以安全的切换到

B分支。

在B分支处理完工作后,想继续回到A分支处理之前的修改,则可以切换到A分支执行

git stash apply 把贮藏区的修改应用到A分支

这时候贮藏可以丢弃

git stash drop

也行执行

git stash pop 直接应用贮藏并立刻从贮藏栈上丢弃它,相当执行了 git stash apply git stash drop

假如很多分支都贮藏过修改,那么贮藏区中就不止有一份贮藏,执行

git stash list 则可查看有哪些贮藏

复制代码
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log

贮藏是以栈的形式保存的

git stash apply 默认使用最近的贮藏信息,相当于 git stash apply stash@{0}

git stash drop 同理相当于 git stash drop stash@{0}

也可以使用其他贮藏,如 git stash apply stash@{2}

五、回滚、重置、撤销等
1、撤销某次提交

git revert commitId

2、重置分支到某个提交节点

git reset --hard commitId 强制回滚到此次提交

git push --force 或者 git push -f 强制push

强制合并 git reset --hard commitId

混合合并 git reset --mixed commitId

软合并 git reset --soft commitId

以上三种合并方式的区别可参考SourceTree的软合并、混合合并、强合并区别_souttree-CSDN博客s

git reset 默认模式是混合合并

git reset HEAD * 回退到当前版本并把暂存区的中文件退回到工作区中,后续可用 git checkout 命令撤销修改

git reset HEAD~1 回退到前一个版本

git reset HEAD~n 回退到前n个版本

git reset commitId 回退到指定版本

注:HEAD 代表当前当前版本指针,同理于当前版本的commitId

六、标签(tag)

git tag -a v2 -m "tag msg" 创建一个名称为v2的tag,并备注tag信息

简化命令
git tag v2

git tag -a v2 commitId 基于某个提交点创建tag

git push origin v2 推送tag到远程服务器

git push origin --tags 推送本地所有tag到远程服务器

git checkout -b [branchname] [tagname] 基于tag创建分支

七、git相关信息查看
1、查看当前仓库

git remote show origin

git remote -v

2、查看文件状态(哪些文件修改或者暂存了)

git status

git status -s 简单格式输出文件状态

git diff 查看未暂存的文件修改

git diff --staged 查看已暂存的文件修改

3、查看日志

git log -p -2 产看最近两次提交差异

git log --pretty=oneline 查看提交记录

git reflog 查看本地引用日志

相关推荐
程序猿chen10 小时前
《JVM考古现场(十六):太初奇点——从普朗克常量到宇宙弦的编译风暴》
jvm·git·后端·程序人生·金融·java-ee·量子计算
死磕java的孤行者12 小时前
Git 分布式版本控制工具
分布式·git·elasticsearch
java搬砖工-苤-初心不变20 小时前
解决 Git 通过 SSH 克隆仓库时自动转换为 HTTPS 的问题
git·https·ssh
Naomi5211 天前
自定义汇编语言(Custom Assembly Language) 和 Unix & Git
服务器·开发语言·git·unix
@BreCaspian1 天前
Git 从入门到精通(开源协作特别版)
git·开源
谢尔登1 天前
【已解决】Webstorm 每次使用 git pull/push 都要输入令牌/密码登录
ide·git·webstorm
紫阡星影2 天前
TortoiseGit多账号切换配置
git·gitee·tortoisegit
予早2 天前
git kex_exchange_identification 相关问题
git
鸠摩智首席音效师2 天前
如何完整迁移 Git 仓库 ?
git
诚诚程程成2 天前
git配置github
git·github