Git常用命令:
一般工作流程如下:
- git clone ssh 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
- 在自己的机器上根据不同的开发目的,创建分支,修改代码。
- 在单机上自己创建的分支上提交代码。
- 在单机上合并分支。
- 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
- 生成补丁(patch),把补丁发送给主开发者。
- 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
- 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
git中clone和pull的区别:
clone 是本地没有 repository 时,将远程 repository 整个下载过来。
pull 是本地有 repository 时,将远程 repository 里新的 commit 数据(如有的话)下载过来,并且与本地代码merge。
git 上传代码:
- git clone ssh 克隆远端代码
- cd 进入克隆的项目
- 将项目代码拷贝到该目录中
- add 添加到暂存区
- git commit -am "注销"
- git push 推送到远程仓库
Git 工作区、暂存区和版本库概念:
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
Git创建仓库:
mkdir python2020(目录) 创建目录
cd python2020 进入目录
shell python2020 > > git init 初始化(将目录变成版本库)
git 查看是否已经安装
yum install git 安装或者更新
cd 进入root
ls -a .git/ 查看git仓库
touch text.txt 创建一个新文件
git add test.txt 将新文件添加到暂存区
git commit -m "描述添加的意义" 将暂存区的文件添加到仓库
'''
git add file file2 可以一次提交多个文件到暂存区,
git commit -m 将暂存区里面的所有文件添加到HEAD(head头部)仓库里面
'''
git status 查看仓库当前的状态
git diff filename 查看仓库具体的改动
git reset --hard 【commid id】 版本回退
git log 查看当前历史版本
git log --pretty=oneline 以行显示当前日志 # 输出格式为: commid id "日志"
git reflog 查看总历史版本
分支管理:
git branch 分支名称 # 创建分支
git branch # 查看目前所在分支
git branch -a # 查看所有分支
*表示 在当前分支
git checkout 分支名称 #切换到某个分支
git checkout -b free(分支名称) #创建并切换到某个分支
git merge bug # 目前在dev分支下,一起合并分支bug
git log --graph --oneline --decorate --all # 查看整个分支情况
git branch -d 分支名称 # 删除分支
branch[brɑːntʃ] 分支 checkout[ˈtʃekaʊt] 结账 merge[mɜːdʒ] 合并
git 创建分支和删除分支:
# 创建新分支
git branch 分支名称
# 创建分支并切换到新分支
git checkout -b 分支名称
# 查看远程分支
git branch -r
# 删除本地分支
git branch -d 分支名称
# 删除远程分支
git push origin :分支名称
git stash使用方式:
当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。
由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。
总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。
这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。
git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。
git合并分支成功,但是push失败
经过分析查证发现是自己没有合并代码的权限导致的,所以接下来就是修改权限就可以了。
一般我们作为developer,是没有master权限的,只有master才有合并代码权限。
修改方法,联系管理员,打开gitlab ===> setting ===> 修改成员角色,就ok了。