git 常用命令使用
这里就不多说 git 的安装,和 git 的配置了,这些网上教程一大把。
这篇文章主要讲的是从零开始把本地项目推到远程仓库上?
案例
初始化
首先在本地新建一个文件夹 git-demo
,在项目根目录执行
# 把该文件夹初始化为一个仓库
git init
然后在该项目里进行各种开发即可。
这里比如新建了一个文件 a.js
// a.js
console.log('a.js')
console.log('a 提交')
提交
首先在这提一下 git
几个概念:
workspace
:工作区,即你的项目Index
:暂存区,你可以比喻为一个内存repository
:仓库区或本地仓库remote
:远程仓库
它们的关系👇
先将所有文件改变文件提交到暂存区
# 添加当前目录的所有文件到暂存区
git add .
注意:执行这条命令,控制台是没有任何反馈的。
扩展
当然,你不想将所有文件到提交到暂存区,可以使用一下命令👇
# 添加指定文件到暂存区
git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
git add [dir]
根据关系图清楚知道,下一步就是将 暂存区的内容 提交到 本地仓库。
# 提交暂存区到仓库区
git commit -m [message]
扩展
# 提交暂存区的指定文件到仓库区
git commit [file1] [file2] ... -m [message]
# 提交工作区自上次commit之后的变化,直接到仓库区
git commit -a
# 提交时显示所有diff信息
git commit -v
同步/推送
修改的文件也全部提交到本地仓库了,接下来就是如何将本地仓库推送到远程仓库上。
WARNING
假如你现在直接使用 git push
,你会收到一条错误。因为 git
不知道你要把本地仓库推送到哪个远程仓库上,它不知道远程仓库的地址。
因此,我们先在 git
代码托管平台创建一个远程仓库。比如 gitee、github等
这里我们使用 gitee
,这样怎么新建也不多讲了,完全的傻瓜式。
然后在打开新建的仓库,复制它的远程链接。如 👇
# 增加一个新的远程仓库,并命名。你可以理解为本地仓库与远程仓库连接
git remote add [shortname] [url]
扩展
# 显示所有远程仓库
git remote -v
# 显示某个远程仓库的信息
git remote show [remote]
然后将本地仓库推送到远程仓库
# 上传本地指定分支到远程仓库
git push [remote] [branch]
扩展
# 强行推送当前分支到远程仓库,即使有冲突
git push [remote] --force
# 推送所有分支到远程仓库
git push [remote] --all
因为项目大多数情况下不是一个人进行开发的,因此别人提交的文件,我们要在修改文件前,把它从远程仓库同步到本地仓库中。
# 取回远程仓库的变化,并与本地分支合并,不指定分支则默认当前分支
$ git pull [remote] [branch]
冲突问题
也因为经常一个项目是由多人维护的,因此难免会遇到冲突。
造成冲突的原因是什么呢?
比如 有 a,b 两个人同时维护一个项目,项目中有一个
demo.js
文件,a 人员修改后推送到 远程仓库中。b 人员也修改了demo.js
,但他在修改前没有同步远程仓库最新文件,导致修改demo.js
是 a人员修改前的文件;然后 b人员 修改后推送就会报错,提示文件冲突。
根据提示它让我们先执行 git pull
, 执行结果如下👇
提示 b.js
合并冲突,自动合并失败。
然后我们打开 b.js
,可以看到 git
将冲突的部分显示出来,然后我们选择需要保留的部分,手动修改后重新提交推到远程即可。
分支
这里只是列举部分常用的命令。更多的 git 命令,请打开文章头部链接。
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支,等价于git branch [branch] + git checkout [branch]
git checkout -b [branch]
# 重置暂存区与工作区,与上一次commit保持一致
git reset --hard
# 查看分支历史提交记录
git reflog show -date=iso [branch-name]