//MARK: - git库创建
//1.生成SSH Key
为什么要生成SSH Key? 请参考:什么是SSH?如果想和Git服务器正常通信,必须使用SSH Key,服务器端存储SSH公钥,客户端存储SSH私钥。
打开终端,输入以下代码
cd ~/.ssh //定位到ssh文件夹
提示`No such file or directory'说明还没有创建ssh文件夹
mkdir ~/.ssh //创建ssh文件夹
ssh-keygen -t rsa -C "注册Gitlab的email地址" //生成SSH秘钥
注意:这里有一个坑,提示Enter file in which you save the key的时候,是提示要保存的文件,而不是文件夹,如果输入的是文件夹,会报错。系统已经默认文件存为~/.ssh/id_rsa,直接确认即可。之后提示输入两次passphrase,即设置push密码,可设置,也可省略(如果设置passphrase,每次push代码到服务器时需要密码确认)。
输入完毕后提示创建成果,我们来检查一下:
cd ~/.ssh //定位到ssh文件夹
ls -l //查看文件详情
cat id_rsa.pub //查看公钥
查看公钥后,将公钥复制出来(就是那个ssh-rsa开头的一长串乱码,注意包含后面的邮箱地址),填写到刚刚打开的SSH Key设置页面里,并设置一个方便记忆的Title,填写完毕后,点击“Add key”,SSH Key就添加成功了。
//MARK: - 提交本地项目连到git
cd "本地项目的路径"
git init //初始化Git
git remote add origin git@gitlab.com:USERNAME/PROJECTNAME.git //将"USERNAME"和"PROJECTNAME"替换为自己的用户名和项目名
git add . //注意add和"."之间的空格
git commit -m 'commit description' //提交改动到本地库
git push -u origin master //push到Gitlab
//MARK: - 切换到新的git服务器
命令帮助:git remote -h
查看当前远程地址:git remote -v
删除远程地址:git remote remove origin
git remote add origin 远程地址//ssh不行的话缓存http
//MARK: - 分支基本操作 -
//MARK: 新建分支
$ git checkout -b 本地分支名 origin/远程分支名 //拉取远程分支并创建本地分支,使用该方式会在本地新建分支x,并自动切换到该本地分支x
$ git checkout -b branch//检出新的分支(新建分支)
$ git checkout -b myfeature develop//新建一个和develop分支一样的分支
git chechout -b aaa //本地创建 aaa分支,同时切换到aaa分支。只有提交的时候才会在服务端上创建一个分支
//MARK: 删除分支
//删除远程分支
$ git branch -r -d origin/branch-name
$ git push origin :branch-name
//删除远程版本
$ git push origin :br-1.0.0
//删除本地分支
$ git branch -d(-D) xxxxx//大写D是强制删除
//MARK: 重命名分支
$ git branch -m oldbranchname newbranchname//分支重命名本地
//重命名远程分支
在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。
例如下面的例子中,我需要把 devel 分支重命名为 develop 分支:
$ git branch -av
删除远程分支:
$ git push --delete origin devel
重命名本地分支:
git branch -m devel develop
$ git push origin develop
$ git push --delete origin devel
设置 Default Branch 为其他的分支(例如 master);
重新执行删除远程分支命令。
//MARK: 切换分支
$ git checkout master//切换回主分支
$ git checkout branch//切换分支
//MARK: 分支查看
$ git branch //列出本地已经存在的分支
$ git branch -a //列出本地分支和远程分支
$ git branch -r //列出远程分支
//MARK: 上传代码
$ git push origin test//把分支推到远程分支test
$ git push -u origin master
//MARK: 更新代码到本地
//正规流程
git status(查看本地分支文件信息,确保更新时不产生冲突)
git checkout – [file name] (若文件有修改,可以还原到最初状态; 若文件需要更新到服务器上,应该先merge到服务器,再更新到本地)
git branch(查看当前分支情况)
git checkout remote branch (若分支为本地分支,则需切换到服务器的远程分支)
git pull
若命令执行成功,则更新代码成功!
//快速流程-先保存本地的代码
上面是比较安全的做法,如果你可以确定什么都没有改过只是更新本地代码
git pull (一句命令搞定)
//MARK: 合并分支
完成的特性需要合并回develop:
$ git checkout develop
$ git merge --no-ff myfeature
$ git branch -d myfeature
$ git push origin develop
使用--no-ff确保总是新生成一个提交,避免丢失曾经存在一个特性分支的历史信息,也能够方便地看出哪些提交属于同一个特性。