GIT 
常见指令 
- 只拉取指定分支代码 - git clone --single-branch -b 分支名 仓库链接
- git clone -b <branch-name> --single-branch <repository-url>
 
- 查看所有分支 - git branch -r
 
- 创建并切换分支 - git checkout -b 分支名
 
- 回到指定版本 - git reset --hard 版本号
 
- 从远程仓库获取最新更改 - git fetch origin
 
- 使用某分支强制覆盖 - git fetch origin
- git reset --hard origin/分支名
 
- 合并分支到 master - git checkout master
- git merge 分支名也可- git merge --no-commit 分支名从而部分合并
- git push origin master
 
- 新建分支 - git checkout -b 分支名
- git push origin 分支名
- git push --set-upstream origin 分支名
 
- 删除远程分支 - git fetch -p origin(如果不能删除的话)
- git push origin --delete 分支名
 
- 删除本地分支 - git branch -d 分支名
 
合并多个提交 
Git 的 rebase 和 squash 功能可以合并多个提交,以三个提交为例,步骤如下:
- git rebase -i HEAD~3- 这将打开一个交互式 rebase 窗口,列出最近三个提交
- 按下 i开始编辑,将待合并分支前的 "pick" 更改为 "squash" 或 "s",要保留的分支前的pick不修改
- ESC->- :wq保存并退出,Git 将会合并您标记为- squash的提交
- 会自动打开一个新的编辑器窗口来编辑合并后的提交消息。删除不需要的信息后保存并关闭编辑器
- git push -f origin 分支名强制推送更改到远端
中途可执行
git rebase --abort取消操作
统计数据 
- 查询单人提交某段时间所有记录 - git log --since ==2021-01-01 --until=2021-05-31 --author="weisheng" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "新增: %s , 移除: %s , 总计: %s \n ", add, subs, loc }'
 
- 查询单人提交所有记录 - git log --author="weisheng" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "新增: %s, 移除 %s, 总计: %s\n", add, subs, loc }'
 
保存修改并拉取代码 
步骤如下:
- 保存当前更改,回到最近一次 - commit的状态:- git stash- 或者,为你的 stash 创建一个有意义的名字: - git stash save "你的描述信息"
- 拉取最新代码: - git pull
- 应用之前保存的更改: - git stash apply
如果你创建了多个 stash,你可以通过 git stash list 查看所有的 stash,并通过 git stash apply stash@{n} 应用指定的 stash,其中 n 是你想要应用的 stash 的编号。
注意事项 
- 确保你的工作目录是干净的,通过 git status来检查
- 如果 git stash apply有冲突,需要手动解决冲突使用git add将解决后的文件标记为已解决,然后继续
- 使用 git pull --rebase时,如果遇到冲突,同样需要手动解决冲突,并使用git rebase --continue继续 rebase 过程。
选择哪种方法取决于你的具体情况和个人偏好。在处理较大的更改或多个分支时,git stash 可能是更安全的选择。对于较小的更改,git pull --rebase 可能更方便快捷。
Git项目太大克隆失败 
- 延长超时时间: - git config --global http.postBuffer 524288000
- 只拉取最近一次提交 shell- #拉取最近1次提交的版本 git clone --depth=1 http://xxx.git # 拉取完整当前分支 git fetch --unshallow # 追踪所有远程分支 git remote set-branches origin '*' # 拉取所有远程分支 git fetch -v
本地仓库关联远程 
- git init初始化
- git remote add origin 仓库链接关联仓库
- git fetch origin 分支名(不填分支名会全部拉取)
- git checkout -b 分支名 origin/分支名新建并关联分支
hosts 
140.82.112.3 github.com
199.232.69.194 github.global.ssl.fastly.net
185.199.108.153 assets-cdn.github.com
185.199.109.153 assets-cdn.github.com
185.199.110.153 assets-cdn.github.com
185.199.111.153 assets-cdn.github.com