环境搭好了,接下来就是把公司项目代码拉下来。这一节讲Git克隆项目和分支切换,新人入职第一天就要用的操作。
一、搞清楚几个概念
先别急着敲命令,搞清楚这几个概念能少走弯路。
仓库(Repository)
仓库就是项目的根目录,里面有个.git隐藏文件夹,存着所有版本记录。
- 远程仓库:在Git服务器上的,团队共享的
- 本地仓库:你电脑上的,你自己改代码用的
分支(Branch)
分支就像平行宇宙,你可以在自己的分支上改代码,不影响其他人。
main (主干)
├── feature/login (开发登录功能)
├── feature/register (开发注册功能)
└── hotfix/bug-001 (修复线上bug)
常见分支命名规范
| 分支类型 | 前缀 | 示例 |
|---|---|---|
| 功能开发 | feature/ | feature/user-login |
| 修复bug | hotfix/ 或 fix/ | hotfix/null-pointer |
| 发布版本 | release/ | release/v1.2.0 |
| 主干 | main 或 master | main |
二、克隆项目
1. 拿到项目地址
问你的导师或者看项目文档,拿到Git仓库地址。
SSH地址(推荐):
git@github.com:company/project.git
git@gitcode.com:company/project.git
HTTPS地址:
https://github.com/company/project.git
SSH地址需要配好密钥(上节搞定了),HTTPS每次要输密码。
2. 选个存放位置
别放桌面,别放C盘系统目录。
建议放在:
D:\projects\company-project
或者:
D:\workspace\project-name
3. 克隆
打开Git Bash或cmd:
# 进入存放目录
cd D:/projects
# 克隆项目
git clone git@github.com:company/project.git
克隆完成后,进入项目目录:
cd project
4. 浅克隆(大项目用)
有些公司项目历史很长,完整克隆可能几百MB甚至几GB,很慢。
用浅克隆,只拉最近一次提交:
git clone --depth 1 git@github.com:company/project.git
快很多,但缺点是看不到完整历史记录。后面需要时可以补全:
git fetch --unshallow
5. 克隆指定分支
如果项目分支很多,只克隆你需要的分支:
git clone -b feature/your-branch git@github.com:company/project.git
三、切换分支
1. 查看所有分支
# 查看本地分支
git branch
# 查看所有分支(包括远程分支)
git branch -a
输出示例:
* main
remotes/origin/HEAD -> origin/main
remotes/origin/develop
remotes/origin/feature/user-login
remotes/origin/hotfix/bug-001
带*号的是你当前所在的分支。
2. 切换到已有分支
# 切换到main分支
git checkout main
# 切换到develop分支
git checkout develop
3. 切换到远程分支
远程分支在本地不存在时,需要先创建追踪分支:
# 方法1:checkout远程分支(会自动创建本地分支)
git checkout -b feature/user-login origin/feature/user-login
# 方法2:直接checkout(Git 2.23+支持,自动追踪)
git checkout feature/user-login
4. 创建自己的开发分支
新人入职一般要先建一个自己的开发分支:
# 基于当前分支创建新分支并切换过去
git checkout -b feature/your-name-your-task
# 例如
git checkout -b feature/zhangsan-user-login
5. 推送新分支到远程
# 把本地新分支推到远程
git push -u origin feature/zhangsan-user-login
-u参数建立本地分支和远程分支的追踪关系,以后git pull和git push不用指定远程分支名。
四、日常分支操作
1. 拉取最新代码
每天早上开始干活前,先拉一下最新代码:
# 切到主干
git checkout main
# 拉取最新
git pull origin main
# 切回你的开发分支
git checkout feature/zhangsan-user-login
# 把主干最新代码合并到你的分支
git merge main
2. 提交代码
# 查看改了什么
git status
# 看具体改动
git diff
# 添加所有改动
git add .
# 提交
git commit -m "feat: 完成用户登录接口"
# 推送
git push origin feature/zhangsan-user-login
3. 合并到主干(由有权限的人做)
# 切到主干
git checkout main
# 拉取最新
git pull origin main
# 合并你的分支
git merge feature/zhangsan-user-login
# 推送
git push origin main
实际开发中一般不直接合并,而是发Merge Request(GitLab)或Pull Request(GitHub),让代码经过Review后由有权限的人合并。
五、IDEA里的Git操作
命令行虽然灵活,但日常开发用IDEA的Git功能更方便。
1. 查看改动
底部栏点Git,或者用快捷键Alt+9。
文件名颜色含义:
- 蓝色:修改过
- 绿色:新增的
- 红色:删除的
- 灰色:被忽略的
2. 提交
快捷键Ctrl+K打开提交窗口。
左边选择要提交的文件,下面写提交信息,点Commit。
3. 推送
快捷键Ctrl+Shift+K打开推送窗口,点Push。
4. 切换分支
右下角有个分支名显示,点它可以看到所有分支,选一个切换。
5. 查看历史
底部Git面板 → Log标签,可以看到提交历史、分支图。
6. 解决冲突
IDEA的冲突解决界面非常好用,三栏对比:
- 左边:你的代码
- 中间:合并结果
- 右边:对方的代码
点Merge按钮,在中间栏选择要保留的代码。
六、新人常见错误
错误1:在main分支上直接改代码
千万别在main分支上改代码! 主干是大家的,你直接改了推上去,可能覆盖别人的代码。
正确做法:
- 切到自己的开发分支
- 在开发分支上改
- 测试没问题后发MR/PR合并到主干
错误2:不拉代码就改
早上来直接改代码,结果别人的改动你本地没有,推的时候冲突一堆。
正确做法:
- 先
git pull origin main拉最新 - 再切到你的分支合并主干最新代码
- 然后再改
错误3:提交了不该提交的文件
把target/、application-local.yml、.idea/这些提交了。
正确做法:确认.gitignore文件里有这些条目。如果不小心提交了:
# 从Git跟踪中移除(不删除本地文件)
git rm --cached target/
git rm --cached .idea/
git commit -m "chore: 移除不需要跟踪的文件"
git push
错误4:commit信息随便写
# 烂的commit信息
git commit -m "修改"
git commit -m "aaa"
git commit -m "fix bug"
# 好的commit信息
git commit -m "feat: 新增用户登录接口,支持账号密码登录"
git commit -m "fix: 修复用户列表分页失效的问题"
第4章会详细讲Git提交规范。
错误5:force push到公共分支
# 危险操作!别在公共分支用!
git push --force origin main
这会覆盖远程历史,别人的提交全没了。
--force只在自己的个人分支上用,公共分支千万别force push。
七、实用技巧
1. 暂存当前修改
正在改代码,突然要切分支修个紧急bug,但当前代码还没写完不想提交:
# 暂存当前所有修改
git stash
# 切分支修bug
git checkout hotfix/urgent-bug
# 修完后切回来
git checkout feature/your-branch
# 恢复暂存的修改
git stash pop
IDEA里:右键项目 → Git → Stash Changes
2. 撤销最近的提交
# 撤销提交但保留修改(推荐)
git reset --soft HEAD~1
# 撤销提交并丢弃修改(慎用)
git reset --hard HEAD~1
3. 修改最近一次提交的信息
git commit --amend -m "新的提交信息"
git push --force-with-lease origin feature/your-branch
4. 查看某行代码是谁改的
# 查看某文件的修改历史
git log -p src/Main.java
# 查看某行是谁改的(IDEA更方便)
git blame src/Main.java
IDEA里:右键文件 → Git → Annotate with Git Blame
5. 比较分支差异
# 比较两个分支的差异
git diff main..feature/your-branch
# 只看文件列表
git diff main..feature/your-branch --stat
小结
| 操作 | 命令 | 使用场景 |
|---|---|---|
| 克隆 | git clone |
入职第一次拉代码 |
| 切分支 | git checkout -b |
创建开发分支 |
| 拉取 | git pull |
每天早上同步代码 |
| 提交 | git add + git commit |
改完代码提交 |
| 推送 | git push |
提交后推到远程 |
| 暂存 | git stash |
临时切分支时用 |
代码拉下来了,下一步导入IDEA,配置Maven和JDK。