简介

  • Git常见的语法知识

git bundle 命令 详解

git bundle 命令用于将 Git 仓库的所有对象(commit、tree、blob等)打包成一个二进制文件,这个文件可以在不连接到中央仓库的情况下传递给其他人,并且可以克隆该仓库。这在离线环境或网络较差的情况下非常有用。

以下是 git bundle 命令的基本语法和一些常见用法:

1
2
3
4
5
6
7
8
9
10
11
# 创建一个包含所有分支的 bundle 文件
git bundle create repo.bundle --all

# 创建一个包含指定分支的 bundle 文件
git bundle create repo.bundle branch1 branch2

# 创建一个指定范围的 bundle 文件(从某个 commit 到另一个 commit)
git bundle create repo.bundle <start-commit>..<end-commit>

# 从 bundle 文件中提取对象到本地仓库
git clone repo.bundle new-repo

这里是一些命令的详细解释:

  • git bundle create: 创建一个 bundle 文件。后面的参数是要包含的分支或 commit 的范围。
  • repo.bundle: bundle 文件的名称。你可以自定义文件名。
  • --all: 包含所有分支。
  • branch1 branch2: 包含指定的分支。
  • <start-commit>..<end-commit>: 包含指定范围内的 commit。

一旦你创建了 bundle 文件,你可以将它传递给其他人,他们可以通过克隆该 bundle 文件来获取整个仓库的历史。例如,他们可以使用以下命令:

1
git clone repo.bundle new-repo

需要注意的是,git bundle 不包含远程仓库的引用,因此在使用 bundle 文件进行克隆时,你将得到一个没有远程跟踪分支的本地仓库。如果需要获取远程跟踪分支,可以使用 git fetch 命令。

