git实际使用操作
从0开始
-
首先登陆gitlab账号
-
找到SSH key位置
-
切换到git版本控制,生成SSH key
- ssh-keygen -t rsa -C "邮箱"
- cat .ssh/id_rsa.pub # 查看公钥 并复制
-
将公钥复制到gitlab/setting/SSH Keys/Key, Title可以为空,点击Add key即可
-
然后在本地初始化一个git仓库
git init
-
将本地仓库与远程仓库关联起来
-
git remote add origin 'git地址'
-
-
在本地创建分支并与远程分支关联
-
# 查看远程的所有分支 git fetch
-
# 创建并关联分支,本地分支名最好与远程分支名一样,这里拉的是远程仓分支的代码 git checkout -b 本地分支名 origin/远程分支名
-
-
ojbk,本地分支就可以与远程分支进行数据push pull交互了
-
touch 1.txt git add 1.txt git commit -m "测试" # 将1.txt推送到远程仓库,推送本地分支以后会自动更新到远程仓库 git push origin 本地分支名
-
- git status # 查看当前仓库的状态,commit以后就算是提交了,就看不到了
- git branch # 查看当前所在分支
- git branch -a # 查看所有分支
- git checkout 分支名称 # 切换到某个分支
- git checkout -b 分支名称 # 创建新分支
- git remote -v # 查看远程库信息
合并分支:
-
切换到主分支
git checkout release/3.1.3
-
拉取最新代码
git pull
-
切换到次分支
git checkout feature/portal
-
拉取次分支最新代码
git pull
-
再次切换到主分支
git checkout release/3.1.3
-
在主分支上 合并 次分支代码
git merge feature/portal
-
合并完成后推送到git上
git push origin feature/portal
合并某个分支上的单个提交到主分支:
-
切换到主分支
git checkout release/3.1.5
-
拉取最新代码
git pull
-
切换到次分支
git checkout feature/screen
-
拉取次分支最新代码
git pull
-
再次切换到主分支
git checkout release/3.1.5
-
找到次分支feature/screen上 某个提交 标识(SHA)
4f1f4e767
-
在主分支上 合并 次分支上某个提交
git cherry-pick 4f1f4e767
-
合并完成后推送到git上
git push origin release/3.1.5
bug分支处理:
当前状态:项目在master主分支上跑,突然出现了bug,要紧急修复,而我在Dev分支上开发新功能。leder要求在两个小时内解决bug。
解决方案:在自身的dev分支上,先用git stash把当前工作状态隐藏起来,然后切换到要修复bug的分支master,在master的分支上创建并切换一个新分支bug-fix, 在新分支上修复bug ,(修改文件,提交代码),bug修复完成后切换到主分支master,再合并修复好bug的分支,使用命令git merge --no-ff -m "bug已修复" bug-fix
, 最后再删除修复的bug分支git branch -d bug-fix
,切换回工作分支继续干活git switch dev
, 查看刚才隐藏的工作状态中的文件git stash list
, 恢复工作文件并删除隐藏的文件git stash pop
.
多人协作:
-
首先要本地分支feature_new 并与远程分支realse/3.9.0/创建远程关联
git checkout -b feature_new origin/realse/3.9.0/
-
编写代码
-
将代码推送了远程:
git push
-
推送失败的话要先拉取代码
git pull
-
拉取代码也失败的话,原因是需要指定本地的feature_new分支与远程的分支realse/3.9.0/链接,
git branch --set-upstream-to=origin/realse/3.9.0/ feature_new
-
git pull
有冲突,解决冲突,没冲突就拉取成功
总结:
-
本地新建的分支如果不推送到远程,对其他人就是不可见的;
-
从本地推送分支,使用
git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交; -
在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致; -
建立本地分支和远程分支的关联
git branch --set-upstream-to=origin/远程分支名(release/3.0.9) 本地分支名
;或者git push --set-upstream origin 本地分支名
推送当前分支并将远端设置为上游(会报不匹配任何分支,没有上游,,想推送成功,前提是远程仓库必须有这个本地分支名的分支才能推送成功) -
从远程抓取分支,使用
git pull
,如果有冲突,要先处理冲突。