idea中使用git进行团队协作
文章目录
一. git安装
- 下载最新的 git 包
2. 解压后随便放个位置即可,例如图
3. 打开Idea File—> Setting
4. 设置Git exe 如下图
5. Test
二. 基本介绍
git与svn的区别在于多出一个本地仓库
整体流程为:
- 通过
Add
把文件从IDE的工作目录添加到本地仓库的stage区- 通过
Commit
把stage区的暂存文件提交到当前分支的仓库,并清空stage区- 通过
Push
把本地仓库的提交同步到远程仓库
三. svn迁移项目到git(保存历史和分支)
#这里--trunk=trunk --tags=tags --branches=branches都需要,否则没有分支或者trunk
git svn clone <svn地址> --no-metadata --authors-file=svn2git.txt --trunk=trunk --tags=tags --branches=branches
#进入到项目文件夹下
cd <项目名>
#这时候本地分支只能看到trunk,所以需要将分支index拷贝到本地
cp -Rf .git/refs/remotes/* .git/refs/heads/
rm -rf .git/refs/remotes
#一般会留master(默认创建)作为主分支,所以删除trunk
git branch -d trunk
#添加git的地址
git remote add origin <git地址>
#全部推送到git
git push origin --all
四. idea中的git使用
1. 拉取与提交
a. 创建项目并提交
- 首先有一个远程仓库的url,例:https://gitee.com/razera_admin/gitdemo.git
- 创建好要提交到远程仓库的本地代码
- 指定本地仓库位置(一般选择项目目录)
- 通过
Add
把文件从IDE的工作目录添加到本地仓库的stage区 【ctrl+alt+a】
- 通过
Commit
把stage区的暂存文件提交到当前分支的仓库,并清空stage区
- 通过
Push
把本地仓库的提交同步到远程仓库【ctrl+shift+k】
- 第一次提交需要设置远程仓库地址:https://gitee.com/razera_admin/gitdemo.git
b. 从仓库拉取项目
- 点击vcs–>checkout from version control–>git
- 在弹出窗口中填入需要checkout的url
c. 提交修改到仓库
这个操作和首次提交的流程基本一致,分别是 Add -> Commit -> Push。参考 a. 创建项目并提交
d. 从仓库更新项目
获取更新有两个命令:Fetch和Pull
- Fetch是从远程仓库下载文件到本地的origin/master,然后可以手动对比修改决定是否合并到本地的master库。
- Push则是直接下载并合并。
另:idea右上角默认的update Project按钮走的是这个命令:
git -c core.quotepath=false -c log.showSignature=false fetch origin --progress --prune
。
这里推荐使用idea的update project
使用默认的merge和using stash即可
2. 分支操作
a. 创建本地分支
点击new branch,然后输入名称就可创建本地分支
注意:
- 创建分支,基于当前分支创建
- 创建分支后默认checkout到新创建的分支
- 如果当前分支有没有提交的代码,则代码保留在当前分支和新创建的分支,但都是未提交状态
- 创建分支都是本地分支,在仓库更新不到,如果想在仓库更新到,需要将本地分支提交到远程分支
创建新的分支叫做branch_test,书签的图案代表哪个是现在所在的分支。(version control中的log的黄色代表head,也能看出来,但是如果和其他分支在同一个log位置,则不好区分,所以通过书签图案区分)
b. 提交到远程分支
push的时候自定义远程分支名字,然后直接push
可以看到远程分支中已经出现了test_branch
e. 删除分支
这里演示删除本地分支的操作方式,远程分支删除与本地分支删除相同
(与svn区别在,这里删除远程分支之后就直接删除了,不需要再push)
c. 切换分支
本地分支切换分支,直接checkout就可以了,远程分支切换分支需要checkoutAs来checkout 出一个新的本地分支
d. 合并分支
假设需要将test_branch合并到master分支上
- 在test_branch本地分支,更新
- 切换分支到本地master分支然后更新
- 然后选择下图中的test_branch—>merage into current
- 现在我还是在master的本地分支上,add–>commit–>push即可
f. 解决合并冲突
- 如果合并的时候有冲突,idea会自动弹出需要解决冲突的文件,根据需要选择
- 这里说一下双击进行详细修改:左边是版本,右边是版本,中间是结果版本。箭头是合并,叉号代表忽略
3. merge之后需要commit然后push
3. 其他操作
a. 回滚版本
方法:
- Revert 操作:当成一个新的提交记录,追加到提交日志当中,这样便保留了原来的提交记录。(推荐)
- Reset Head 指针:会抛弃原来的提交记录,使Head指针强制指向指定的版本。
- Revert操作
生成新的提交记录,如果有冲突需要解决冲突。好处保留了提交记录
出现冲突,解决冲突与merage出现冲突时,解决方式一致
- Reset Head指针
如果选择Rever current branch to Here则会弹出下面窗口,选择
git reset 参数
Git Reset 选项说明
- Soft:在选定提交点之后所做的所有更改都将被暂存(这意味着可以到 Version Control 窗口(Alt+9)的Local Changes 选项卡,以便您可以查看它们,并在必要时稍后提交)。
- Mixed:在所选提交之后所做的更改将被保留,但不会暂存以进行提交。
- Hard:在所选提交之后所做的所有更改都将被丢弃(已暂存的和已提交的)。
- Keep:在选定的提交之后所做的提交更改将被丢弃,但本地更改将保持不变。
如果是之前提交完全不想要了,则直接选择Hard就可以了,但是hard可能会弹出Push拒绝(如果整个不想要,直接取消,不要选“merage”),则需要在项目的Terminal输入下面命令 git push -f