项目管理
从无到有:如何将一个项目上传到远程仓库
一、用户认证
- 生成 SSH 密钥对
- 将公钥添加到 Gitee
- 配置 SSH 代理
- 重新尝试推送代码
1. 生成 SSH 密钥对
如果你还没有生成 SSH 密钥对,可以使用以下命令生成:
ssh-keygen -t ed25519 -C "your_email@example.com"
这将生成两个文件:
~/.ssh/id_ed25519
(私钥)~/.ssh/id_ed25519.pub
(公钥)
2. 将公钥添加到 Gitee
-
打开公钥文件:
cat ~/.ssh/id_ed25519.pub
-
复制公钥内容。
-
登录 Gitee:打开浏览器,访问 Gitee 并登录你的账户。
-
添加 SSH 密钥:
- 点击右上角的头像,选择“设置”。
- 在左侧菜单中选择“SSH 公钥”。
- 点击“新增公钥”,粘贴你复制的公钥内容,并填写一个标题(例如
My Laptop
)。 - 点击“确定”。
3. 配置 SSH 代理
-
启动 SSH 代理:
eval "$(ssh-agent -s)"
-
添加私钥到 SSH 代理:
ssh-add ~/.ssh/id_ed25519
将一个本地项目提交到 Gitee 上,假设 Gitee 上还没有创建仓库,可以按照以下步骤进行:
二、上传
1. 在 Gitee 上创建仓库
- 登录 Gitee:打开浏览器,访问 Gitee 并登录你的账户。
- 创建新仓库:
- 点击右上角的“+”按钮,选择“新建仓库”。
- 填写仓库名称(例如
my-project
)、描述等信息。 - 选择仓库的可见性(公开或私有)。
- 点击“创建”。
2. 初始化本地项目为 Git 仓库
-
进入项目目录:
cd /path/to/your/project
-
初始化 Git 仓库:
git init
3. 添加文件到 Git 仓库
-
添加所有文件到暂存区:
git add .
-
提交文件到本地仓库:
git commit -m "Initial commit"
4. 添加远程仓库
-
获取 Gitee 仓库的 URL:在 Gitee 上创建的仓库页面中,可以看到仓库的 URL。例如,
https://gitee.com/username/my-project.git
。 -
添加远程仓库:
git remote add origin https://gitee.com/username/my-project.git
5. 推送代码到远程仓库
-
推送代码到远程仓库:
git push -u origin master
如果仓库的默认分支名称不是
master
,请替换为实际的分支名称。例如,如果默认分支名称是main
,则使用:git push -u origin main
从有拉取:如何从远程仓库拉取一个项目
从远程仓库(如 Gitee、GitHub 等)拉取一个已有的项目到本地。
1. 安装 Git
确保你的计算机上已经安装了 Git。如果没有安装,可以从 Git 官方网站 下载并安装。
2. 克隆远程仓库
使用 git clone
命令将远程仓库克隆到本地:
-
打开终端或命令行工具:
- Windows 用户可以使用 Git Bash 或者命令提示符。
- macOS 和 Linux 用户可以使用终端。
-
导航到你希望保存项目的目录:
sh cd /path/to/your/directory
-
使用
git clone
命令克隆远程仓库:-
假设远程仓库的 URL 是
https://gitee.com/username/repo.git
,使用以下命令:git clone https://gitee.com/username/repo.git
- 使用的是 SSH 方式(SSH方式预处理见第一部分),URL 会有所不同:
git clone git@gitee.com:username/repo.git
-
ps: 执行git clone
命令会自动执行git init
等一系列命令。
3. 进入项目目录
克隆完成后,进入项目目录:
```sh
cd repo
```
4. 查看项目分支
-
查看当前分支:
git branch
-
查看所有的远程分支:
git branch -r
-
此时,可以创建并切换到新的本地分支,并跟踪远程分支(尽量保证your_branchName和branchName 保持一致):
git checkout -b your_branchName origin/branchName
-
推送当前本地分支到指定分支:
git pull origin branchName
5. 推送更新
-
添加所有文件到暂存区:
git add .
-
提交文件到本地仓库:
git commit -m "Initial commit"
-
推送代码到远程仓库:
git push -u origin branchName
本地与远程冲突无法上传,如何解决
假设你目前处于合并冲突的状态,无法向远程提交项目。
预处理
拉取最新的项目代码到一个临时分支。
git checkout -b tmp-branch origin/master
切换回要提交的分支,假设为master。
git checkout master
尝试将拉取的项目和本地项目融合。
git merge tmp-branch
1. 查看冲突文件
使用 git status
命令确认哪些文件存在冲突:
git status
输出应该类似于:
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: src/main/java/com/example/demo/Demo1Application.java
2. 手动解决冲突
打开冲突文件 src/main/java/com/example/demo/Demo1Application.java
,找到冲突标记(<<<<<<<
, =======
, >>>>>>>
),手动编辑文件,删除冲突标记,保留你希望保留的代码。
例如,冲突文件可能看起来像这样:
<<<<<<< HEAD
public class Demo1Application {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
=======
public class Demo1Application {
public static void main(String[] args) {
System.out.println("Hello, Gitee!");
}
}
>>>>>>> feature-branch
手动编辑文件,解决冲突后,文件可能看起来像这样:
public class Demo1Application {
public static void main(String[] args) {
System.out.println("Hello, Gitee!");
}
}
3. 标记冲突已解决
使用 git add
命令将解决冲突后的文件添加到暂存区:
git add src/main/java/com/example/demo/Demo1Application.java
4. 提交解决冲突后的更改
解决所有冲突后,提交更改:
git commit -m "Resolved merge conflicts"
5. 再次尝试推送代码
解决冲突并提交更改后,再次尝试将代码推送到远程仓库:
git push -u origin master