Skip to content

Git

基础

--local/局部 --global/全局

  • git init
  • git config --local user.name "2732810281@qq.com"
  • git config --local user.password "8863934304"
  • git config --local user.email "2732810281@qq.com"
  • git config --list 配置列表
  • git config user.name 取特定的配置

  • git add .

  • git commit -m 'ts'
  • git push origin/源 master/远程分支
  • git push <local-branch>:<remote-branch>
  • git log 日志

  • git remote add origin_m1 https://gitee.com/zhaojun696/mm1.git 添加
  • git remote set-url origin_m1 https://gitee.com/zhaojun696/mm1.git 更新

  • git remote -v 所有源地址

  • git remote get-url origin 获取指定源地址
  • git remote remove origin
  • git remote rename old new 重命名

lfs

  • git lfs install 安装
  • git lfs track "*.csv" 添加追踪配置 本质是修改.gitattributes
  • git lfs untrack "*.csv" 删除追踪配置 本质是修改.gitattributes
  • git lfs ls-files 查看哪些文件被追踪
  • git lfs migrate import --include=".jpg,.png" 将所有历史库中 .jpg 和 .png 文件迁移到 Git LFS

克隆

  • git clone url https://user需url编码:pass/www.xx.git
  • git clone url . 不新建文件夹克隆

合并

将指定分支的更改合并到当前分支。 git merge和git rebase是两种不同的分支合并策略,它们有一些区别和适用场景。

  • git merge <branch>
  • git pull --rebase origin <remote-branch>

git merge:这是最常用的分支合并策略。它会将指定分支的更改合并到当前分支,并创建一个新的合并提交。合并提交会保留原始分支的提交历史,形成一个合并的分支历史。这种方式适用于保留分支间的独立性和可追溯性,以及多人协作的场景。

git rebase origin def456/branch:这是一种改变提交历史的分支合并策略。它会将当前分支的更改应用到目标分支上,并重新创建一系列新的提交。这样可以使提交历史更加线性,减少合并提交的数量。这种方式适用于个人开发分支或者在私有分支上进行工作的场景。

使用git rebase时需要注意以下几点: git rebase会改变提交历史,因此只应在本地分支上使用,不要在已经推送到远程仓库的分支上使用。

如果在git rebase过程中发生冲突,你需要解决冲突并手动继续git rebase的操作。

由于改变了提交历史,如果其他人也在同一个分支上工作,你需要小心处理合并冲突。

总之,git merge适用于多人协作和保留分支独立性的场景, 而git rebase适用于个人开发分支和保持提交历史线性的场景。

fetch

访问远程仓库,从中获取本地版本库没有的数据。 执行完成后拥有那个远程仓库中所有分支的引用,可以随时合并或查看。本地远程分支列表不会自动更新,fetch命令可以更新,但如果远程仓库有删除的分支,那么在更新时本地远程分支列表并不会将其删除。

  • git fetch <remote> <branch> 从 仓库 抓取特定的 <branch>。不使用 <branch> 来获取所有远程参考
  • git fetch origin --all 获取更新的列表和所有远程分支的内容,远程分支列表不会自动更新

pull

  • git pull 在一个跟踪分支上输入 git pull,Git 能自动地识别去哪个服务器上抓取、合并到哪个分支
  • git pull --rebase 通过变基来更新自己的本地分支,默认merge
  • git pull --rebase <remote> 获取当前分支的远程副本,并将其重定为本地副本。使用 git rebase 代替 merge 来整合分支
  • git pull <remote> 获取当前分支的指定远程副本,并立即将其合并到本地副本中
  • git pull:这个命令实际上是 git fetch 和 git merge 的组合。它会从远程仓库下载最新的提交历史和文件,并自动将这些更新合并到你的当前分支

标签

创建标签

  • git tag v1.0

查看标签

  • git tag