1
2
cd new-repo
git fetch origin refs/heads/*:refs/remotes/origin/*

这样,你就可以在新的本地仓库中获取与远程仓库相同的分支。

git config 详解

git config 是 Git 版本控制系统中用于配置和管理 Git 仓库的命令。通过 git config 命令,你可以设置和获取 Git 仓库的各种配置选项,包括全局配置和仓库级配置。

git config 命令有三个不同的级别:全局、仓库和本地。这些级别决定了配置选项的作用范围。

以下是 git config 命令的一些常用选项和使用方法:

  1. 获取配置值:使用 git config <key> 命令获取特定配置选项的值。例如,要获取用户的姓名配置,可以使用 git config user.name

  2. 设置配置值:使用 git config <key> <value> 命令设置特定配置选项的值。例如,要设置用户的姓名配置,可以使用 git config user.name "Your Name"

  3. 全局配置:使用 git config --global 命令来设置全局配置选项。全局配置选项将应用于当前用户的所有 Git 仓库。例如,使用 git config --global user.name "Your Name" 来设置全局用户姓名。

  4. 仓库配置:在 Git 仓库的根目录下,使用 git config 命令来设置仓库配置选项。这些配置选项将仅应用于当前仓库。例如,使用 git config user.email "your@example.com" 来设置仓库的用户邮箱。

  5. 本地配置:对于某个特定的 Git 命令,你可以通过在命令后添加 --local 参数,将配置选项设置为本地级别。例如,使用 git config --local core.ignorecase true 来设置当前仓库的忽略文件大小写的配置。

  6. 列出配置:使用 git config --list 命令列出当前仓库的所有配置选项及其对应的值。添加 --global 参数可以列出全局配置选项。

  7. 编辑配置文件:使用 git config --edit 命令打开 Git 配置文件进行手动编辑。对于全局配置,会打开用户主目录下的 .gitconfig 文件,对于仓库配置,会打开仓库目录下的 .git/config 文件。

这些是 git config 命令的一些常见用法和选项。通过适当配置 Git,你可以定制化和优化你的版本控制工作流程。


git config 常用选项

下面是一些常用的 git config 命令选项:

  1. 用户信息
    • user.name:设置用户的姓名。
    • user.email:设置用户的电子邮件地址。
    • 例如:git config --global user.name "Your Name"
  2. 文本编辑器
    • core.editor:设置用于 Git 提交消息的文本编辑器。
    • 例如:git config --global core.editor "vim"
  3. 自动换行
    • core.autocrlf:控制换行符的处理方式。
      • true:在提交时自动将换行符转换为 CRLF,检出时转换为 LF(适用于 Windows 系统)。
      • input:在提交时将换行符转换为 LF,检出时不做转换(适用于 macOS 和 Linux 系统)。
      • false:保持换行符不变。
    • 例如:git config --global core.autocrlf true
  4. 忽略文件
    • core.excludesfile:指定一个全局的忽略文件,用于列出不应受版本控制的文件和目录。
    • 例如:git config --global core.excludesfile ~/.gitignore_global
  5. 分支合并策略
    • merge.tool:设置用于解决合并冲突的工具。
    • 例如:git config --global merge.tool kdiff3
  6. 查看提交历史
    • alias.log:设置自定义的 git log 命令别名。
    • 例如:git config --global alias.log "log --oneline --decorate"
  7. 远程仓库
    • remote.origin.url:设置远程仓库的 URL。
    • branch.<branchname>.remote:设置分支与远程仓库的关联。
    • 例如:git config remote.origin.url "https://github.com/username/repo.git"

这些是一些常用的 git config 命令选项,你可以根据自己的需求进行配置。使用 --global 参数将选项设置为全局级别,省略该参数则为当前仓库级别的配置。

git tag 标签的使用

标签(tag)相关的常用命令

  • git tag 查看标签
  • git tag <tag-name> 创建命名标签
  • git tag -a <tag-name> -m <message> 添加一个注解标签
  • git tag <tag-name> <commit-id> -a -m <message> 给过去提交记录创建标签
  • git push origin <tag-name> 推送标签到远程仓库
  • git push origin --tags 推送全部标签
  • git pull origin --tags 远程拉取标签
  • git tag -d <tag-name> 删除本地标签
  • git push origin :refs/tags/<tag-name> 删除远程标签

git remote

  • git remote:用于管理远程仓库
  • git remote:不带参数时可以查看远程仓库名称
  • git remote -v : 可以查看远程仓库名称和网址
  • git remote add 仓库名 仓库地址 : 添加远程仓库,同时设置远程仓库的名字
  • git remote rm origin : 删除名字为origin的远程仓库

git branch

  • git branch : 可以查看本地仓库的分支情况
  • git branch 分支名 : 创建分支
  • git checkout 分支名 : 切换到指定分支
    • 两个命令可以合成一个命令:git checkout -b 分支名 ,相当于创建分支后切换到新建分支
  • git branch -d 分支名 : 删除某个分支
  • git merge 分支名 : 合并某个分支到现在所处的分支

  • git branch -r : 查看远程仓库的分支情况
  • git branch -a : 查看所有分支的情况,即本地分支和远程分支(上面的部分是本地分支,下面红色的部分是远程的分支)

  • 远程分支的创建不能通过git branch进行,而是在git push的时候默认执行

  • 分支重命名:git branch -m oldname newname

git push

  • git push <远程主机名> <本地分支名> : <远程分支名>
    • 分支的推送顺序写法是:<来源地>:<目的地>
  • 远程分支的删除也不能使用git branch , 同样采用git push
    • git push <远程主机名> --delete <删除的分支名>
    • 或者:git push <远程主机名> : <远程分支名> ,省略了本地分支名相当于推送了一个空的本地分支到远程分支上,就相当于删除了远程分支

git fetch

  • git fetch这个命令用于取回远程仓库上的更新到本地仓库,默认是取回远程仓库上的所有更新,
  • 如果要取回执行分支上的内容,可以使用git fetch <远程仓库> <分支名>。这样取回的分支是不会影响本地仓库中的代码,通常用于查看他人进程,取回远程分支之后,可以在远程分支的基础上创建新的分支,也可以将远程分支和本地分支合并:git merge origin/dev or git rebase origin/dev : 表示将当前分支与远程分支合并