一、前言
暂时空着...
二、git
2.1 可能的疑问
1. VSCode 项目名和 GitHub 仓库名是否需要一致?
不需要一致。 VSCode 项目名(也就是你本地的文件夹名字)和 GitHub 仓库名可以不一样。 Git 是一个分布式版本控制系统,它主要关注的是你本地仓库与远程仓库之间的连接和同步,而不是文件夹的名字。
没有直接影响。 你可以正常地将本地仓库连接到任何远程 GitHub 仓库,无论名字是否相同。
建议保持一致以方便管理。 为了方便自己和其他协作者理解项目,建议尽量让本地项目文件夹名和 GitHub 仓库名保持一致。 这样可以更容易地从文件夹名字就能判断出对应的 GitHub 仓库,尤其是在你同时管理多个项目的时候。
2. origin
是什么?可以写成其他的吗?
rigin
是远程仓库的别名 (alias)。 当你运行git remote add origin <repository_url>
的时候,origin
就代表了你指定的远程仓库的 URL。origin
可以写成其他的名字。 你可以选择任何你喜欢的名字作为远程仓库的别名。 比如,你可以将远程仓库命名为github
、upstream
、remote
等等。如何更改远程仓库的别名?
重命名已存在的远程仓库:
git remote rename origin <new_name>
例如:
git remote rename origin github
添加远程仓库时使用其他名字:
git remote add <new_name> <repository_url>
例如:
git remote add github https://github.com/your_username/your_repo.git
origin
的约定俗成:虽然你可以随意命名,但是
origin
已经成为一种约定俗成的做法。 大多数开发者都习惯使用origin
来代表主要的远程仓库,特别是你 fork 别人的项目后,会再添加一个upstream
指向原始仓库,方便同步更新。
三、Github
3.1 初始化 Git 仓库:
打开 VSCode 的终端 (View -> Terminal)。
运行
git init
命令。 这将在你的项目目录中创建一个新的 Git 仓库。
3.2 将本地仓库连接到 GitHub 仓库
复制你刚在 GitHub 上创建的仓库的 HTTPS 或 SSH URL。 你可以在 GitHub 仓库页面的 "Code" 按钮下找到这个 URL。
在 VSCode 终端中运行
git remote add origin <your_repository_url>
命令,将<your_repository_url>
替换为你复制的 URL。 例如:
git remote add origin https://github.com/your_username/your_private_repo.git
3.3 将代码上传到 GitHub
1. 添加文件到暂存区:
在 VSCode 中创建你的项目文件 (例如:
main.py
,index.html
等)。运行
git add .
命令将所有文件添加到暂存区。 或者,你可以使用 VSCode 的 "Source Control" 视图中的 "+" 按钮来添加单个文件。
2. 提交更改:
运行 git commit -m "Initial commit"
命令提交你的更改。 将 "Initial commit"
替换为描述本次提交的更有意义的消息。
3. 查询本地分支的名字
git brach
如果是* master,
git branch -m master main
变成 *main
4. 推送到 GitHub:
运行 git push -u origin main
命令将你的本地仓库推送到 GitHub 仓库。
-u
选项设置 upstream tracking,这样以后你只需要运行git push
就可以推送更改了。origin
是你远程仓库的名称(通常是 "origin",你之前使用git remote add
命令设置的)。main
是你想要推送到的分支名称(通常是 "main" 或 "master")。你可能会被要求输入你的 GitHub 用户名和密码
该错误表示远程分支 main 具有本地分支没有的提交。您有两个主要选项:
首先合并远程更改:
远程仓库已经存在 main
分支,但是你的本地仓库和远程仓库的代码不同步。 错误提示 Updates were rejected because the remote contains work that you do not have locally.
意味着远程仓库 main
分支上有一些你本地仓库没有的提交。
5. 远程更改拉取到本地分支中,必要时解决任何冲突,然后推送:
git pull origin main
git push -u origin main
git pull origin main --allow-unrelated-histories
强制推送(如果您打算覆盖远程分支):
如果你确定你的本地分支应该完全替换远程分支(注意:这将丢弃远程提交),你可以强制推送:
git push -u origin main --force
6. 拉取到本地
git clone github_project_repository_url
3.3 git 如何排除一些上传的folder, files
例如, 有个很大的数据集, 有logs 文件,等等, 你不想上传
1. 使用 .gitignore
文件排除文件夹:
.gitignore
文件用于指定 Git 应该忽略的文件和文件夹。 这是排除文件夹的最佳方法,尤其是在你不想将这些文件夹上传到远程仓库时。
步骤:
在项目根目录中创建
.gitignore
文件:
如果你的项目根目录中还没有.gitignore
文件,请创建一个。 你可以使用 VSCode 创建一个新文件,并将其命名为.gitignore
。编辑
.gitignore
文件:
在.gitignore
文件中,添加你想要忽略的文件夹的名称,每行一个。 例如,如果你想要忽略名为venv
和data
的文件夹,你的.gitignore
文件应该如下所示:
venv/
data/
请注意,
venv/
末尾的斜杠表示这是一个目录。你也可以使用通配符来匹配多个文件夹或文件。例如,
*.log
会忽略所有以.log
结尾的文件。
3. VS Code 支持 .gitignore
在 VS Code 中,你可以右键单击要排除的文件或文件夹,然后选择 "Add to .gitignore"。VS Code 将自动将该文件或文件夹添加到 .gitignore 文件中。
4. 保存 .gitignore
文件。
5. 将更改添加到 Git(可选)
git add .gitignore
这会将 .gitignore
文件添加到暂存区,以便 Git 跟踪它。 如果你不想跟踪 .gitignore
文件,可以跳过这一步。
6. 提交更改:
git commit -m "Add .gitignore file"
7. 清除 Git 缓存 (如果之前已经添加了要忽略的文件):
如果你在添加 .gitignore
文件之前已经将要忽略的文件添加到了 Git 的暂存区,你需要先清除 Git 的缓存,然后再提交更改。运行:
git rm -r --cached .
git add .
git commit -m "Remove cached files and add .gitignore"
git rm -r --cached .
:从暂存区中删除所有文件,但保留本地文件。git add .
:重新添加所有未被忽略的文件到暂存区。
3.4 可能的问题
1. "'origin' does not appear to be a git repository"
“origin”似乎不是 Git 存储库 fatal:无法从远程存储库读取。
检查remote origin 是否存在
git remote -v
如果您没有看到 输出 ,则表示 origin
is not set.
添加remote origin
your repository is https://github.com/github-user/user_project.git
, add it as origin
:
git remote add origin https://github.com/github-user/user.git
验证是否添加成功
git remote -v
## 预期输出:
origin https://github.com/github-user/user.git (fetch)
origin https://github.com/github-user/user.git (push)
2. “fatal: refending to merge unrelated histories”
“Updates was rejected because the tip of your current branch is behind its remote counterport” 表示您的本地仓库和远程仓库具有单独的提交历史记录。
允许不相关的历史记录
由于你的本地仓库与远程仓库的历史记录不同,请强制 Git 合并它们:
git pull origin main --allow-unrelated-histories
成功合并后,推送您的更改
git push -u origin main
如果推送再次被拒绝,则强制推送:
git push -u origin main --force