给特定提交创建标签:可以使用git tag命令加上-a选项来给特定提交创建标签,并添加一些说明信息。例如,要给提交abc123创建一个名为v1.0的标签,可以执行以下命令:

  • git tag -a v1.0 -m "Release version 1.0" abc123

推送标签到远程仓库:默认情况下,git push命令不会将标签推送到远程仓库。要将标签推送到远程仓库,可以使用git push命令加上--tags选项。例如:

  • git push origin --tags

删除标签:使用git tag -d命令删除本地标签。例如,要删除名为v1.0的标签,可以执行以下命令:

  • git tag -d v1.0

要删除远程仓库中的标签,可以使用git push命令加上--delete选项。例如,要删除远程仓库中的名为v1.0的标签,可以执行以下命令:

  • git push origin --delete v1.0

分支

git cherry-pick命令用于选择一个或多个提交,并将它们应用到当前分支上。这个命令可以用于将其他分支上的特定提交合并到当前分支,而无需合并整个分支。 以下是使用git cherry-pick命令的基本语法:

  • git cherry-pick abc123 def456

创建分支:使用git branch命令创建一个新的分支。例如,要创建一个名为feature的新分支,可以执行以下命令:

  • git branch feature

切换分支:使用git checkout命令切换到指定的分支。例如,要切换到名为feature的分支,可以执行以下命令:

  • git checkout feature

