通过一次实习可以接触到太多自己的盲区,之前只是会在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

参考

git官方文档
参考文章