优化你的 Git 使用体验
1. 配置 Git 的默认编辑器
在使用 Git 的过程中,我们可以通过配置 core.editor 来覆盖默认编辑器,可针对特定仓库或全局(甚至整个系统)进行设置。 core.editor 配置值是编辑器的名称,通常该编辑器已在系统的 PATH 中,输入其名称即可立即启动。在命令行中, core.editor 的值会被替换,示例如下:
$(core.editor) temp_file
这里的 temp_file 是目标文件,通常是包含提交消息的文件或 Git 配置文件之一。当 Git 需要你编辑某些内容时,它会创建一个包含编辑模板的临时文件,然后调用 core.editor 来编辑该临时文件。
操作步骤 :
- 查看配置文件路径:
- 从 math 或 math.github 目录下,输入以下命令:
cd $HOME/math
git -c core.editor=echo config --local --edit
若一切正常,屏幕将返回配置文件的路径,例如:
c:/Users/Rick/Documents/gitbook/math/.git/config
此命令中, -c 开关使 Git 用命令行提供的值覆盖 core.editor 。对于 git config 命令,配置文件的名称会传递给 core.editor ,由于 core.editor 设置为 echo 命令,所以最终的 git config 命令会打印出文件的名称。
- 查看全局和系统配置文件路径:
git -c core.editor=echo config --global --edit
git -c core.editor=echo config --system --edit
不同系统更改默认编辑器的方法如下:
Windows 用户 :
- 从 此链接 安装 Notepad++。
- 确保可正常启动后,编辑命令行的初始化文件( $HOME 目录下的 .bash_profile 或 .bashrc ),在文件底部添加以下行:
PATH="$PATH:/c/Program Files (x86)/Notepad++"
- 保存文件,退出并重新启动 Git BASH。
- 输入以下命令验证:
which notepad++
预期输出如下:
/c/Program Files (x86)/Notepad++/notepad++
- 使用
-c开关临时设置编辑器:
cd $HOME/math.github
git -c core.editor=notepad++ --local --edit
此时会弹出 Notepad++ 并显示本地仓库的配置。
- 退出编辑器后,输入以下命令使更改永久生效:
git config --local core.editor notepad++
之后在该仓库中需要使用 core.editor 时,将使用 Notepad++ 而非 vi 。若遇到问题,可尝试在 core.editor 设置中使用完整路径。
Mac 和 Unix/Linux 用户 :
- 假设 nano 已在系统路径中,输入以下命令验证:
nano
会弹出 nano 编辑器窗口,窗口底部的行显示了编辑器的操作方法( ^ 代表 Ctrl 键),按 Ctrl-X 可退出。
- 使用 -c 开关临时设置编辑器:
cd $HOME/math.github
git -c core.editor=nano config --local --edit
- 再次按
Ctrl-X退出编辑器。 - 输入以下命令使
nano成为当前仓库的默认编辑器:
git config --local core.editor nano
之后在该仓库中需要使用 core.editor 时,将使用 nano 而非 vi 。
2. 配置要忽略的文件
另一个常见的配置是列出 Git 应忽略的文件列表。这些文件通常是工作目录中生成的文件(如目标文件、脚本输出等),但你不希望将它们存储在仓库中。为此,需要操作 Git 的忽略文件。
core.excludesfile 是一个核心配置设置,它指定了一个包含要从版本控制中排除的文件列表的文件。这对于将源文件编译为目标文件的项目很常见,通常不希望将目标文件存储在版本控制中。
操作步骤 :
- 查看 core.excludesfile 的描述:
git config --help
此帮助页面中的 core.excludesfile 条目显示,该值用作 .gitignore 文件的备用文件, .gitignore 文件位于你的仓库中。
- 获取 core.excludesfile 的配置值:
git config core.excludesfile
此命令可能会显示一个文件名,也可能不返回任何内容。若返回文件名,可使用以下命令显示该文件的内容:
cat 'git config core.excludesfile'
在 Windows 上,使用此单行命令可能会显示如下内容:
#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
*.dll
*.lib
*.sbr
这些行表示 Git 将忽略的文件。你还可以通过以下命令查看 gitignore 帮助页面:
git help gitignore
下面通过具体示例创建 .gitignore 文件:
- 进入 math 目录,创建一个 .obj 扩展名的空文件:
cd $HOME/math
touch file.obj
git status
git status 的输出会显示存在一个名为 file.obj 的新文件。
- 创建 .gitignore 文件并添加忽略规则:
echo "*.obj" > .gitignore
git status
此时 git status 将不再报告 file.obj 文件,但会检测到 .gitignore 文件是新文件。此时应将 .gitignore 文件提交到仓库,以便其他克隆该仓库的人也能忽略相同的文件集。
3. 持续学习 Git
即使你已经掌握了 Git 的基本操作,但随着使用更复杂的仓库或进行更复杂的更改,仍需要不断学习。以下是一些帮助你持续掌握 Git 的技巧:
- 在克隆仓库上工作 :当遇到困惑且不确定要执行什么 Git 操作时,先克隆一份仓库,在克隆的仓库上进行操作,这样可以避免对工作仓库造成损坏。
- 利用帮助文档 :Git 的官方文档是权威的帮助指南。当在互联网上看到使用不确定的 Git 开关或命令的技巧时,先在官方文档中查找。通过查阅 git help 命令,能更好地理解输入的命令,结合在克隆仓库上的操作,可加快学习 Git 的速度。
- 频繁提交 :提交越频繁,在遇到版本控制问题时恢复的信心就越强。文件提交到仓库后,随时都能访问。使用 git rebase 可以在发布更改之前清理这些较小的中间提交。
- 协作交流 :与仓库的其他贡献者协作,了解每个仓库的约定。与共同贡献者互动很关键,他们可能开发了特定于其工作流程的 Git 别名或实践。还可以考虑加入以下 Git 群组与其他 Git 用户协作:
- Git for Human Beings (Google Groups)
- Git Mailing List ,加入详情可查看 此链接
4. 相关命令总结
| 命令 | 描述 |
|---|---|
git config --local --list | 列出本地(特定于仓库)的 Git 配置 |
git config --global --list | 列出全局(特定于用户)的 Git 配置 |
git config --system --list | 列出系统(特定于服务器)的 Git 配置 |
git -c log.date=relative log -n 2 | 使用相对日期格式显示最后两次提交 |
git config --local log.date relative | 将相对日期格式保存到本地 Git 配置中 |
git config --local --edit | 编辑本地(特定于仓库)的 Git 配置 |
git config --global --edit | 编辑全局(特定于用户)的 Git 配置 |
git config --system --edit | 编辑系统(特定于服务器)的 Git 配置 |
git -c core.editor=echo config --local --edit | 打印本地 Git 配置文件的名称 |
git -c core.editor=nano config --local --edit | 使用 nano 编辑本地 Git 配置文件 |
git config core.excludesfile | 打印 core.excludesfile Git 配置设置的值 |
graph LR
A[开始] --> B[配置默认编辑器]
B --> C{系统类型}
C -->|Windows| D[安装 Notepad++]
C -->|Mac/Unix/Linux| E[验证 nano]
D --> F[编辑初始化文件]
E --> G[使用 -c 临时设置]
F --> G
G --> H[使设置永久生效]
B --> I[配置忽略文件]
I --> J[查看 core.excludesfile 描述]
J --> K[获取配置值]
K --> L{是否有输出}
L -->|是| M[显示文件内容]
L -->|否| N[继续操作]
N --> O[创建 .gitignore 文件]
M --> O
O --> P[提交 .gitignore 文件]
H --> Q[持续学习 Git]
P --> Q
Q --> R[结束]
通过以上的配置和学习方法,你可以更好地使用 Git,提高工作效率和版本控制的质量。在实际使用中,不断实践和探索,你将逐渐掌握更多 Git 的高级技巧。
优化你的 Git 使用体验(续)
5. 常见 Git 命令及操作详解
5.1 分支操作
分支是 Git 中非常重要的概念,它允许你在不影响主分支的情况下进行开发和实验。以下是一些常见的分支操作:
- 创建分支 :
git branch new_branch
此命令会创建一个名为 new_branch 的新分支,但不会切换到该分支。若要同时创建并切换到新分支,可使用:
git checkout -b new_branch
- 切换分支 :
git checkout existing_branch
将当前工作分支切换到 existing_branch 。
- 删除分支 :
git branch -d branch_to_delete
若要强制删除未合并的分支,可使用:
git branch -D branch_to_delete
- 查看分支 :
git branch
列出本地所有分支。若要查看远程分支,可使用:
git branch -r
若要查看本地和远程分支,可使用:
git branch -a
5.2 合并操作
合并分支是将一个分支的更改集成到另一个分支的过程。常见的合并方式有快进合并和普通合并。
- 快进合并(Fast-Forward Merge) :当目标分支没有新的提交,且源分支的提交是目标分支的直接后代时,会进行快进合并。操作步骤如下:
- 切换到目标分支:
git checkout target_branch
- 合并源分支:
git merge source_branch
- 普通合并 :当目标分支有新的提交,且源分支的提交不是目标分支的直接后代时,会进行普通合并。操作步骤与快进合并类似,但可能会出现合并冲突。若遇到合并冲突,可通过以下方式解决:
- 直接编辑冲突文件:手动打开冲突文件,解决冲突后,使用以下命令标记冲突已解决:
git add conflicted_file
- 使用合并工具:若冲突较为复杂,可使用合并工具来解决冲突,例如:
git mergetool
5.3 远程操作
与远程仓库进行交互是 Git 的重要功能之一。常见的远程操作包括克隆、推送和拉取。
- 克隆远程仓库 :
git clone remote_repository_url
将远程仓库克隆到本地。
- 推送本地分支到远程仓库 :
git push origin local_branch:remote_branch
将本地的 local_branch 分支推送到远程仓库的 remote_branch 分支。若本地分支和远程分支名称相同,可简化为:
git push origin local_branch
- 从远程仓库拉取更新 :
git pull origin remote_branch
将远程仓库的 remote_branch 分支的更新拉取到本地的当前分支。也可以先使用 git fetch 拉取远程分支的更新,再使用 git merge 进行合并:
git fetch origin remote_branch
git merge FETCH_HEAD
6. 其他实用技巧
6.1 别名设置
为了提高操作效率,可以为常用的 Git 命令设置别名。例如,将 git status 命令设置为 git st :
git config --global alias.st status
之后,使用 git st 即可替代 git status 。
6.2 查看提交历史
使用 git log 命令可以查看提交历史。以下是一些常用的 git log 选项:
- --oneline :以简洁的一行格式显示每个提交。
- --graph :以图形化的方式显示分支和合并历史。
- --decorate :显示分支和标签信息。
例如,使用以下命令可以以简洁的图形化方式显示提交历史:
git log --oneline --graph --decorate
7. 总结与回顾
| 操作类型 | 命令示例 | 描述 |
|---|---|---|
| 分支操作 | git branch new_branch | 创建新分支 |
git checkout -b new_branch | 创建并切换到新分支 | |
git checkout existing_branch | 切换分支 | |
git branch -d branch_to_delete | 删除分支 | |
git branch -D branch_to_delete | 强制删除未合并的分支 | |
git branch | 查看本地分支 | |
git branch -r | 查看远程分支 | |
git branch -a | 查看本地和远程分支 | |
| 合并操作 | git merge source_branch | 合并分支 |
git mergetool | 使用合并工具解决冲突 | |
| 远程操作 | git clone remote_repository_url | 克隆远程仓库 |
git push origin local_branch:remote_branch | 推送本地分支到远程仓库 | |
git pull origin remote_branch | 从远程仓库拉取更新 | |
| 其他技巧 | git config --global alias.st status | 设置别名 |
git log --oneline --graph --decorate | 查看提交历史 |
graph LR
A[开始] --> B[分支操作]
B --> C[创建分支]
B --> D[切换分支]
B --> E[删除分支]
B --> F[查看分支]
A --> G[合并操作]
G --> H[快进合并]
G --> I[普通合并]
I --> J[解决冲突]
A --> K[远程操作]
K --> L[克隆仓库]
K --> M[推送分支]
K --> N[拉取更新]
A --> O[其他技巧]
O --> P[设置别名]
O --> Q[查看提交历史]
C --> R[结束]
D --> R
E --> R
F --> R
H --> R
J --> R
L --> R
M --> R
N --> R
P --> R
Q --> R
通过掌握以上这些 Git 的高级操作和实用技巧,你可以更加高效地使用 Git 进行版本控制和团队协作。在实际项目中不断实践,你将能够更好地应对各种复杂的情况。
超级会员免费看
1872

被折叠的 条评论
为什么被折叠?



