目 录CONTENT

文章目录

git

FatFish1
2025-04-10 / 0 评论 / 0 点赞 / 40 阅读 / 0 字 / 正在检测是否收录...

git仓库操作

git init

初始化一个新的git仓库,执行git init会在当前目录创建一个名为.git的子目录,git会将元数据存储在其中

git clone <仓库链接>

在当前目录克隆一个已存在的仓库,会创建一个本地仓库的副本,包括其所有的历史记录和分支

git status

显示仓库状态,也可以查看当前处于哪个分支、任何暂存或未暂存的修改以及任何未跟踪的文件

git stash

贮存,切换分支前临时保存还未提交的修改

git提交/推送操作 —— commit | push命令

git add <file>

将文件<file>的修改内容添加到下一次提交,执行git add会将指定文件添加到暂存区,这些文件将包含在下一次提交中

git commit

执行git commit会创建一个新提交,这个提交包括暂存区的修改(git add的修改)以及来自上次提交以来做的任何其他修改

使用git commit -m “commit message” -m选项将为这次提交附带一条描述信息

git push <origin> <main>

将提交推送到远程仓库originmain分支,执行git push后将把本地commit的所有未提交修改推送到远程分支,更新对应的远程分支

  • 使用以下命令指定本地分支、远程分支,安全推送

git push origin local:remote  # 将本地local分支推送到远程remote分支

在这种情况下,远程如果没有remote分支,将自动创建

  • 省略远程分支,将自动将本地分支推送到远程同名

git push origin local  # 将本地local分支推送到远程local分支

在这种情况下,如果远程没有local分支,会产生fatal错误,必须首先创建远程分支并建立连接关系

git push --set-upstream origin local  # 将本地local分支推送到远程local分支(新建)并确立连接关系
  • 省略本地分支名,将自动将本地当前分支推送到远程同名分支

git push origin  # 假如当前本地分支是dev,等同于git push origin dev:dev
  • 当远程分支只有一个,可省略远程分支名推送

git push  # 假如当前本地分支是dev,远程分支只有一个origin,等同于git push origin dev:dev

git拉取操作 —— fetch | pull命令

git fetch <origin> <main>

取回远程仓库originmain分支的所有提交。可以注意“取回”二字的含义:即不合并到当前分支,因此git fetch并没有以下操作:

git fetch origin master:master # fetch是取回,并不存在合并到master,除非本地并没有master分支
  • 执行以下命令可以提前远程代码并且在本地新建临时分支:

git fetch origin master:tmp

此时可以通过git mergetmp合入master

  • 不使用:字符,将自动创建一个FETCH_HEAD临时分支,将变更存储在这里

git fetch origin master

#  >> * branch              master     -> FETCH_HEAD
  • 可以基于远程仓库的tag取回代码

git fetch origin tag2024xxxx  # 拉取远程仓的对应代码
  • 可以拉取远程仓库的所有tag

git fetch --tags  # 拉取远程仓全部tag

git pull <origin> <main>

拉取远程仓库originmain分支的所有提交,并将其更新到执行git pull时的当前分支中,可能会产生冲突

如果不想拉取到当前分支,可以通过“:”指定分支:

git pull origin master:test  # 拉取远程仓master代码到test分支

关键点:指定远程分支,不指定的话默认拉取的是master分支

注意:git pull = git fetch + git merge,即省略了创建临时分支并git merge的场景

git分支操作命令

git branch

  • 使用git branch可以查看分支,用法包括:

git branch     查看本地所有分支
git branch -r  查看远程所有分支
git branch -a  查看本地和远程所有分支
  • 使用git branch还可以新建分支

# 使用-b的作用是新建后直接切换到新分支上
git branch <test>
git branch -b <test>
  • 使用git branch -d删除分支

git branch -d <test>
# 使用-r删除远端分支,但是需要push到远端生效
git branch -d -r <dev_5.7>
git push origin :dev_5.7
# 使用-D强制删除
git branch -D -r test
  • 使用git branch -m重命名分支

git branch -m <oldname> <newname>
git push origin newname:newname  # 重命名后同样需要推送到远端生效
# 使用-M可以强制改名

git checkout

签出分支

git checkout dev
git checkout -f dev  # 使用-f强制切,会抛弃本地修改
git checkout -m dev  # 使用-m融合切,会把本地修改切到新分支
git checkout -b newBranch # 使用-b在一个现有分支的基础上签出一个不存在的分支,可以基于当前分支新建并签出到对应分支
git checkout <-b branch> [tagname]  # 切换到指定tag,可选参数;-b branch在本地创建一个分支承接

git merge

分支合并,首先签出目标分支,使用以下命令:

git merge <new-feature>

向当前分支合并

git rebase

git rebase <branchName>

变基,首先要理解字面意思。

基于master拉出了ver_1分支,进行了a修改,期间master进行了b修改,这时有两种方案回合,1是基于masterver_1进行merge2是首先对ver_1变基到最新版master,即变成ver_1分支基于b修改后的master拉出的,然后再进行pull

使用变基的好处是:获得更清爽的线性的提交记录

rebasemerge的区别:

补链接图https://blog.csdn.net/q95548854/article/details/98033268

从图上可以看出,rebase是将原分支上的修改重新添加到当前分支修改的前方,而merge是将当前分支的修改打包成一个提交,推送到原分支上

git revert <commit1>

撤销提交

git diff <branch1> <branch2>

比较两个分支间的差异。

git diff version_old version_new

默认比较的是本地分支,如果想比较远端分支,可以使用git branch -a先列一下,就可以看到远端分支的格式类似:

remotes/<远程仓库名>/<分支名>,因此使用格式如下:

git diff remotes/public/main remotes/private/main

查看tag —— git tag命令

git tag  # 查看仓库打包tag默认列表
git tag -l [模糊的tagname,例如xxx*]  # 筛选符合条件的tag
git tag -n  # 显示tag列表,并显示描述信息
git ls-remote --tags origin  # 查看远程所有tag
q  # 退出
git tag -a “指定标签名” commitID  # 给指定commit打标签
git tag v2.0  # 对当前分支打v2.0标签
git tag -a v2.0 -m '注释信息'  #-m 后加注释信息, 当使用git show v2.0的时候, 会显示这个注释信息
git show tag名 # 查看tag信息
git tag -d [tagname]  # 删除tagname,该命令结合git tag获取tagname
git push origin --delete <tagname>  # 方式二:远程tag的删除
git clone --branch [tag] [git地址]  # clone指定tag

git 代理配置

# git设置http、https代理
git config --global http.proxy socks5://127.0.0.1:7890
git config --global https.proxy socks5://127.0.0.1:7890
# 查看代理等配置
git config -l
# 取消代理
#取消http代理
git config --global --unset http.proxy
#取消https代理
git config --global --unset https.proxy

git实操案例

检出两个分支差异直接应用到第三个分支上

有时,基于最新版本分支version_now做的修改分支version_now_fix需要应用到version_old分支上,但是又担心version_now的修改被刷进去怎么办呢?

首先基于version_now_fix拉取本地新分支:

git checkout version_now_fix
git checkout -b version_old_fix

这样可以先比较下新分支与version_old之间的差异:

git diff version_old_fix version_old

然后执行变基操作,因为变基是将这个分支的一批提交整体往前或者往后挪,而不是带着他们一起合并

git rebase --onto version_old version_now version_now_fix

rebase --onto操作将检出version_now_fix分支,并且对比与version_now的差异,同时rebase到version_old上,让version_now_fix看起来像是基于version_old创建的

0

评论区