一、经常用到的命令行
速查表
拉取线上新仓库
git clone XXX (XXX为git仓库地址,克隆线上代码)
提交本地代码
git pull (每次提交前都必须先拉取线上分支)
git add . (git提交,点代表当前目录下的所有文件)
git commit -m 'xxx' (暂存到本地, xxx为提交的描述)
git push (添加到线上仓库)
!!!每次提交前,先 pull 再提交
当拉取线上代码失败时候
git stash (将本地变更过的代码,隐藏)
git pull (然后再拉取线上代码)
git stash pop (将刚刚隐藏的代码释放) 最后本地代码和线上代码合并了, 然后再检查一下有无冲突 解决完冲突 再 git pull 再提交
!!!每次提交前,先 pull 再提交
版本回退
git log (查看提交日志)
git reset --hard id (根据id回退到指定版本)
git push origin HEAD --force (推送到本地到远程仓库)
git reflog (查看命令操作的历史)
创建、切换分支
git checkout -b dev (创建dev分支,然后切换到dev分支)
//git checkout命令加上-b参数表示创建并切换,相当于以下两条命令
git branch dev (创建dev分支)
git checkout dev (切换到dev分支)
将本地分支上传到远程分支
git add .
git commit -m "提交的信息"
git remote add origin 远程仓库地址
git push -u origin 分支名
拉取远程分支
git branch -a
git checkout -b dev origin/dev (dev是远程分支名称)
合并分支
//1、查看分支
git branch
//2、切换本地分支到master
git checkout master
//3、拉取远程master代码(!!!重要)
git pull origin master
//4、合并dev分支到master
git merge dev
-------
git merge master/dev (合并分支,将dev合并到主分支,然后再次 git push一次即可完成分支合并)
查看所有分支
查看所有本地分支
git branch -a
查看远程仓库的分支
git branch -r
删除分支
删除远程分支
git push origin --d dev
删除本地分支 dev
git branch -d dev
拉取远程分支
//情况一:目前本地还没拉代码,直接拉分支dev代码
git clone -b dev git@gitlab.yopoint.vip:ac/YoPointSwift.git
//如果出现错误提示:
//fatal: 'origin/ac_branch' is not a commit and a branch 'dev' cannot be created from it
// 同步一下仓库
git fetch
//情况二:本地已经拉取了代码,想拉取远程某一分支的代码到本地
git checkout -b dev origin/dev 拉取远程分支到本地(方式一)
git fetch origin dev:dev 拉取远程分支到本地(方式二)
更新远程分支列表
更新远程分支列表
git remote update origin --prune
二、经常遇到的问题
初次使用,需设置正确名字和邮箱
//查看git的用户
git config --list
// 设置用户名和邮箱
git config --global user.name "xxx" //xxx你的名字
git config --global user.email "xxx@xxx.com" //xxx你的邮箱
git权限问题,You do not have permission push to this repository
如图,提示You do not have permission push to this repository,则表示你没有推送到此存储库的权限,叫你们的仓库管理员给你添加一个开发者权限
分支被保护问题,[remote rejected] master -> master (pre-receive hook declined)
如图,提示[remote rejected] master -> master (pre-receive hook declined),则表示你没有远程访问master的权限
原因:权限问题,Develop角色默认下没有远程访问master的权限
解决方案:
方案一:在项目的【Setting】中的【Protected branches】可以设置哪些分支是被保护的,默认情况下【master】分支是处于被保护状态下的,develop角色的人是无法提交到master分支的,在下面的【Developers can push】打上钩就可以了。
方案二:使用其他分支push 入