简介
- Git常见的语法知识
git bundle 命令 详解
git bundle
命令用于将 Git 仓库的所有对象(commit、tree、blob等)打包成一个二进制文件,这个文件可以在不连接到中央仓库的情况下传递给其他人,并且可以克隆该仓库。这在离线环境或网络较差的情况下非常有用。
以下是 git bundle
命令的基本语法和一些常见用法:
1 | # 创建一个包含所有分支的 bundle 文件 |
这里是一些命令的详细解释:
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 | cd new-repo |
这样,你就可以在新的本地仓库中获取与远程仓库相同的分支。
git config 详解
git config
是 Git 版本控制系统中用于配置和管理 Git 仓库的命令。通过 git config
命令,你可以设置和获取 Git 仓库的各种配置选项,包括全局配置和仓库级配置。
git config
命令有三个不同的级别:全局、仓库和本地。这些级别决定了配置选项的作用范围。
以下是 git config
命令的一些常用选项和使用方法:
获取配置值:使用
git config <key>
命令获取特定配置选项的值。例如,要获取用户的姓名配置,可以使用git config user.name
。设置配置值:使用
git config <key> <value>
命令设置特定配置选项的值。例如,要设置用户的姓名配置,可以使用git config user.name "Your Name"
。全局配置:使用
git config --global
命令来设置全局配置选项。全局配置选项将应用于当前用户的所有 Git 仓库。例如,使用git config --global user.name "Your Name"
来设置全局用户姓名。仓库配置:在 Git 仓库的根目录下,使用
git config
命令来设置仓库配置选项。这些配置选项将仅应用于当前仓库。例如,使用git config user.email "your@example.com"
来设置仓库的用户邮箱。本地配置:对于某个特定的 Git 命令,你可以通过在命令后添加
--local
参数,将配置选项设置为本地级别。例如,使用git config --local core.ignorecase true
来设置当前仓库的忽略文件大小写的配置。列出配置:使用
git config --list
命令列出当前仓库的所有配置选项及其对应的值。添加--global
参数可以列出全局配置选项。编辑配置文件:使用
git config --edit
命令打开 Git 配置文件进行手动编辑。对于全局配置,会打开用户主目录下的.gitconfig
文件,对于仓库配置,会打开仓库目录下的.git/config
文件。
这些是 git config
命令的一些常见用法和选项。通过适当配置 Git,你可以定制化和优化你的版本控制工作流程。
git config 常用选项
下面是一些常用的 git config
命令选项:
用户信息:
user.name
:设置用户的姓名。user.email
:设置用户的电子邮件地址。- 例如:
git config --global user.name "Your Name"
文本编辑器:
core.editor
:设置用于 Git 提交消息的文本编辑器。- 例如:
git config --global core.editor "vim"
自动换行:
core.autocrlf
:控制换行符的处理方式。true
:在提交时自动将换行符转换为 CRLF,检出时转换为 LF(适用于 Windows 系统)。input
:在提交时将换行符转换为 LF,检出时不做转换(适用于 macOS 和 Linux 系统)。false
:保持换行符不变。
- 例如:
git config --global core.autocrlf true
忽略文件:
core.excludesfile
:指定一个全局的忽略文件,用于列出不应受版本控制的文件和目录。- 例如:
git config --global core.excludesfile ~/.gitignore_global
分支合并策略:
merge.tool
:设置用于解决合并冲突的工具。- 例如:
git config --global merge.tool kdiff3
查看提交历史:
alias.log
:设置自定义的git log
命令别名。- 例如:
git config --global alias.log "log --oneline --decorate"
远程仓库:
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
orgit rebase origin/dev
: 表示将当前分支与远程分支合并