在 Windows 上配置 Git,并提交到 GitHub
本文说明如何在一台 Windows 电脑上装好 Git、登录 GitHub,再把 D:\DownloadAdmin\local_config 通过 HTTPS 推送到 GitHub。
推送使用远程名 origin。提交作者和 GitHub 用户名是两项不同的信息
GitHub 用户名显示在个人主页网址 https://github.com/<GitHub 用户名> 里,创建仓库后也可以从仓库地址中复制。本机没有 SSH 密钥,推送走 HTTPS。
一、安装 Git
- 打开 https://git-scm.com/download/win,下载 Git for Windows 并安装。
- 安装时保留这些选项,使新电脑和本机一致:
- 将 Git 加入命令行和第三方软件的 PATH。
- HTTPS 传输使用 OpenSSL。
- 换行符选择 "Checkout Windows-style, commit Unix-style",对应
core.autocrlf=true。 - 凭据助手选择 Git Credential Manager。
- 默认分支名填写
master。
- 安装完成后重新打开 PowerShell,确认命令可用:
powershell
git --version
gh --version
本机当前版本是 git version 2.55.0.windows.5 和 gh version 2.101.0。两条命令都能打印出版本号,就说明 Git 和 GitHub CLI 都可用。
新电脑如果没有 gh,到 https://cli.github.com 安装 GitHub CLI,装完后重新打开 PowerShell。
二、配置提交身份
作者信息写在全局配置里,这台 Windows 用户下的所有仓库都会使用它。
powershell
git config --global user.name "tubao"
git config --global user.email "zhending0519@gmail.com"
git config --global --add safe.directory "*"
配置保存在 C:\Users\admin\.gitconfig。safe.directory = * 让 Git 可以在本机任意目录使用仓库。本机这份文件的完整内容是:
ini
[user]
name = tubao
email = zhending0519@gmail.com
[core]
excludesfile = C:/Users/admin/git.ignore
[safe]
directory = *
[credential "https://gitee.com"]
provider = generic
[core] 由后面的忽略文件步骤写入。[credential "https://gitee.com"] 是 Gitee 的凭据设置,和 GitHub 登录写在同一个文件里。GitHub 登录成功后,这个文件还会多出 github.com 的凭据行。
三、登录 GitHub
本机已经安装 GitHub CLI,还没有登录任何 GitHub 账号,Windows 凭据里也没有 github.com 的记录。在 PowerShell 中执行:
powershell
gh auth login
按提示依次选择:
GitHub.comHTTPSAuthenticate Git with your GitHub credentials选择Y,让git push使用这次登录Login with a web browser- 选完第 4 步后,代码出现在 PowerShell 窗口里 ,不是 GitHub 网页上。
gh会先打印一行类似下面的提示:
text
! First copy your one-time code: ABCD-1234
Press Enter to open github.com in your browser...
ABCD-1234 这段就是一次性代码,每次登录都会变。用鼠标选中 PowerShell 里的这串代码,复制它。先不要按 Enter。
复制好之后再按 Enter。浏览器会打开 GitHub 的设备登录页。把刚才复制的代码粘贴到网页的输入框里,确认登录并授权。授权完成后回到 PowerShell,登录即结束。
完成后执行:
powershell
gh auth status
输出里应包含已登录 github.com,协议为 HTTPS。选择第 3 步的 Y 之后,Git 会通过 gh 读取 GitHub 凭据,推送时一般不会再弹出用户名密码框。
四、用私人令牌登录
电脑无法打开浏览器时,用 Personal Access Token 完成同一次登录。
- 打开 https://github.com/settings/tokens/new。
- Note 填写
Windows Git,选一个有效期。 - 勾选权限
repo。 - 生成后立刻复制令牌。离开页面后无法再次查看完整内容。
- 在 PowerShell 中执行下面的命令,出现提示后粘贴令牌并回车:
powershell
gh auth login --hostname github.com --git-protocol https --with-token
令牌只交给 gh 保存,不写入文件,也不写进 git remote 地址。
如果以后认证失败,先退出再重新登录:
powershell
gh auth logout
"protocol=https`nhost=github.com`n`n" | git credential reject
gh auth login
五、配置全局忽略文件
全局忽略文件用来挡住编辑器目录、编译产物和本地环境变量文件,避免它们被 git add . 加进去。
本机文件位于 C:\Users\admin\git.ignore。新电脑先创建同名文件,再执行:
powershell
git config --global core.excludesfile "C:/Users/admin/git.ignore"
文件内容:
gitignore
# Compiled class file
*.class
erdaye
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
# 环境变量配置,不要提交到git
.env
换了一台电脑、用户目录不是 C:\Users\admin 时,把 core.excludesfile 改成该用户目录下的实际路径。
六、确认电脑已经配置完成
在开始提交前执行:
powershell
git config --global --list
git config --system --get credential.helper
gh auth status
全局配置里应能看到:
text
user.name=tubao
user.email=zhending0519@gmail.com
core.excludesfile=C:/Users/admin/git.ignore
safe.directory=*
credential.https://gitee.com.provider=generic
系统配置里应能看到 credential.helper=manager。gh auth status 应显示已登录 github.com。
再确认 GitHub 网站可以打开:
powershell
curl.exe -sS -o NUL -w "%{http_code}`n" --max-time 20 https://github.com
输出 200 表示网络可用。到这里,这台电脑的 Git 和 GitHub 认证环境就准备好了。
七、在 GitHub 上创建仓库
- 打开 https://github.com/new。
- Repository name 填写
local_config。公开或私有都可以,推送命令相同。 - 不要勾选 Add a README,这样远程仓库是空的,本地第一次推送可以直接成功。
- 创建完成后复制 HTTPS 地址:
text
https://github.com/<GitHub 用户名>/local_config.git
八、在本地做出第一次提交
进入仓库目录,查看状态:
powershell
cd D:\DownloadAdmin\local_config
git status
把需要纳入版本管理的文件放进这个目录。当前这份说明 github-push.md 已经在目录里,可以直接作为第一次提交的内容。确认没有 .env 之类的敏感文件后执行:
powershell
git add .
git status
git commit -m "init"
git status 用来在提交前再看一眼即将入库的文件。git commit 会使用第二节配置的作者 tubao <zhending0519@gmail.com>。
九、关联远程并推送
把地址换成第七步复制的 HTTPS 地址:
powershell
git remote add origin https://github.com/<GitHub 用户名>/local_config.git
git remote -v
git push -u origin master
git remote -v 应打印出同一个 HTTPS 地址的 fetch 和 push。-u 会把本地 master 和远程 origin/master 关联起来。
第三节已经用 gh auth login 登录过时,这条推送会直接使用该登录。推送成功后,GitHub 仓库页面能看到刚才的提交。
十、之后每次修改
文件改完后,在仓库目录重复这四步:
powershell
git status
git add .
git commit -m "说明这次改了什么"
git push
git status 查看改动,git add 暂存,git commit 在本地留下记录,git push 把新提交送到 GitHub。第一次推送已经用 -u 关联过分支,所以这里不需要再写 origin master。
十一、远程分支名或初始提交不一致
新建仓库的默认分支如果是 main,把本地 master 推到远程 main:
powershell
git push -u origin master:main
创建仓库时如果已经勾选 Add a README,先把两边的历史合到一起再推送。远程默认分支是 main 时:
powershell
git pull origin main --rebase --allow-unrelated-histories
git push -u origin master:main
远程默认分支是 master 时,把上面拉取命令里的 main 换成 master,推送命令改为:
powershell
git push -u origin master
如果 origin 已经存在、只是地址写错了,用下面的命令替换地址,再执行推送:
powershell
git remote set-url origin https://github.com/<GitHub 用户名>/local_config.git