创建并切换分支

  • git checkout -b feature
  • git branch -a #查看所有分支
  • git branch -r #查看所有远程分支
  • git branch 显示本地分支列表,当前分支用星号 “*” 标识出来
  • git branch -r 显示远程分支(--remotes)
  • git branch -a 显示所有分支(--all)
  • git branch -v 查看每一个分支的最后一次提交
  • git branch -vv 查看所有分支,正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有,需要先fetch
  • git branch develop 基于当前头指针(HEAD)指向的提交,创建一个develop分支
  • git branch bugfix ab1afef 基于提交ab1afef创建bugfix分支
  • git branch -d hotfix 删除分支。该分支必须完全合并到其上游分支中,如果没有使用 --track 或 --set-upstream-to 设置上游,则在合在HEAD中
  • git branch -D hotfix 强制删除hotfix分支,即使hotfix 支没有合并到上游分支
  • git branch -m <oldbranch> <newbranch> 重命名分支
  • git branch -f master HEAD~3 -f 选项让分支指向另一个提交,将master分支强制移动到HEAD的第3级父提交
  • git branch --merged 查看哪些分支已经合并到当前分支
  • git branch --no-merged 查看所有包含未合并工作的分支
  • git branch --no-merged master 尚未合并到master的分支
  • git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>] 设置 <branchname> 的跟踪信息,使 <upstream> 被视为 <branchname> 的上游分支。如果没有指定 <branchname>,则默认为当前分支
  • git branch -u origin/serverfix 设置或修改已有的本地分支serverfix跟踪一个刚刚拉取下来的远程分支
  • git branch [--track[=(direct|inherit)] <branchname> [<start-point>] -t、--track 或 --track=direct 表示使用起点分支本身作为上游;--track=inherit 表示复制起点分支的上游配置
  • git reflog show --date=iso bugfix 指定bugfix分支的历次更改记录,最下面一条的时间即是分支创建时间
  • git branch --contains commit 列出所有包含指定提交对象的分支

推送

-f 强制推送

  • git push <remote> <branch> 推送分支到 <remote>,以及必要的提交和对象。如果远程仓库不存在,则在远程仓库中创建命名分支
  • git push <remote> --all 将所有本地分支推送到指定的远程分支
  • git push origin new_branch 将new_branch分支推送到origin服务器, 并创建new_branch分支,但不会建立跟踪
  • git push --set-upstream remote_name local_branch remote_branch 将本地分支的副本推送至远程服务器,并设置跟踪上游分支
  • git push -u origin master 上条命令简写,将master 支推送到origin服务器,本地分支master跟踪远程分支master
  • git push origin --delete serverfix 删除一个远程分支, 从服务器上删除serverfix分支

修改提交

  • git add .
  • git commit --amend
  • git push

git commit --amend 是一个用于修改最近一次提交的 Git 命令。它允许你在不创建新的提交的情况下修改最近一次的提交。 使用 git commit --amend 命令时,会打开一个文本编辑器,允许你修改提交的消息。你可以编辑提交消息并保存,这将会修改最近一次提交的消息。 此外,git commit --amend 还可以用于添加或修改最近一次提交中的文件。 你可以先添加或修改文件,然后使用 git add 命令将更改添加到暂存区,最后运行 git commit --amend 来修改最近一次提交。 需要注意的是,如果你已经将提交推送到远程仓库 那么修改最近一次提交后,你需要使用 git push --force 命令来强制推送修改后的提交

回退

  • git reset abc123 软回退
  • git reset --hard abc123 硬回退
  • git reset --hard origin/master 用远程分支
  • git revert <commit> 产生一个新提交,新的提交相当于撤销 <commit>这个提交

暂存

  • git add <file>:将指定的文件添加到暂存区。可以使用文件路径、文件名或通配符来指定要添加的文件。例如,git add index.html 将 index.html 文件添加到暂存区。
  • git add . 或 git add --all:将所有修改的文件添加到暂存区。这会将当前目录下的所有文件和子目录中的修改都添加到暂存区。
  • git reset <file>:从暂存区中移除指定文件,但保留在工作目录中的修改。这个命令可以用于撤销 git add 操作。

  • git stash 命令用于将当前工作目录中的修改保存到一个临时区域,以便你可以切换到其他分支或恢复到干净的工作目录状态。下面是 git stash 的常用用法:

  • git stash save [<message>]:将当前工作目录中的修改保存到一个新的存储项(stash)中。可选的 <message> 参数可以用于给存储项添加描述信息。例如,git stash save "WIP: Work in progress" 将修改保存到一个新的存储项,并添加描述信息。
  • git stash list:列出所有存储项。这会显示存储项的索引号、描述信息和保存时的提交哈希值。
  • git stash apply [<stash>]:将指定的存储项应用到当前工作目录,但不会从存储项列表中移除。如果没有指定 <stash> 参数,默认应用最新的存储项。
  • git stash pop [<stash>]:将指定的存储项应用到当前工作目录,并从存储项列表中移除。如果没有指定 <stash> 参数,默认应用最新的存储项。
  • git stash drop [<stash>]:从存储项列表中移除指定的存储项。如果没有指定 <stash> 参数,默认移除最新的存储项。
  • git stash clear:移除所有存储项,清空存储项列表。 使用 git stash 命令可以暂时保存你的修改,然后在需要的时候再恢复它们。这对于在切换分支或处理紧急任务时非常有用。

删除历史提交

  • git filter-branch --tree-filter 'rm -f 文件路径' HEAD
  • git filter-branch --tree-filter 'rm -rf *' -- --all

缓存

  • git rm --cached 路径
  • git rm -r --cached .

命令的作用是将当前 Git 仓库中所有文件和目录从暂存区(Index)中移除,但不会删除它们在工作目录中的实际文件。这个命令通常用于解决 Git 仓库中某些文件不应该被跟踪的问题。 命令会将当前目录下的所有文件和目录从暂存区中移除,但不会删除它们在工作目录中的实际文件。这个命令通常用于解决 Git 仓库中某些文件不应该被跟踪的问题,例如忽略某些文件或目录。

日志

  • git log --author="提交人名字" 提交日志
  • git log --author="提交人名字" --stat 代码统计(增删改数量)
  • git log --author="提交人名字" --since="2023-01-01" --until="2023-03-01" --stat 带时间范围的统计
  • git shortlog -sn --author="提交人名字" 提交次数
  • git shortlog -sn 提交者列表
  • git count-objects -vH 仓库大小