文章目录
Git
Git中央服务器实现的两种方式
1、公司内部搭建git服务器
2、使用在线版本控制系统----GitHub、码云、gitlab
Git常用命令
- git clone -b 分支名称 git仓库地址 —克隆分支到本地,-b 为分支,分支名称,分支名称后面跟主分支地址
- git add 文件名称 ------添加某个文件到提交包里
- git commit –m “提交信息” ------提交并填写提交信息
- git push ------推送提交的到远程仓库
- git status ------查看当前所在分支状态
- git reset –hard HEAD~ —返回上一版本
- git reset --hard 版本号 —返回指定版本
- git log —查看提交日志,可看到提交ID,根据ID返回到提交这一版本
- git reset 提交ID —git log最上面的提交ID返回到没有提交信息的状态
- q —在查看不可编辑的文档时,可用q退出
- insert键 —粘贴键 选中即是复制
- git merge –abort —取消合并分支
注意事项:填写提交信息时,进入编辑状态和退出时输入法都必须是英文状态下,否则编辑状态i和退出编辑状态shift + i后wq,shift + i无效;
克隆到本地
有两种方式
- 通过HTTPS方式,此种方式直接复制需要克隆的地址即可
- 通过ssh方式,这种方式比较安全,会对内容进项加密,也是比较慢的
Git生成秘钥的步骤
- 生成.ssh文件:mkdir ~/.ssh
- 进入.ssh文件:cd ~/.ssh
- 再执行ssh-keygen -t rsa -C “你的邮箱地址” *****重点ssh和-keygen中间没有空格,如果有空格会报Bad escape character ‘ygen’
- 一路回车即可,生成的秘钥和公钥一般在c:/users/Administrator/.ssh/
- 用eclipse编辑器打开id_rsa_pub文件并复制里面的所有内容粘贴到你的仓库添加ssh公钥下的公钥的输入框中,公钥标题输入什么都可以。
- 通过ssh这种方式的克隆代码只能供命令行git clone ssh路径来克隆代码,不能通过tortoiseGit克隆,否则会报错。
- Windows7和Windows10测试是否连接成功时报Hi limaomao! You’ve successfully authenticated, but GITEE.COM does not provide shell access.也表示连接成功。
TortoiseGit
克隆分支
右击选中Git Clone
如果不选中,克隆的即是master分支
创建分支
- 进入本地主分支后点击右键选择TortoiseGit,选择Create Branch…,在Branch框中填写新分支的名称(若选中在option选项”switch to new branch”则直接转到新分支上,省去第二步),点击OK按钮
- 通过“Switch/Checkout”切换到新创建的分支上,点击OK:
- 在新分支下执行PUSH操作,在对话框中保持远程分支为空白,点击OK,则将在远程创建了新的分支(在PUSH的时候远程服务器发现远程没有该分支,此时会自动创建一个和本地分支名称一样的分支,并将本地分支的内容上传到该分支)
合并分支
-
点击右键选择TortoiseGit,选择Switch/CheckOut切换到要合并到的分支,
-
然后通过“Merge”继进行合并操作,在对话框中选择需要合并的分支。
选择需要合并的分支选择本地的即可,没有remotes前缀的是本地的
-
分支合并成功后,我们即可以通过Commit或直接PUSH操作将合并上传到中心服务器。
举例 A分支合并到master分支,则先切换到master分支,然后merger,进入merge界面,选择A分支,点击合并,合并完后,push主分支master即可
回滚版本
右击TortoiseGit,选择Show log
1、 保持工作树和索引不变
2、保留工作树不变,索引重置
3、重置索引树和索引,
此种方式只能修改本地的,不能提交到远程仓库,提交会提示过期,通过pull拉取远程后会覆盖本地的回滚。
回滚到此版本并创建分支,通过push可推送远程仓库
导出此版本的zip包,zip包中没有git文件
此种可以修改本地文件并且可以提交到远程,
但是唯一的问题是同一个文件的回滚只能回滚到此文件的上一个版本,如果直接回滚到上一版本的之前版本会冲突,
此种回滚回滚的是回滚所在版本的文件回滚,如果有些文件不是在回滚版本的文件提交的则不会回滚,如版本1对文件1修改了提交远程,版本2对文件2修改了并提交到远程,如果回滚到版本1,则不会对文件2进行回滚。
可能遇到的问题
windows中git输错密码后不能重新输入的问题
控制面板----》用户账户—》编辑—》管理你的凭据----》如果你的git里保存有用户名和密码,在下图里就会有保存,然后删掉就可以重新输入了
解决分支冲突
当你和别人修改了同一个文件时,再次pull的时候就会有冲突,此时文件会有黄色三角感叹号,需要合并同事的文件和自己的文件,然后tortoiseGit-resoulve再次提交即可;
- git pull
更新代码,发现
error: Your local changes to the following files would be overwritten by merge:pom.xml
Please commit your changes or stash them before you merge.
这说明你的pom.xml与远程有冲突,你需要先提交本地的修改然后更新。 - git add pom.xml
git commit -m ‘冲突解决’
提交本地的pom.xml文件,不进行推送远程 - git pull
更新代码
Auto-merging pom.xml
CONFLICT (content): Merge conflict in pom.xml
Automatic merge failed; fix conflicts and then commit the result.
更新后你的本地分支上会出现 (develop|MERGING)类似这种标志 - 找到你本地的pom.xml文件,并打开
你会在文件中发现
<<<<<<< HEAD ,======= ,>>>>>>> ae9a0f6b7e42fda2ce9b14a21a7a03cfc5344d61
这种标记,<<<<<<< HEAD和=======中间的是你自己的代码, ======= 和>>>>>>>中间的是其他人修改的代码
自己确定保留那一部分代码,最后删除<<<<<<< HEAD ,======= ,>>>>>>>
这种标志
- git add pom.xml
git commit -m ‘冲突解决结束’ 再次将本地的pom.xml文件提交 - git push 将解决冲突后的文件推送到远程
推送失败的可能原因
- 没有权限报You are not allowed to push code to protected branches on this p
roject. - 有冲突,要先更新后或者解决冲突后在推送