基础初始化 & 绑定远程

如未配置SSH,前往配置SSH-Key

1
2
3
4
5
6
7
8
9
# 通过ssh克隆远程仓库,自动初始化本地仓库并绑定远程仓库
git clone git@github.com:用户名/仓库名.git

git init # 初始化本地git仓库
git remote -v # 查看已绑定远程仓库
git remote add origin https://github.com/用户名/仓库名.git # 通过https绑定远程GitHub仓库
git remote set-url origin git@github.com:用户名/仓库名.git # 通过ssh绑定远程GitHub仓库
git remote set-url origin 新地址 # 修改远程仓库地址
git remote remove origin # 删除远程绑定

拉取同步远端代码

1
2
3
4
5
git pull                    # 拉取远程最新代码并合并,相当于 fetch + merge

git fetch # 只拉取远端记录,不自动合并(更安全)
git checkout origin/main # 查看远端 main 的最新版本
git merge origin/main # 确认没问题后,再手动合并

查看状态

1
git status                  # 查看当前仓库状态

查看:

  • 哪些文件改了
  • 哪些文件还没暂存
  • 哪些文件准备提交
  • 当前在哪个分支
  • 要不要 push /pull

3种最常见状态:

  1. 干净状态(最好):
1
nothing to commit, working tree clean
  1. 文件被修改,但还没 add:
1
2
Untracked files:
a.txt
  1. 文件被 add 了,但还没提交:
1
Changes to be committed:

日常提交三部曲

1
2
3
4
5
git add .                   # 暂存所有修改
git commit -m "提交说明" # 本地生成节点
git push -u origin 分支名 # 首次推送并绑定远程分支
git push origin 分支名 # 非首次推送,无需绑定远程分支
git push # 推送当前分支到远程(已绑定)

节点和分支全套操作(重点)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
git log                  # 查看所有提交历史
git log --oneline # 查看所有提交历史,每条提交显示一行
git log --oneline --graph # 查看所有提交历史,每条提交显示一行,显示分支图
git log --oneline --all # 查看所有所有提交历史,每条提交显示一行,显示分支图

git branch # 查看所有本地分支
git branch -a # 查看所有分支(包括远程分支)
git branch 分支名 # 新建本地分支
git checkout 分支名 # 切换分支
git checkout -b 分支名 # 新建+立刻切换到该分支

git branch -m 新名称 # 修改当前分支名
git branch -m 旧名 新名 # 修改指定分支名

git branch -d 分支名 # 安全删除本地分支(必须已合并)
git branch -D 分支名 # 强制删除本地分支(未合并也能删)
# (不能删除当前所在分支)

git merge 分支名 # 合并整条分支到当前分支
git cherry-pick 节点ID # 只合并某一个指定提交节点

git push origin --delete 分支名 # 删除GitHub远程分支

冲突处理

1
2
3
git add .                         # 解决冲突后标记文件
git cherry-pick --continue # 解决cherry-pick冲突后继续
git merge --abort # 放弃本次合并,回退原样

版本回退 & 游离节点操作

1
2
3
git checkout 节点ID         # 切换到任意历史旧节点(HEAD游离)
git checkout -b 新分支名 # 在当前旧节点新建分支(安全回退)
git restore . # 丢弃本地所有未暂存修改