Git使用小结
——————————2020.7.28更新————————————
今天试了一下从本地上传文件到gitlab
首先三部曲
git init git add -A /xx git commit -m 'first push'
然后和仓库建立关联
git remote add origin ssh://git@XX.git
然后在本地创建公钥
ssh-keygen -t rsa -C "your_email@example.com"
会提示公钥在本地的位置:C:\Users\dell\.ssh
这时候把id_rsa.pub文件中的所有内容复制到gitlab的shh下
然后先把远程仓库拉下来,注意,这里由于本地Git版本问题,要加上后缀
git pull origin master --alow-unrelated-histories
之后就可以
git push -u origin master
——————————2020.7.22更新——————————————
目前因为235机器损坏,因此在219上新建了和git仓库的关联,并且对XXXDARTS项目新建了分支XXXDARTS
git branch XXXDARTS
然后用git branch查看一下,发现已经有了一个master主分支,和另一个分支,如果在push的时候遇到主分支的问题,则可以切换到分支:
git checkout XXXDARTS
之后代码都会上传到上面去,Push的时候要注意是push -u origin XXXDARTS
对Git和GitLab的使用作一个小结
GitLab基于Git,可以作为团队开发项目使用,因此通常会有一个主分支master和其他分支,因此项目成员中任意一人不能随意push到主分支中,容易引起混乱;
但如果项目中暂时只有自己一个人,那就可以操作master分支。
- 首先在服务器或者本地的项目里搞个公钥出来
ssh-keygen -t rsa -C "your_email@example.com" #Gitlab的账户邮箱
如果在服务器上,则在主目录下,会有.ssh文件,里面应该产生了id_ras和id_rsa.pub两个文件,比如我服务器的路径是hyq/.ssh,用命令ls -a 即可查看所有隐藏文件
2. cat id_rsa.pub打开这个文件,然后复制所有内容到GitLab的Profile Settings下的SSH Keys,这样就可以建立服务器和Gitlab的无密码连接了(默认已经在Gitlab上新建项目了)
3.进入到项目目录下
git init #初始化 git add -A #把工作区文件放到暂存区,相当于缓存 git commit -m '描述' #把暂存区文件提交到分支
git remote add origin ssh://git@xx.xx.xx.xx:端口号/username/project.git #关联仓库
这里有几个要注意的地方,
- 一个是GitLab上传的东西以文本文件为主,包括py,txt,log,org,csv等等,较大的数据模型以及缓存文件等其他文件或者目录就不要上传了,
因此可以写个.gitignore文件,里面把要忽略的文件写上去,比如我的.gitignore文件:
train、test、validation是目录,里面放着数据,因此后缀是\,best.mdl、nohup.out和__pycache__是文件,直接写上去进行。
- 还有一个是万一不小心已经add了所有文件,那么这时再新建.gitignore已经来不及了,就要用以下命令
git rf --cache -A #把缓存区的文件删除,工作区的文件并不会删除
或者
git rf --cache '目录名'
对于文件来说,则是
git rm --cached '文件名'
一定要带上--cached,不然只是git rm或者git rf的话,不仅删除暂存区的文件,也把工作区的文件删除了
- 第三点,如果一开始建立的连接是http,想要变成ssh,那么必须先删除关联
git remote rm origin
然后,再建立新的关联
4. 上传项目
git push -u origin master
这里有几个要注意的地方
- 如果在GitLab上已经作了改动,比如新建了README.md文件,那么必须先pull下来,然后再push
git pull origin master
5.删除Git内容
假如不小心把本地/服务器上的一个文件夹推送到了Gitlab仓库上,且已经commit了,此时想要删除远程仓库,但不想删除本地/服务器上的文件,此时可以如下操作:
git rm -r --cached /src/MixPath_NAS #假设推送的是/src/MixPath_NAS文件夹,--cached不会把本地的MixPath_NAS删除 git commit -m 'delete /src/MixPath_NAS' git push -u origin master
6.回滚
6.1
回滚可以让本地已经修改并commit的内容回到任意版本,只需要代码:
其中版本号通过git log查看
git reset --hard 版本号
但是要注意的是,通过一次回滚从事件n到事件n-1,要是再想回到事件n,通过git log查看发现已经找不到事件n的版本号,此时可以通过
git reflog
查看
比如v2是最新的n事件,但是通过git log只能看到“添加源代码”,此时再次
git reset --hard c298e9f
就能回滚到事件n了
6.2 git 撤销,放弃本地修改
git checkout -- filename
此命令用来放弃掉所有还没有加入到缓存区(也就是git add)的内容修改和整个文件删除
6.3 适用于撤销已经add后的本地修改
git reset HEAD filename
7.修复线上紧急bug
创建一个新的分支用于修复bug,修复完成后合并到主分支中去