git 常用命令
2022-12-20
git clone
# 普通拉取
git clone xxx.git
# 拉到本地之后自动切到指定分支
git clone xxx.git -b branch1
git remote
# 添加一个远程版本库关联
git remote add
# 删除某个远程版本库关联
git remote rm
git remote add origin xxx.git #先添加到本地仓库
git push -u origin master # 表示把当前仓库的 master 分支和远端仓库的 master 分支关联起来
git branch
git branch # 查看本地所有分支信息
git branch -r # 查看远程仓库所有分支
git branch -a # 查看本地和远程仓库所有分支
git checkout
git checkout -b branch1 # 创建并切换到指定新分支
git add
git add [file1] [file2] # 添加一个或多个文件到暂存区
git add . # 把当前目录下得所有文件改动都添加到暂存区
git add -A #(推荐)把当前仓库内所有文件改动都添加到暂存区大多数情况,我们都应该把所有变更都加到暂存区里,如果没有,那大概率是忘了。
git commit
git commit [file1] ... -m [message] # 将暂存区的内容提交到本地 git 版本仓库中
-m 表示的是当前提交的信息
-a 对于已经被纳入 git 管理的文件(该文件你之前提交过 commit),那么这个命令就相当于帮你执行了上述 git add -A,你就不用再 add 一下了;对于未被 git 管理过的(也就是新增的文件),那么还是需要你先执行一下 git add -A,才能正确被 commit 到本地 git 库。
git commit -m 'feat: do something' # 常用,设置当前提交的信息
git commit -am 'msg' # 简便
git rm
git rm .env # 表示 .env 文件从 git 仓库中删除了,配合 .gitignore 就能保证以后所有的 .env 文件变更都不用担心被提交到远程仓库。
git rm -r dist # 删除的是一个目录
git push
git push --set-upstream origin branch1 # 推送分支并建立关联关系
git pull
git pull origin branch1 # 拉取指定远端分支合并到本地当前分支,这里的 origin 是我们对远端仓库的命名,也可以改
如果有冲突
可以直接使用 git pull 然后指定合并当前本地分支想要建立联系的远程分支,然后本地解决一下冲突,然后提交一下改动,再执行 git push --set-upstream origin branch1 命令就大功告成了。
# 强制覆盖本地
git pull --force <远程主机名> <远程分支名>:<本地分支名>
git pull --force origin main:main
git pull --force # 简写
git fetch
特定时候,可能我们只是想把远端仓库对应分支的变更拉到本地而已,并不想自动合并到我的工作区(你当前正在进行代码变更的工作区),等晚些时候我写完了某部分的代码之后再考虑合并,那么你就可以先使用 git fetch。
fetch 完毕之后,我提交了自己当前工作去的变更到本地仓库,然后想合并一下远端分支的更改,这个时候执行一下 git merge origin/[当前分支名](默认一般是用 origin 表示远端的分支前缀)即可。
git merge
合并指定分支代码到当前分支。一般来说,我们用的比较多的场景可能是,远端仓库 master 分支有变更了,同时这个时候我们准备提 MR 了,那么就需要先合一下 master 的代码,有冲突就解决下冲突,那这个时候我们可以做以下操作:
切到 master 分支,git pull 拉一下最新代码
切回开发分支,执行 git merge master 合并一下 master 代码
同理,上面介绍的 git merge origin/xxx 也是一样的用法。
git reset
git reset [--soft | --mixed | --hard] [HEAD]
关于 HEAD:
HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本
HEAD~n 回撤 n 个版本,这种也是更加方便的
参数解析:
以下解析均基于后接参数为 HEAD^,也就是git reset HEAD^。
--soft: 重置你最新一次提交版本,不会修改你的暂存区和工作区。
--mixed: 默认参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
--hard: 重置所有提交到上一个版本,并且修改你的工作区,会彻底回到上一个提交版本,在代码中看不到当前提交的代码,也就是你的工作区改动也被干掉了。
git revert
当然了,如果是针对 master 的操作,为了安全起见,一般还是建议使用 revert 命令,他也能实现和 reset 一样的效果,只不过区别来说,reset 是向后的,而 revert 是向前的,怎么理解呢?简单来说,把这个过程当做一次时光穿梭,reset 表示你犯了一个错,他会带你回到没有犯错之前,而 revert 会给你一个弥补方案,采用这个方案之后让你得到的结果和没犯错之前一样。
# 查找要回退的 commitId
git log --oneline --graph --all
# 执行回退指令
git revert commitId
# 推送代码到 git 仓库
git push
git tag
# 附注标签
git tag -a v1.0.1 -m "发布正式版 1.0.1"
# 推送标签
git push origin tagName
git tag # 查看标签
git tag -l v1.0.1 # 筛选标签
git tag -d v1.0.1 # 删除标签
git push origin --delete v1.0.2 # 删除远程标签
# 另一种删除远程方式(表示将“:”前面空值替换到远程,也不失为一种方式)
git push origin :refs/tags/v1.0.1
git tag -l | awk '/liulei/{print }' | xargs git tag -d # 批量删除本地tag
git show-ref --tag | awk '/rc_[0-9]{1}[0-9]{0,}$/ {print ":" $2}' | xargs git push origin # 需要注意空格,删除远程tag
git tag -l # 查看本地tag
git show-ref --tag # 查看远程tag
轻量标签更像是一个临时的标签,而附注标签更加正式一点,能够保留更多的信息。
git 分支操作
在本地创建分支推送到远程
1. 建立分支
# 首先,进入master分支:
git checkout master
# 拉取master最新项目到本地master分支:
git pull
# 创建新分支dev,并把当前master分支内容复制一份到新分支dev中:
git checkout -b dev
# 把新建分支推送到远端
git push origin dev
git push --set-upstream origin 新分支名称 # 与远端建立关联并推送;
# 将远程分支与本地分支关联起来
git branch --set-upstream-to=origin/dev
# 验证分支是否创建成功
git pull
git branch -a
在远程创建分支拉取到本地
- 在远程的master分支下新建dev分支
在gitee或者github上登录后自行操作 - 本地拉取新建的远程dev分支
git pull
# 查看(此时会发现远程dev分支,但是本地没有)
git branch -a
# 将当前分支切换成新分支
git checkout 新分支名称
# 查看(此时会自动生成 dev 本地分支)
git branch -a