Github和gitlab等等一系列的分布式代码托管服务器方便我们开发人员在小组内开发项目,说起分布式代码托管就给大家提一下另外一代码托管SVN,当然他不是分布式的,而是集中式的代码托管,有兴趣的可以查阅资料了解一下,在这里我将着重给大家介绍github这种代码托管如何使用及常用命令。
在使用 git 命令行之前需要下载安装软件
官方网站:https://git-scm.com/
window 或者 mac 等其它版本自行下载
使用方法一:安装后在项目文件夹中右键菜单会有个 Git Bash Here 打开就可以使用命令行操作
使用方法二:可以在项目文件夹地址栏中输入 cmd 打开 DOS命令行操作
使用前请先设置自己的用户名和邮箱,才能正常的操作下面的命令:
// 全局配置 git config --global user.name '用户名' git config --global user.email '邮箱' git config --global user.password '密码' // 本地配置 git config --local user.name '用户名' git config --local user.email '邮箱' git config --local user.password '密码'
常用的命令行大致总结如下:
git clone 代码地址
注释:将代码库从线上拉到本地
git status
注释:查看本地被修改过的文件
git add --all
注释:将本地修改过所有所有的文件添加到缓存区
git add 路径/文件全名
注释:将本地修改过某一个文件添加到缓存区
git commit -m '提交代码注释'
注释:将缓存区的代码提交并添加注释,如遇到语法校验不通过,可在 commit 后加上 --no-verify 来乎略
git pull
注释:将线上他人最新提交的代码同步到本地 (PS:强烈推荐在 git push 之前操作,如果没有严重的冲突一般都会正常合并)
git push
注释:将 commit 之后的代码推送到线上
git reset
注释:如果我上面使用 git add --all 之后又后悔了,想把缓存区的文件全部撤回来,使用 git reset 就可以实现
git reset 路径/文件全名
注释:同上!可以将某个文件从缓存区撤回来,不会影响其它文件状态
git checkout .
注释:修改了一大堆文件发现没有实现功能,想复原回去,git checkout . 命令可以将所有修改撤销 (注意:后面的 . 不能少)
git checkout 路径/文件全名
注释:功能同上,将某个修改过的文件复原,就算这个文件被删除也能捞回来
git reset --hard HEAD~n
注释:代码回滚,n 使用数字代表回滚几步。(注意:如果提交代码遇到不可挽回的冲突,可将修改的文件拷贝出来,回滚一个稳定版本,再 git pull 一下,最后再手工解决冲突。否则只能将整个项目删掉重新拉一次,非常耗时耗精力)
git branch
注释:查看当前分支
git branch -a
注释:查看所有分支
git checkout 分支名
注释:切换到指定分支
git checkout -b 新分支名
注释:新建一个新的分支
补充:在将新建分支推到远程分支以后,在执行 git pull 或 git push 会报出以下提示
git branch --set-upstream-to=origin/<branch> dev (意思是需要做远程分支关联)
只需要这样执行即可轻松搞定:
git branch --set-upstream-to=origin/新分支名 新分支名 (最后的新分支名中间是有空格的)
git push origin 分支名
注释:将指定分支推到远程
git branch -d 分支名
注释:删除指定分支(当前分支不能是被删除分支)
git push origin --delete 分支名
注释:删除指定的远程分支
git merge 分支名
注释:将指定分支合并到当前分支(当前分支不能是被合并分支)
git fetch 更新分支
注释:假如有同事创建了新的分支推向了远程,在本地发现切不过去,也不能通过 git branch -a 查询到,这时候就可以先通过 git fetch 更新一下,再切换到该分支。
在本地初始化并关联到远程空项目
git init
在当前目录下创建一个隐藏的 git 配置目录
git config --local user.name "用户名"
这是基于项目设置的用户名,如果不配置则读取系统全局信息 (可选)
git config --local user.email "邮箱名"
这是基于项目设置的邮箱名,如果不配置则读取系统全局信息 (可选)
touch README.md
创建一个初始化文件 (如果是个空目录,则无法提到远程仓库)
git add README.md
将上面创建的文件添加到缓存区
git commit -m "创建了初始化文件"
初始化项目
如果下面两行操作执行失败,出现类似 Please make sure you have the correct access rights and the repository exists 样的提示!这是因为 git 服务器没有关联到储存在本地的 ssh 密钥,可手动重新创建并同步到服务器即可。运行 Git Bash 命令如下:
ssh-keygen -t rsa -C "username" 这里的 username 是指 git 管理版本上的用户名
提示: Enter file in which to save the key (/Users/username/.ssh/id_rsa): 出现提示直接回车
提示: /Users/用户名/.ssh/id_rsa already exists.Overwrite (y/n)? 继续按回车走起
提示: Enter passphrase(empty for no passphrase) 回车干起来
完成之后在 C:\Users\用户名\.ssh 目录下生成了 id_rsa 和 id_rsa.pub 两个文件
用记事本打开 id_rsa.pub 文件复制全部内容到 git 服务器配置 ssh 处,再继续运行下面的命令即可。
git remote add origin 远程仓库地址
将当前目录关联到远程仓库
git push -u origin master
将 master分支推送到远程仓库
在本地初始化并关联到远程已有项目
git init
在当前目录下创建一个隐藏的 git 配置目录
git config --local user.name "用户名"
这是基于项目设置的用户名,如果不配置则读取系统全局信息 (可选)
git config --local user.email "邮箱名"
这是基于项目设置的邮箱名,如果不配置则读取系统全局信息 (可选)
git remote add origin 远程仓库地址
将当前目录关联到远程仓库
git pull origin master --allow-unrelated-histories
将远程有已仓库内容强制同步到本地(不带参数会报错 fatal: refusing to merge unrelated histories)
补充:假如每次 git push 都要求验证身份信息,就直接执行这句命令:
git config --global credential.helper store
只针对日常使用问题,总结的仓促,如果不足之处请指正!
发表评论