2、git命令
git命令
目录
[toc]
分支管理命令:branch命令/checkout命令
查看分支
git branch -v #查看本地分支有哪些
git branch -av #查看 本地分支和远程分支有哪些
# *代表当前所处的分支
##图形化查看分支情况
gitk
gitk --all
示例:
hg@LAPTOP-G8TUFE0T MINGW64 ~/Desktop/it/01-SuGit/git_learning (suling)
$ git branch -av
master 7b84beb Add the first command with config
* suling 30c1501 Add test
temp 30c1501 Add test
remotes/zhineng/suling 30c1501 Add test
创建分支
git checkout -b 分支名 #基于当前分支创建新分支
git checkout -b 分支名 commitid #基于某个commit创建一个分支 (后面字符串是其他commit log中的id)
git checkout -b 新分支名 旧分支名 #基于某个分支创建新分支
- 注意:
我们在本地无法直接在clone下来的远程分支上做变更的,只能基于远程分支建本地分支后,才能创建commit
切换分支
$ git checkout 分支名
⚠️注意:在切换分支前必须要保证当前分支下git仓库状态是cleaning的,否则会切换分支失败,报错的;
删除分支
#删除分支命令:
#(1)删除:
`git branch -d branch_name`
#(2)强制删除:
`git branch -D branch_name`
#(3)删除远程主机的分支
#表示删除 origin 主机的 master 分支:#亲测有效
git push origin --delete master
说明:选项
-d
--delete
Delete a branch. The branch must be fully merged in its upstream branch, or in HEAD if no upstream was set with --track or --set-upstream-to.
删除一个分支。 分支必须在它的上游分支中完全合并,或者在HEAD中,如果没有使用-track或-set-upstream-to设置上游。
-D
Shortcut for --delete --force.
--delete --force的快捷方式。
注意:git branch -d branch_name:使用-d 在删除前Git会判断在该分支上开发的功能是否被merge到其它分支。如果没有,不能删除。如果merge到其它分支,但之后又在其上做了开发,使用-d还是不能删除。-D会强制删除;
注意:用-d 报“error:The branch is not fully merged”,是指这个分支不曾合入到其他任何分支。在日常开发中,我们通常赋予有意义的分支名,Git判断本分支没和任何别的分支合并,意味这删除 存在风险。它也提供我们-D的方式,如果确定无风险就用-D 。
注意:删除分支,-d会加一层判断逻辑,看是否合并到拉出的分支,确保删除动作的安全,-D不做这个判断直接删除。
注意:作者回复: 应该是merge到缺省分支,执行 branch -d就不报错了。如果merge到非缺省分支,还是要报错的。
恢复被删除的分支
作者回复:
好问题,可参考:
https://stackoverflow.com/questions/3640764/can-i-recover-a-branch-after-its-deletion-in-git
可以再了解一下 git reflog 这个命令的作用。
重命名分支
- gpt问答
git如何重命名分支?
在Git中,你可以使用以下命令来重命名分支:
git branch -m <old-branch-name> <new-branch-name>
这个命令将会把 <old-branch-name>
分支重命名为 <new-branch-name>
。
例如,如果你想把分支 "feature-1" 重命名为 "feature-new",你可以运行:
git branch -m feature-1 feature-new
请确保你在重命名分支之前已经切换到其他分支,因为无法对当前所在的分支执行重命名操作。
如果你希望在远程仓库中也更新分支名字,你需要执行一些额外的步骤:
-
推送重命名后的本地分支到远程仓库:
git push origin -u feature-new
这将推送重命名后的分支到远程仓库,并将它与远程仓库中的同名分支关联起来。
-
删除远程仓库中的旧分 支:
git push origin --delete feature-1
这将删除远程仓库中的旧分支。
请注意,如果其他人也在使用这个分支,他们需要更新他们的本地仓库,以反映出分支的重命名。他们可以通过执行以下命令拉取最新的分支信息:
git fetch --prune
这会更新他们的本地仓库,同时删除远程仓库中已经不存在的分支。
- 再次gpt提问
<old-branch-name> <new-branch-name>
这2个参数哪个可以省略呢?
在Git中,git branch -m
命令允许省略 <old-branch-name>
或 <new-branch-name>
中的一个,但不可以同时省略。具体取决于你想要的操作:
-
省略
<old-branch-name>
:如果你只提供一个参数,Git 将当前所在的分支视为要重命名的分支。例如:
git branch -m <new-branch-name>
这将当前分支重命名为
<new-branch-name>
。 -
省略
<new-branch-name>
:如果你只提供两个参数,Git 将假定你想要重命名当前所在的分支为指定的
<new-branch-name>
。例如:git branch -m <old-branch-name> <new-branch-name>
这将
<old-branch-name>
分支重命名为<new-branch-name>
。
请注意,无论你省略哪个参数,都需要确保当前分支不是你要重命名的分支,或者在操作之前切换到其他分支。如果当前分支是你要重命名的分支,你需要在执行命令之前切换到其他分支。
推送:push命令
案例:强制推送:--force参数
如果远程主机的版本比本地版本更新,推送时 Git 会报错,要求先在本地做 git pull 合并差异,然后再推送到远程主机.这时,如果你一定要推送,可以添加参数 --force。
这种场景一般出现在,当你进行了版本回退之后,想把回退后的版本重新推送到远程主机上。
如上图,做了一次版本回退之后,这里提示我远程分支更新,需要我做 pull 操作,如果这个时候你想继续推送的话使用如下命令
# 将本地分支 main 强制推送到远程主机 origin 的 main 分支上:
git push --force origin main
标签:tag命令
给本地仓库和远程仓库打tag
测试成功。
要在git命令中打标签(tag),你可以使用git tag
命令。下面是一个简单的示例:
-
首先,确保你已经进入了包含要打标签的仓库的目录。
-
使用以下命令来创建一个标签:
git tag <tag名称>
替换
<tag名称>
为你想要的标签名称。例如,你可以使用git tag v1.0
创建一个名为"v1.0"的标签。 -
如果你想要给标签添加一个说明,可以使用
-a
选项和-m
选项来创建一个带注释的标签,示例如下:git tag -a <tag名称> -m "<标签说明>"
替换
<tag名称>
为标签名称,<标签说明>
为该标签的说明文字。例如,你可以使用git tag -a v1.0 -m "发布版本1.0"
来创建一个名为"v1.0"的标签,并附带说明文字"发布版本1.0"。 -
如果你只是在本地仓库中创建了标签,你还需要将它推送到远程仓库中。使用以下命令将标签推送到远程仓库:
git push origin <tag名称>
替换
<tag名称>
为你想要推送的标签名称。例如,你可以使用git push origin v1.0
将名为"v1.0"的标签推送到远程仓库。
希望以上步骤能够帮助你成功地打标签并推送到git仓库。
查看本地仓库和远程仓库的tag命令
测试成功。
- 要查看本地仓库中的标签,可以使用以下命令:
git tag
这将列出所有本地仓库中的标签。
- 要查看远程仓库中的标签,可以使用以下命令:
git ls-remote --tags origin
这将列出远程仓库中的所有标签。请注意,它会显示远程仓库的标签引用,而不是实际的标签列表。
使用这两个命令,你可以分别查看本地仓库和远程仓库中的标签。
删除本地仓库和远程仓库的tag命令
测试成功。
要删除本地仓库中的标签,可以使用以下命令:
git tag -d <tag名称>
将<tag名称>
替换为你想要删除的标签名称。例如,如果你要删除名为"v1.0"的标签,可以运行以下命令:
git tag -d v1.0
这将从本地仓库中删除该标签。
要删除远程仓库中的标签,可以使用以下命令:
git push --delete origin <tag名称>
将<tag名称>
替换为你想要删除的标签名称。例如,如果你要删除名为"v1.0"的标签,可以运行以下命令:
git push --delete origin v1.0
这将从远程仓库中删除该标签。请注意,这不会删除本地仓库中的标签,如果你想要在本地仓库中删除标签,可以使用git tag -d <tag名称>
命令。
请注意,删除标签是一个不可逆操作,因此请谨慎使用这些命令。在执行删除操作之前,请确保你真正想要删除该标签。
如何重命名本地仓库的tag
测试成功。
**在Git中,本地标签(tag)的命名是不可更改的。但是,你可以通过删除原有的标签,然后创建一个新的标签来达到重命名的效果。**下面是一个简单的步骤:
-
首先,使用以下命令删除原有的标签:
git tag -d <原标签名称>
将
<原标签名称>
替换为你想要重命名的标签名称。 -
然后,使用以下命令创建一个新的标签,名称为新的标签名称:
git tag <新标签名称>
将
<新标签名称>
替换为你想要设置的新标签名称。 -
如果你需要将这个新标签推送到远程仓库,使用以下命令推送:
git push origin <新标签名称>
将
<新标签名称>
替换为你设置的新标签名称。
请记住,在重命名本地仓库的标签时,删除原有标签会导致与该标签相关的提交历史丢失。所以在操作之前,确保已经备份了相关的数据,以免丢失。
如何重命名远程仓库的tag
测试成功。
**在Git中,远程标签(tag)的命名是不可更改的,因为远程标签是基于共享的仓库模型,更改远程标签可能会影响其他开发者。**因此,为了重命名远程仓库的标签,通常需要遵循以下步骤:
-
首先,删除原有的远程标签。使用以下命令将标签从远程仓库中删除:
git push --delete origin <原标签名称>
将
<原标签名称>
替换为你想要重命名的标签名称。 -
接下来,将本地重命名后的标签推送到远程仓库。使用以下命令推送新标签到远程仓库:
git push origin <新标签名称>
将
<新标签名称>
替换为你设置的新标签名称。
请注意,这样的操作可能会影响与远程标签相关的其他开发者,因此在重命名远程标签之前,确保与团队进行充分的沟通,并确保其他开发者知道并理解此更改。
汇总脚本
次脚本自己it测试里用到过的。
##hexo-theme-matery-github-public 公开仓库推送及打tag命令 2023年10月17日更新
"""
cd /d/hexo-theme-matery-github-public
git pull
git add -A
git commit -m "push-hexo-theme-matery"
git push
git tag -a v2-hexo-theme-matery-2023.10.17 -m "v2-hexo-theme-matery-2023.10.17"
git push origin v2-hexo-theme-matery-2023.10.17
"""
##删除和重新打tag
git tag -a v2.0.0-hexo-theme-matery-2023.10.18 -m "功能基本满足博客需求,使用体验极度丝滑"
git push origin v2.0.0-hexo-theme-matery-2023.10.18