通过一次实习可以接触到太多自己的盲区,之前只是会在vscode里面傻瓜式git,看到实际的工作环境,才发现,还是要掌握命令的形式,毕竟都是在linux系统上操作git,还用图形界面,有点拉了吧
Git命令学习
几个区域
工作区 :当前编辑的文件
暂存区 :暂存,等待提交到本地仓库
本地仓库:包含了上一次提交到远程仓库时刻之前的所有代码
远程仓库:包含所有push的代码
配置
配置用户
git config --global user.name "username"
git config --global user.email "email"
获取已配置的信息
git config list
创建远程仓库
git remote add origin url
在当前仓库添加远程仓库,并指定缩写为origin
创建本地仓库
git init
暂时省略中间的一系列操作
本地仓库推送到远程仓库
git push [origin] [branch]
将本地分支推送到远程仓库,这里的origin就是上面添加仓库时指定的缩写
常用命令
git init
初始化代码仓库
git clone [url]
下载一个代码库
git add [file]
将文件从工作区添加到暂存区;文件被修改后,commit前也需要再次git add
rm [file]
从工作区删除文件,文件还保留在暂存区
git rm [file]
从工作区和暂存区删除文件
git rm --cached [file]
从暂存区删掉文件,文件还保留在工作区
git commit -m [message]
提交暂存区到仓库
git commit [file1] [file2] -m [message]
提交暂存区的指定文件到仓库
git commit --amend -m [message]
如果代码没有任何变化,就用来改写上一次commit的提交信息
git commit --amend [file1] [file2]
如果代码没有任何变化,就用来改写上一次commit的提交信息
git status
查询状态,可以获取代码仓库的变化
git log
查询commit的信息
git log --oneline
一行显示commit的信息
git log --stat
显示每次commit发生改变的信息
分支
git branch
列出本地分支
git branch -r
列出远程分支
git branch [branch-name]
新建分支branch-name,并停留在当前分支
git checkout -b [branch-name]
新建分支branch-name,并切换到该分支
git checkout [branch-name]
切换到该分支,并更新工作区 ;实际中,一般根据哈希值来进行切换
git checkout -
切换到上一个分支
git branch --set-upstream [branch] [remote-branch]
在现有分支和远程分支之间建立追踪关系,
git merge [branch]
合并指定分支到当前分支
git cherry-pick [commit]
选择一个commit合并进当前分支
git branch -d [branch]
删除分支
git branch -dr [branch-name]
删除远程分支
远程仓库
git remote add pb https://github.com/fanqieEgg/exerciseForGit.git
在当前仓库添加远程仓库,并指定缩写为pb
git remote -v
查看远程仓库
git push [origin] [branch]
将本地分支推送到远程仓库,这里的origin就是上面添加仓库时指定的缩写,例如pb
git fetch [remote]
下载远程仓库的所有变动
标签
git中可以给仓库中某一个历史提交打上标签,例如v1.0
git tag
列出所有标签
git tag [tag]
在当前分支新建一个轻量标签
git tag -a [tag] -m "message"
在当前分支新建一个附注标签
git tag -r [tag]
删除tag
轻量标签与附注标签的区别?
附注标签显示了打标签者的信息、打标签的日期时间、附注信息
git tag -l "v1.8.5*"
列出所有包含v1.8.5
的标签
总结
正常来说,应该只有一个主分支Master
,然后有一个开发分支Develop
,在开发完毕后,切换到主分支,将开发分支merge到主分支上面;
一般的,我们可以采用快进式合并fast-forward merge
,就是从主分支生成一个新的节点,然后直接指向Develop