Git 实用操作总结
GIT的配置
安装git
点击这里下载个 Git
,安装到你的机器上。
或者使用你喜欢的包管理器安装。如: Homebrew 或 pacman 什么的来安装都可。
设置 name 和 email
安装完成后,需要在命令行中设置自己的 name
和 email
:
|
|
将远程和本地仓库绑定
git init
通过 git init
命令把目录变成 Git
管理仓库:
|
|
地址绑定
后使用以下命令绑定地址:
SSH:
git remote add origin [email protected]:wwxiaoqi/go-wing.git
HTTPS:
git remote add origin https://github.com/wwxiaoqi/go-wing.git
修改默认分支
并将默认分支修改为 main
:
|
|
Git 基本的工作模型
git clone
将仓库 clone
到本地(使用命令: git clone
)
|
|
代码提交
把写完的代码提交(先用 git add 文件名
把文件添加到暂存区,再用 git commit
提交)
|
|
git status
git status
来随时查看工作目录的状态。文件有以下四种状态:
changed / unstaged
(已修改)staged
(已修改并暂存)commited
(已提交)untracked
(未跟踪)
git push
本地提交 push 到中央仓库
|
|
Git 的引用
HEAD 和 branch
HEAD
是当前commit
的引用,每个仓库中只有一个HEAD
。每次提交自动向前移动commit
。branch
是一类引用。HEAD
除了直接指向commit
,还可以通过指向某个branch
来间接指向commit
。当HEAD
指向一个branch
时,commit
发生时,HEAD
会带着它所指向的branch
一起移动。
branch
branch
创建、切换、删除:
|
|
Git Merge 合并
merge 的含义
从两个 commit
分叉的位置开始,把目标 commit
的内容应用到当前 commit
,并生成一个新的 commit
。
merge 适用场景
- 单独开发的
branch
用完了以后,合并回原先的branch
git pull
的内部自动操作。
merge 的三种特殊情况
- 冲突
原因:当前分支和目标分支修改了同一部分内容,
Git
无法确定应该怎样合并。 应对方法:解决冲突后手动commit
。 HEAD
领先于目标commit
:Git
什么也不做。HEAD
落后于目标commit
:fast-forward
。
Git 历史记录
|
|
Git 修复
用 commit --amend
修复当前提交的错误:
|
|
Git 下载速度优化
代理
- HTTP 仓库
对于
HTTP
仓库地址,可以在终端里输入以下两行命令,为Git
设置全局的HTTP
代理,从而提高git clone/pull
的速度。
|
|
执行完后 ~/.git/config
会变成这样:
|
|
以后再 pull
代码就会走代理。
- SSH 仓库
对于这种仓库,可以在
~/.ssh/config
设置代理,提高git pull/push
的速度。
|
|
修改 HOSTS
从 http://github.global.ssl.fastly.net.ipaddress.com/ 获取到速度比较快的 ip
,通过替换 hosts
,达到加速的目的,例如 fliu2476/gh-hosts 这个项目,就是这个实现原理。
|
|
Git 其他问题
SSH HOST 连接失败
ssh:connect to host github.com port 22: Connection timed out
对于这种情况的解决方法是指定 443
端口,可以在 ~/.ssh/config
添加以下内容:
|
|
其中 Port 443
是指定 443
端口。