目录
一、 idea集成git
1、idea设置git软件安装位置
2、 创建本地仓库,提交代码
3、commit
二、git命令操作
1、连接远程仓库
2、新建分支
3、git同步远程仓库分支(切换分支)
1、拉取远程分支
2、删除本地及远程的分支
4、GIT合并的两种方法以及区别
5、一定要记得push
三、直接使用idea完成一个已有项目,从Pull到push,再到merge等完整的使用流程
1、从远程仓库clone一个项目到本地
2、拉取远程仓库分支到本地
3、新建分支(idea会自动从我们当前所选的远程分支拉取代码到我们新建的分支)
4、push新建分支到远程
7、切换分支
6、如何合并分支merge
7、如何删除分支
四、如何解决([email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).)
1、修改拉取代码的方式为ssh
2、生成SSH密匙
到这里,idea集成git,在实际项目中的使用就讲解完了。截图编写不易,如果对你有所帮助,麻烦点个赞,留个言可好。
File-->settings-->Version Control-->Git如下图:
项目变红以后,右键项目,或者某个java文件,选择git->add
项目就变绿色了
再右键选择git ->commit 就成功提交到了本地仓库
或者:
进入到本地仓库的根目录下:(此处就进入到teamwork目录下)右击鼠标选择 git bash here
在git的命令框中,键入命令:
git remote add origin 远程仓库的地址
如果已经连接某个仓库,需要更改,对应命令如下:
git remote set-url origin 修改后的远程仓库地址
最后在进行对应的push、pull操作即可。
以上命令过程,也可以直接在idea中Terminal中输入:
Git branch name1 创建名字为name1的branch
Git checkout xxx_dev 切换到名字为xxx_dev的分支
Git pull 从远程分支拉取代码到本地分支
Git checkout -b main_furture_xxx 创建并切换到 main_furture_xxx 分支
小编之前在checkout分支的时候,遇到过切换失败的场景,git告诉你,该分支不存在,但我们查看远程分支,该分支是存在的。之所以失败,是因为本地分支与远程分支未同步,只要同步了,就可以正常切换分支了。
1.将某个远程主机的更新,全部取回本地:git fetch
2.查看远程分支:git branch -a (即可看到所有远程的分支了)
3.查看本地分支:git branch
4.拉取远程分支到本地:git checkout -b 远程分支名 origin/远程分支名
5.切换分支:git checkout 分支名(只要是本地的分支,就能成功)
1.删除远程分支: git push origin -d 分支名
2.删除本地分支: git branch -d 分支名
假如我直接到github删除了某个分支,我在本地使用git branch -a查看远程分支,依然存在并且可以切换使用。我本地也想把远程分支记录删除怎么办?
1.git branch -a 查看远程分支,红色的是本地远程远程分支记录。
2.执行下面命令查看远程仓库分支和本地仓库的远程分支记录的对应关系:
git remote show origin
3.会看到:
refs/remotes/origin/远程仓库已经删除的分支名
stale (use 'git remote prune' to remove)
其中:
Local refs configured for 'git push': 命令下面的分支是本地仓库的远程分支记录中仍存在的分支,但远程仓库已经不存在。
4.输入git remote prune origin来删除远程仓库已经删除过的分支
5.验证 git branch -a
此时可以看到本地远程分支记录已经和远程仓库保持一致了。
Git代码合并有两种:Git Merge 和 Git ReBase
Git Merge:这种合并方式是将两个分支的历史合并到一起,现在的分支不会被更改,它会比对双方不同的文件缓存下来,生成一个commit,去push。
Git ReBase:这种合并方法通常被称为“衍合”。他是提交修改历史,比对双方的commit,然后找出不同的去缓存,然后去push,修改commit历史。
commit只是将代码提交到了2、 创建本地仓库,提交代码(本地仓库),此时远程仓库是没有commit的代码的。需要我们push。
在git中,checkout到我们想要的远程分支下
git push 把当前提交到git本地仓库的代码推送到远程主机的某个远程分之上
或者直接在idea中,选择commit and push 也可以
步骤1:
步骤2:
(该步骤主要是方便切换分支,考虑到项目实际需求,有可能会从其他分支拉(除了master外的)取到新的分支)
可以看到,我们的分支就已经切换了,但这个时候我们查看远程仓库,是看不到当前分支的,因为我们还没有push。
push前的远程分支:
push操作:
push成功,刷新远程仓库,就可以看到我们的分支了。
然后我们就可以在idea编辑项目,并随时commit和push到远程仓库了。
有时候为了查看项目,我们会在idea中切换到其他的远程分支。
直接选择我们想要切换到分支,checkout即可(如何此处查看不到远程分支,请先进行步骤2的操作,拉取远程分支到本地)
idea会让你给新的分支命名,因为你的本地仓库目前还没有对应的分支(如果已经存在当前分支了,就不要从远程分支checkout了)。
然后就可以看到本地分支(Local Branches)和远程分支(Remote Branches)了。
之后就直接选择checkout切换即可
特别注意:如何想要merge成功,对应的分支,必须是从远程上拉取下来的,因为git对于merger操作,它自动去对比项目的提交历史,如果对比不上,就会merge失败。
合并分支会牵涉到两个分支,比如说需要把分支A(小编此处就是:testBranch)合并到分支B(小编此处就是:newTest),那么我们先将本地分支checkout到分支B,再去选择分支A,merge into current
一般情况都能合并成功。
直接选择对应的分支,delete即可。但是需要注意,你想要删除的是本地分支还是远程分支。(特别是远程分支,千万不能删错了)一般我们在删除了远程分支后都会去把本地对应的分支也删除。
小编最近有一个需求,原来拉取代码的方式是http的,在将项目打包为release版本的时候,程序报错信息如下:(因为远程仓库用的公司的私服,当初拉取代码的时候并没有去设置SSH 密钥 ,但是正常的pull和push功能都是ok的)
[email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
后来发现就是因为缺少SSH密匙造成的。
01 找到项目的.git文件(该文件夹默认是被隐藏了的,需要设置显示出来)
02 修改git的配置文件为ssh链接方式
03 将远程仓库的ssh地址复制过来即可
01 设置git的user name和email:
$ git config --global user.name "test"
$ git config --global user.email "[email protected]"
02 Git Bash Here,输入如下指令,生成密匙
ssh-keygen -t rsa -C “[email protected]”
03 按3个回车,密码为空(建议不要更换key保存的路径):
Enter file in which to save the key (/c/Users/mfc/.ssh/id_rsa):
/c/Users/mfc/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/mfc/.ssh/id_rsa.
Your public key has been saved in /c/Users/mfc/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:5hMl0kN5TgpCcaQfjHpG7y8rOyM/ofvFWaVr4rzMZ6o [email protected]
The key's randomart image is:
04 设置密匙
- 最后得到了两个文件:id_rsa和id_rsa.pub
- 添加密钥到ssh:ssh-add 文件名,需要之前输入密码。(也可以不用添加)
- 在远程仓库上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。