步骤一:创建 GitHub 仓库

  1. 登录 GitHub
  2. 点击右上角的 “➕” → “New repository”
  3. 填写仓库名称(Repository name),选择 Public 或 Private
  4. 选择自己代码语言的.gitignore
  5. 点击 Create repository

步骤二:在本地初始化 Git 仓库

假设你已经在本地有一个项目文件夹,操作如下:

1
2
cd /path/to/your/project
git init # 初始化本地仓库(这一步会生成.git文件)

设置全局 Git 用户信息

在提交代码前(只需设置一次):

1
2
git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub绑定邮箱"

后续删除Git用户信息:

1
2
git config --global --unset user.name
git config --global --unset user.email

你可以用以下命令查看当前有效的设置:

1
git config --list --show-origin

它会显示设置来源:

1
2
file:/home/你的用户/.gitconfig       user.name=xxx                 #全局设置
file:.git/config user.email=xxx@example.com #当前项目设置

添加 .gitignore文件和项目文件到暂存区 (add = stage all changes in VsCode)

  1. 在项目根目录创建 .gitignore 文件,不同语言的模板
  2. 写入你要忽略的规则
  3. 然后执行:
1
2
git add 文件路径  # 添加某个文件
git add . # 添加当前目录下项目文件(Git会自动忽略.gitignore中的条目)(只添加修改了的文件)

提交并推送

1
2
3
4
git commit -m "Initial commit"   # 提交代码,用于记录修改历史,此时已经保存到本地的master
git branch -M main # 可选,将当前分支(master或其他)强制重命名为 main(在github上面新建repo的时候默认分支是main)
git remote add origin https://github.com/你的用户名/你的仓库名.git
git push -u origin main #把本地 main 分支推送到远程仓库的 main 分支

[!CAUTION]

使用 用户名+密码 的方式访问 GitHub已经不再允许。也就是:

1
2
git remote add origin https://github.com/你的用户名/你的仓库名.git
git push -u origin main #把本地 main 分支推送到远程仓库的 main 分支

不可使用。

替代方案:改用 SSH 方式访问仓库(更方便安全)

  1. 生成 SSH key(如果你没有的话):

    1
    ssh-keygen -t ed25519 -C "your_email@example.com"
  2. 把生成的公钥 ~/.ssh/id_ed25519.pub 添加到 GitHub:

    • GitHub → Settings → SSH and GPG keys → New SSH Key
  3. 然后用 SSH 地址 clone 或切换 remote:

    1
    2
    git remote add origin git@github.com:JenniferWuu/sparsh.git
    git push -u origin main #把本地 main 分支推送到远程仓库的 main 分支

后续更新

1
2
3
git add .
git commit -m "你的更新说明"
git push

分支相关操作命令

目的 命令
创建新分支 git branch new-branch
切换到某分支 git checkout branch-name
创建并切换 git checkout -b new-branch
删除本地分支 git branch -d branch-name
强制删除(不合并也删) git branch -D branch-name
重命名当前分支 git branch -m new-name

对比:“本地分支” vs “远程分支”

名称 举例 存在哪里 描述
本地分支 main 你电脑上 你写代码时所在的分支
远程分支 origin/main GitHub 等远程仓库 从远程同步下来的版本(只读)
本地追踪分支 main → origin/main 你电脑上 本地分支与远程分支关联后,push/pull 会自动同步

https://code.visualstudio.com/docs/sourcecontrol/github

其他

Git 连接不上 GitHub时

~/.ssh/config 中完成GitHub 的配置和密钥指定,example:

1
2
3
4
5
6
7
8
# GitHub 配置
Host github.com # 平时 git@github.com 就会套用这段配置。
HostName ssh.github.com # 实际连接的目标主机地址。这里不是github.com,而是专门的SSH域名 ssh.github.com
User git # GitHub SSH 用户固定写 git
Port 443 # 走443端口,默认 SSH 用的是22端口,但有些公司网络或防火墙会屏蔽22
IdentityFile ~/.ssh/id_ed25519 # 指定私钥路径。建议用 ed25519,文件一般叫 id_ed25519。如果用的是 rsa,则改成 ~/.ssh/id_rsa
IdentitiesOnly yes # 确保只使用这个 key

📌 简单说:这段配置让 Git 在执行

1
ssh git@github.com

时,实际连接的是 ssh.github.com:443,而不是默认的 github.com:22

保存后执行:

1
ssh -T git@github.com

如果成功,会输出:

1
Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.

克隆远程仓库

1
git clone https://github.com/rpl-cmu/normalflow.git # 将远程仓库克隆到本地

查看当前工作区状态

1
git status # 显示当前文件的修改、暂存和未跟踪状态

查看文件改动内容

1
git diff # 显示工作区与暂存区之间的差异,也可用于比较其他对象之间的差异

添加文件到暂存区并提交

1
git commit -a -m "message"   # 自动将所有已跟踪文件的修改添加到暂存区并提交

分支管理

查看分支列表

1
git branch # 列出所有本地分支,并标记当前所在分支

创建并切换到新分支

1
git checkout -b 新分支名称

切换分支

1
git checkout 分支名称

合并分支:

1
git merge 要合并的分支 # 先切换到目标分支(例如 master),然后合并其他分支

4.5 删除本地分支

1
2
git branch -d 分支名称 # 仅当分支已被合并
git branch -D 分支名称 # 强制删除未合并的分支

4.6 从旧分支创建新分支

1
git checkout -b 新分支名称 旧分支名称

远程操作

查看远程仓库

1
git remote -v

添加远程仓库

1
git remote add origin 仓库地址

推送本地分支到远程

1
git push -u origin 分支名称 # -u参数会将本地分支与远程分支关联起来,后续可以直接使用git push

拉取远程更新

1
2
git pull # 拉取并合并远程仓库的更新
git fetch # 获取远程分支更新(不合井)

删除远程分支

1
git push origin --delete 分支名称

版本历史和日志

查看提交日志

1
2
3
git log
git log --oneline # 以简洁格式显示提交记录
git log --graph --oneline --all # 图形化展示分支结构(分支图谱)

查看某个文件的提交历史

1
git log --<文件名>

其他常用操作

回退到上一次提交

1
2
3
git reset HEAD^ # 保留工作区修改
git reset --soft HEAD^ # 软回退保留修改
git reset --hard HEAD^ # 硬回退,丢弃修改

暂存当前修改

1
2
git stash # 临时存储更改
git stash pop # 恢复暂存的修改

标签

1
2
3
git tag 标签名 # 为当前提交创建标签
git push origin 标签名 # 推送标签到远程
git tag # 查看标签列表

comment:

  • 不建议命令行。即使是现查现用也容易错。常用IDE本身都有Git的图形化操作功能。像VSCode这样的还会有一些额外的插件(推荐Git Graph和Git Lens),还有source tree 更直观
  • GUI 看不懂一点,反而是 CLI 最清晰,还 flex,同事知道你手搓 git 命令之后 PR 上不敢多点一个 comment 或者 block
  • 用小乌龟啊
  • git单次上传小于2GB