赞
踩
目录
目录
今天算是第一次使用gitlab,之前也这么使用过GitHub,但是时间太久了忘记怎么配置了,所以在此做个笔记。
另外记录下工作中使用git的命令和场景。
有一天,失业的你找到了一份程序员工作!!你入职了,你的组长、主管给了你一个仓库地址,然你去拉取远程仓库的代码。
你安装了git,输入:
- git clone https://xxxhub.com/xxx/项目名.git
- 或者
- git clone git@xxxhub.com:xxx/项目名.git
突然报错:Permission denied (publickey). fatal: Could not read from remote repository.
一下子给你干懵了,这是啥!
其实这是因为你的权限不够,没有设置ssl密钥的问题,这时候你只需要在git上按照你使用的github或者gitlab的方法,输入:
ssh-keygen -t rsa -C "你的GitHub/gitlab邮箱"
然后一路回车就可以生成密钥了,当他出现类似于图案的东西就说明生成密钥成功了,然后密钥的位置应该是在/C/users/administrator/.ssh/id_rsa,然后再当前目录下使用git bash命令:
cat id_rsa.pub
就可以查看你的密钥了,然后在gitlab或者GitHub上添加你的ssl密钥,并且命名。
最后再使用git命令git clone 你的项目地址就可以成功拉取到代码了!!
你是一个新来的,你的领导认为你太菜了,决定给你一个项目的过期版本玩玩,于是让你拉取项目的某一个分支,一般的代码仓库都会有多个分支,master分支一般保存着稳定版的项目代码,所以你的又开始了git clone,可是敲完git clone你懵了,你沉默了,后面写些啥?
想要拉取指定分支的代码,需要如下命令:
git clone -b demo git@xxxhub.com:xxx/项目名.git
这里的demo就是分支名,-b 加上分支名就可以拉取这个分支的代码了!
有一天你想提交代码,需要查看有哪些分支,自己当前在哪个分支下,这时候就可以使用到这个命令了:
- git branch // 列出本地分支
- git branch -a // 列出所有分支,包括远程分支
- git branch -r // 列出所有远程分支
- git branch demo // 创建一个新的分支,分支名为demo
- git branch -d demo // 删除demo分支
当你列出本地分支或者所有分支后,在分支前面有一个 * 号就说明你处于当前分支上。
当然可能还有一个问题,当你带上参数 -a 或者 -r 的时候发现没法退出,没法输入下一个命令,这时候只需要按下 Q 键即可,当然这个是在Windows环境下的,至于Linux有待后续实验。
当你拉取了一个分支,写完代码后,准备要提交,这时候你的领导告诉你,这个分支是给菜鸟练习的,只能拉取,不能提交,让你新建一个分支进行提交,你通过git branch demo创建了一个demo分支,然后进行提交,随后你就被打了!
虽然创建了一个新的分支,但是你没有切换分支,提交代码还是提交到之前的分支上。这时候就需要使用这个命令进行切换分支:
git checkout demo // 切换到demo分支
这时候你再进行提交,代码就提交到新创建的分支上了。
完成每天的代码任务后,需要将代码推送到远程仓库,这时候可以使用如下命令把你的代码提交到远程仓库:
- git add . // 将目前文件夹下所有的文件添加至暂存区
- git add ./student/main.go // 指定文件添加到暂存区
- git commit -m "提交了一段很牛的代码" // 对你刚才添加到暂存区的代码做一个描述
- git push //将暂存区的代码推送到远程仓库的分支上
当然,如果你没有切换分支的话,需要在git push之前切换分支,当然也可以通过以下命令推送至指定分支:
git push origin demo // 推送代码到远程仓库的demo分支上
提交完毕下班!!!!!!
git fetch 和git pull两个命令有点相似,都是获取远程仓库的最新代码,但是git pull会自动合并本地代码和远程仓库的最新代码。
现在有个场景,就是和你一起入职的还有一个菜鸟,你们俩拉取的是同一个仓库的同一个分支的代码,你俩一人负责一个功能,然后你们都需要提交到同一个分支上,这时候你可能会发现提交不了了!
这是因为另一个菜鸟他先提交了代码,远程仓库发生了变化,本地代码与远程仓库代码版本不一致导致无法提交代码,这时候就需要使用以下命令:
- git pull
- git pull origin demo:demo1 // 获取远程仓库的demo分支与本地的demo1分支合并
- git pull origin demo // 获取远程仓库的demo分支与当前分支合并
这时候你本地的代码会更新成最新状态,再次提交代码就没有问题了。
有一天你想看看自己提交了多少次代码,版本是什么,就可以使用git log 进行查看:
git log
你入职好几天,代码也迭代了好几次,这时候你的组长、主管认为你的最新代码写的不如上一个版本的代码,为了和你讲清楚到底是哪里不好,让你调出上个版本的代码。
你想:我都提交了,已经把上个版本的代码覆盖了,还怎么调出来?
首先你需要通过场景七中的命令查看你代码的历史版本,然后通过以下命令就可以进行回退了:
git reset --hard [commit版本号] //将代码回退到这个版本
将代码回退到某个历史版本以后,如果直接在这个历史版本修改代码再push会出现“push of current branch was rejected remote changes need to be merged before pushing”的问题,正确做法应该是在回滚的历史版本中,先git pull拉取远程仓库的最新代码,然后在这个最新版本中修改添加你的代码,这时候push就没问题了。
通常一个项目会有多个系统,在开发时,拉取了一个系统的代码后,往往这个系统会依赖另一个系统。例如系统A调用系统B的一个接口,那么你点进这个接口后,会跳转到mod文件中B系统的接口上。
这时候你需要编写A,B两个系统的代码,如果你只拉取了A系统代码,是不能再A系统的mod文件中对B系统代码进行修改的,只能拉取A,B两个系统的代码到本地进行开发,修改B系统的代码后需要提交到远程仓库上,在A系统中使用
go get gitxxx.xxxxxtech.com.cn/xxxx/B系统仓库名@分支名
就可以引用到B系统最新的代码了。
当然如果你觉得太麻烦了,可以在A系统的mod文件中将B系统的路径替换为本地路径,例如:
- replace (
- go get gitxxx.xxxxxtech.com.cn/xxxx/B系统仓库名 vxxxx[版本号] => D:/GOCODE/gitxxxCode/B系统
- )
这样只要你在本地修改了B系统的代码,那么A系统就立即可以引用B系统的最新代码。
今天算是第一次使用gitlab,之前也这么使用过GitHub,但是时间太久了忘记怎么配置了,所以在此做个笔记。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。