git常用的基础操作
最近内网安装了 gitlab 用以代码托管,鉴于有些同事对于 git 的生疏,写了这篇文档,顺便发出来共享。ssh链接cat ~/.ssh/id_rsa.pub//查看本地是否有已生成的SSH key,存在会返回以'ssh-rsa'开头的字符串cd .ssh//进入.ssh路径下ssh-keygen -t rsa -C "your use...
最近内网安装了 gitlab 用以代码托管,鉴于有些同事对于 git 的生疏,写了这篇文档,顺便发出来共享。
ssh链接
cat ~/.ssh/id_rsa.pub //查看本地是否有已生成的SSH key,存在会返回以'ssh-rsa'开头的字符串
cd .ssh //进入.ssh路径下
ssh-keygen -t rsa -C "your username like email address here" -b 4096 //生成ssh的公钥和私钥
cat id_rsa.pub //查看公钥,将以'ssh-rsa'开头的字符串复制到剪贴板
登录 gitLab,在顶部导航栏用户头像的下拉菜单里点击’设置’,进入用户设置界面,然后点击’ssh密钥’,将复制好的内容填好,点击’Add key’即可
git常用命令
git init // 创建一个本地仓库
git add [.][filename][--all]//. 是追踪变化的文件,filename是追踪单个文件,--all是追踪所有文件
git commit -am '....' // 将 add 和 commit 合为一步, 但只能 cover 已被追踪的文件,新建的文件不能被提交
git status // 查看git处于什么状态
git push [origin dev]//本地同步到远程[单独同步dev分支]
git pull origin master // 拉去远程仓库的master分支与本地master合并 等同于'git fetch origin master'和'git merge origin/master'
git fetch origin master // 拉取远程仓库的master分支,不与本地master分支合并
git merge origin/master // 将远程仓库的master分支与本地库中的master分支进行合并
git branch --set-upstream master origin/next // 手动建立本地master分支与远程仓库中next分支的追踪关系
git stash // 将目前未提交的所有更改储藏在脏工作目录中,并回复到干净的目录状态
git stash pop // 取出脏目录中的修改并继续
git pull origin master --allow-unrelated-histories //两个仓库具有不同commit时,如确定是同一个远程库,可以用‘--allow-unrelated-histories’
git rm --cached sftp.json //取消追踪sftp.json文件
本地项目pro托管到 gitLab 操作如下:
登录 gitLab 新建项目 backer
复制gitLab项目的ssh地址 ‘ssh://git@d547bd18c8b1:20022/front-end-engineer/backer.git’
将docker地址手动改成ip地址 ‘ssh://git@192.168.77.221:20022/front-end-engineer/backer.git’
第一种方法:
cd pro //进到pro路径下
cd .. //进到pro项目上一级目录
git clone ssh://git@192.168.77.221:20022/front-end-engineer/backer.git
cd backer //这是通过clone backer生成的本地文件夹
cp -fr ../pro/* ./ //将pro中的文件拷贝到backer下,并覆盖原文件
git add * //对本地代码进行追踪
git commit -m "提交描述文字 like initial commit, create all files"//将本地代码提交到本地分支
git push origin master //推送本地的master分支到远程仓库的master分支,如果远程不存在master分支,将会自动创建
第二种方法:
cd pro //进到pro路径下
git init //初始化一个本地的git仓库
git remote add origin ssh://git@192.168.77.221:20022/front-end-engineer/backer.git //本地仓库关联到远程仓库
git add . //对本地代码进行追踪
git commit -m "提交描述文字 like initial commit, create all files"//将本地代码提交到本地分支
git push origin master //推送本地的master分支到远程仓库的master分支,如果远程不存在master分支,将会自动创建
git分支
分支是协同作业的基础,每一个分支本质上是指向某一个 '一系列不同时刻的文件快照’的指针。一般情况,分支分为以下几种:
- master分支:已发布或将发布的代码,非常稳定
- develop分支:持续开发的代码
- next分支:测试稳定版本,或后续开发版本
- iss##分支:短期分支,修复bug并通过测试后可以合并到主分支
master用于与线上同步,develop用于开发,
开发新功能时,基于develop,创建本地分支,命名规则: feature/xxxxxx, 开发完成后,并入develop
修改线上bug时,基于master,创建本地分支,命名规则:hotfix/xxxxx, 修改完后,并入master, 并同步到develop
git分支命令
git branch -a //查看所有分支
git checkout branch //切换到branch分支上
git checkout -b b1 //本地仓库新建分并切换到支b1
git branch checkout -b new_branch origin //在远程仓库新建一个分支命名为new_branch
git branch -d branch //删除名为branch的分支 -D为强制删除
git branch -m old_branch new_branch //将old_branch重命名为new_branch
git merge new_branch //合并new_branch到当前分支
分支合并流程示例
hotfix/login 为刚修改好的代码,要将其并入develop分支
git branch //列出当前版本库中所有分支
git checkout develop //切换到develop 分支
git pull origin develop //拉去最新代码
git merge hotfix/login //并入更新
git commit -am 'merge hotfix/login' //提交临时分支,记录状态
git push origin develop //同步到远程
git忽略提交
git 忽略提交的文件目录设置在 .gitignore 目录内,其规则如下:
所有空行或者以 # 开头的行都会被 Git 忽略。
可使用标准的 glob 模式匹配。
匹配模式可以以(/)开头防止递归。
匹配模式可以以(/)结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
# 所有已 .o 或 .a 结尾的文件都被忽略
*.[oa]
# 虽然 .a 文件被忽略,但是 lib.a 不能被忽略
!lib.a
# 只忽略当前目录中的 todo 文件,而不管其他文件夹下如何
/TODO
# 忽略 build 目录中的所有文件
build/
# 忽略 doc 直属的 .txt 文件,而不包括 doc/server/arch.txt
doc/*.txt
# 忽略 doc 目录中的所有 .pdf 文件
doc/**/*.pdf
git stash
...advertisement.html...inCoding //正在master分支完成广告推送功能页面,发现登录的bug
git stash //隐藏目前所有的更改
...login.html...inCoding //修改登录注册的bug
git commit -am 'fix login bug in a hurry'
git stash pop //取出之前隐藏的修改,继续开发
#甲修改提交了login.html,而不知道的你也正在修改login.html,当你执行pull的时候报错了,告诉你远程与你本地有不同的更改相冲突
git stash //隐藏本地的修改
git pull //再次拉去远程
git stash pop //解压
// 手动解决冲突的代码后再次提交
远程分支 b1 和 master 存在冲突的情况下 如何将 b1 合并到 master?
git fetch origin //将远程仓库代码拉取到本地 不进行 merge
git checkout -b b1 origin/b1 //本地仓库新建分支b1并和远程的b1关联
// 本地审查修改冲突的代码
git checkout master //切换到master分支
git merge --no-ff b1 //合并b1到master上,并保留之前的分支历史
git add .
git commit -m 'merge b1 to master'
git push origin master
git 版本回退
当你因为误执行了某些操作,导致工作区一团乱麻而且无从下手,那你可以尝试版本回退
// 如果你还没有提交,可以这样来做
git reset --hard HEAD // 回到上一次 commit 的状态,就是说清空你工作目录里所有的改动
git checkout -- hello.vue // 只回复 hello.vue 的状态
//如果你已经提交了,那么你再回到上一次提交的状态其实也不能帮忙,那么你可以尝试
git revert HEAD // 撤销最近的一次提交,也就是回到上次 commit 之前的状态
git revert HEAD^ // 撤销上上次提交
Git 远程管理
git remote add origin 'url' //关联远程库
git remote rm origin //删除关联的远程库
git remote -v //查看远程库
git remote rename old new //修改远程库地址
git 查看所有的提交
git log --pretty=oneline
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)