git 使用指北与问题解决
想用一杯Latte把你灌醉
好让你能多爱我一点
1.访问github并汉化
在微软商店安装Watt Toolkit可以直接加速github,然后用qq邮箱或其它邮箱都可以注册一下
搜索框搜索“chinese汉化”认准第一个star7.8k即可,然后安装油猴(Tampermonkey)插件,再安装汉化脚本。还有许多脚本可以安装。
进入文件夹右键打开选项卡,点击用git bash打开
2.安装和配置git
下载地址git-scm.com,镜像下载地址
显示隐藏文件夹:
在VS code中显示隐藏文件夹只需要在设置里找到:Files:Exclude再把**/.git
删除即可显示出来
3.git命令行配置
初始化仓库过程用到的命令:
1 |
|
bash的基本操作
常用快捷键:
1 |
|
3.基础操作流程
专业名词的理解
git status
最常见的命令之一,初学者最好每一个命令就查看一下文件的状态.git status -s
/git status --short
是精简输出
1 |
|
文件的删除(命令行)
1 |
|
删除后需要
git commit
提交,如果只是想从工作目区中删除文件,可以使用操作系统的删除命令(rm)然后再使用 git add .
文件删除(IDE)
4.SSH秘钥的创建
生成秘钥(ed25519算法):
1 |
|
如果一些旧系统不支持ed25519算法的话,可以使用RSA
1 |
|
第一次使用这个命令一直回车即可
在用户文件夹里查看密钥对
添加公钥.pub文件复制粘贴至Github→ Settings → SSH Key,再连接测试一下:
1 |
|
正常会报错:连接测试时出现:ssh: connect to host github.com port 22: Connection timed out
通常是因为网络环境无法通过 22 端口连接到 GitHub 的 SSH 服务。可以通过以下步骤解决,官方文档为通过HTTP端口使用SSH
我们需要改HTTPS端口(443)使用SSH。方法为在生成的.ssh文件夹中添加配置文件
1 |
|
粘贴好后按Ecs再英文状态下的:wq
保存退出,可以检查一下
再次测试时出现:Hi username ! You've successfully authenticated, but GitHub does not provide shell access.
即成功了,我们就可以通过SSH克隆和推送仓库了
5.gitignore的实践
创建.gitignore文件:
1 |
|
常见的.gitignore文件包含:
1 |
|
.gitignore 仅对从未被 Git 跟踪过的文件生效。若文件已被提交过,即使后续加入 .gitignore,仍需手动从 Git 中移除。此外,未跟踪但未忽略的文件仍可能导致分支污染,需定期检查工作目录状态(git status)
更多模版可以参考github上的项目:gitignore
6.版本的回滚
1 |
|
使用git reset --hard
会重置工作目录到指定的提交,所有未提交的修改都会被删除。需要注意备份或暂存(git stash
)这些更改,避免数据丢失。
7.首次推送的命令:
关键是:
-
添加远程仓库的 URL (Add Remote Origin
-
推送本地分支到远程仓库 (Push to Remote):
1 |
|
之后便可以
- 推送后续提交: git push (默认会推送当前分支到其追踪的远程分支)
- 拉取远程更新: git pull (默认会拉取远程追踪分支的更新并合并到当前分支)
8.深入分支
主分支包含了所有最终修改历史,建议不要乱动。因为你的改动会影响到其它在参与这个项目的人,很可能出现合并冲突。
常见分支 | 功能 |
---|---|
develop(开发分支)dev | |
feature(功能分支)feat | |
release(发布分支) | |
hotfix(热修复分支) | |
bugfix(缺陷分支) | |
support(支持分支) |
本地分支
这里可能会出现一个幻觉:我在分支里创建的文件为什么主分支里也有?,不是说都是独立的吗?原因是你未将新建的文件提交(commit)到分支中。此时文件处于“未跟踪”状态(untracked)(即还没有add),切换分支时这些未提交的改动会保留在工作目录中,与分支无关。因为未执行 git add
和 git commit
,所以my.log
未被记录到 Git 版本控制中。切换回 master
分支时,未提交的改动(包括未跟踪文件)会保留在工作目录,因此 my.log
仍然存在。
简单来说:
- 未提交文件:游离于分支外,切换分支时保留。
- 提交后文件:与分支绑定,切换分支时自动隔离。
当我们提交后:
这样主分支里就没有my.log了,就可以安心在分支里操作不用怕误操作主分支啦
小总结:未提交的文件(untracked files)不属于任何分支,它们会“跟随”你的工作目录。只有提交到分支后,文件才会与分支绑定。
接下来是在分支里修改了文件,如果不提交或保存的话是不会让你切换的
它会让你在切换之前进行git commit
或git stash
先暂时保存再git stash pop
恢复
这样就可以在你的本地分支上安心的操作了
在分支间共享某些文件时(如配置文件),应通过 Git 的合并(git merge
)或变基(git rebase
)操作实现,而非手动复制文件。
执行删除操作的时候要格外小心
-d用于删除已合并过的分支,即已经被merge了
-D用于强制删除分支(不管是否合并过)
可以在在命令行中查看分支图git log --graph --oneline --decorate --all
来可视化分支结构不过可能有一点抽象
远程分支
1 |
|
在github上删除分支时的细节:
虽然在github上删除远程分支很简单,但是会导致本地库中缓存的远程分支与实际远程分支不一致。所以还要在git bash中同步远程分支执行:git remote prune <远程仓库名称>
还有一些细节比如,回溯、打标签
1 |
|