入门级实用 git 指令和配置

本文从功能出发,对 git 常用指令进行了介绍,适合新手快速上手

其中夹杂几个我配置 git 时踩的坑,及解决方案

更多 git 工作流程 相关知识,在 miniob 那篇 blog 里有介绍

这里列几个学习资料:


实用 git

基本指令

git clone <git地址>

  • 克隆仓库

git init

  • 初始化仓库

git add -A

  • 添加文件到暂存区

git commit -m “提交信息”

  • 把暂存区的文件提交到仓库

git commit –amend -m “提交信息”

  • 修正本地的commit信息

git log –stat

  • 查看提交的历史记录reset

分支:

git checkout -b

  • 以当前分支为基础新建分支

git branch

  • 列举所有的分支

git checkout

  • 单纯地切换到某个分支

git branch -D

  • 删掉特定的分支

git merge

  • 把 branchname 合并到当前分支下

git push

  • 推送当前分支最新的提交到远程

git pull

  • 拉取远程分支最新的提交到本地,并与本地代码合并
  • pull = fetch + merge

冲突:

push分支时出现版本跟不上main的情况:

1
2
3
git fetch upstream
git merge upstream/main
git push

修改区间冲突:

1
2
3
4
5
git status
# 然后打开给出的冲突文件,手动修改(vscode 修改很方便,其他的 vim 等文本编辑器也行)
# 删除标记符号和不想要的内容后...
git add <fileName>
git commit -m"合并new_branch分支并解决冲突"

后悔药:

git 仓库

git checkout

  • 工作区回滚

git reset HEAD^1

  • 撤销最后一次提交

工作区代码

  • 未add:
1
git checkout <fileName>  # 原理:从暂存区回复到工作区
  • 已add未commit:
1
2
git log  # 复制最近一次 commit 的 id
git checkout commitid <复制的id> <fileName>
  • 已commit想恢复到之前的某次commit:同上

缓存:

git stash 缓存栈

1
2
3
git stash
# 切换分支工作后...
git stash apply

若想指定某次缓存的状态:

1
2
3
4
git stash
git stash list # 目的找到想恢复的状态:xxx
# 切换分支工作后...
git stash apply stash@{x}

注:
git stash 的本质:保存「工作区 / 暂存区与 HEAD(最近一次提交)的差异」,并将工作区重置为 HEAD 状态
因此 git stash 后,你的工作区代码会恢复到与 commit 的节点相同的状态,也就是说你修改的代码看起来全都没了,并保存在了stash stack中

.gitignore

不想追踪

将不想追踪的文件的路径放在里面,你的 git 就不会记录这个文件的变化

e.g. 用 * 排除 public 目录里除了 theone.txt 以外的全部的文件,则要保证该文件的父目录未排除,即:

1
2
/public/*
!/public/thatone.txt

取消追踪

以上只能忽略没有被追踪过的文件

若不想再追踪已追踪过的文件,可以追加如下操作:

1
git rm --cached <fileName>  # 若对象是目录,加上 -r 选项

检查是否成功排除:

1
git check-ignore -v <fileName>

远程 remote

git remote -v

  • 查看当前版本库对应的远程仓库

git branch -vv

  • 查看当前版分支对应的远程分支

git branch -a

  • 能额外显示远程仓库所带的分支

git push <库名称> <你想push的分支(用空格隔开)>/-all(全部push)

  • 推送到远程仓库
  • e.g. git push origin mybranch

git push <远程库名称> -d <远程分支名称>

  • 删除远程分支(github 模块里有介绍另一种方法)

git checkout -b <新分支> origin/<新分支>

  • git fetch 到新的分支后,想切换到该新分支

解决git连不上github —— 代理解决方案:

  1. 检查系统代理端口,与 v2ray 设置的 http 端口要一致,记录下来

v2ray界面
系统设置界面

我这里是 10809

  1. 设置 git 代理
1
2
3
git config --global --unset http.proxy
git config --global http.proxy http://127.0.0.1:10809
# 10808是设置的代理者监听端口,+1则是http端口

实用 github

设置

  • 设置github默认分支:
    GitHub - 库 - settings - branches - default

  • 删除远程分支:
    在GitHub上作删除操作,并在本地 git 执行 git remote prune <origin或你的远程库名称>

逛社区技巧

  • 发现开源项目:
    掘金这样的社区,
    github自带trending,
    hellogithub这样的用户,
    ranyf/weekly

  • 限定词搜索:
    search:
    in:name xxx
    in:readme xxx
    in:description xxx
    language:xxx
    stars:>10000
    pushed:>2023-09-01

  • 分类搜索:
    awesome xxx ->百科大全
    xxx sample->例子
    xxx starter->项目空架子,
    xxx tutorial->教程