git详细介绍

211 阅读3分钟

初始仓库

git init

初始化完成会提示initialized empty Git respository

git

提交代码

git add 文件名
git commit -m 提交信息

提交的文件名必须在你初始化的git仓库中存在,如果不存在会提示not match any files

git

上图说明没有1.js文件,需要新建一个1.js文件再提交

git

第一次提交会默认提交到master分支上,在没有提交之前是没有master分支的。

接下了要了解一下我们提交代码要经历哪些过程:

  1. 没有通过git add 文件名提交的文件在工作区
  2. 执行了git add 文件名但没有通过git commit -m 提交信息提交的文件在暂存区
  3. 执行完了git commit -m 提交信息提交的的文件在历史区

三个地方都有代码,如果某次修改了文件,还可以回退到上一次提交的版本。

回退版本

之前操作是建立了一个空的1.js 文件并提交到了master分支上,现在在该文件中写入var a = 1; 的代码。如果要返回我之前那次空文件的状态,可以执行git checkout 文件名命令。如果你已经执行了git add 文件名的操作,可以执行git checkout 版本号 文件名。 如果你已经执行了了git add 文件名git commmit -m 提交信息,也可以执行git checkout 版本号 文件名来回退到之前的版本。

关于如何查看版本号只要输入git log即可。

git
在暂存区回退代码(也就是该文件执行了git add 文件名的操作)

git

在历史区回退代码(也就是该文件执行了git add 文件名git commmit -m 提交信息的操作)

git

解决冲突

代码冲突大多是建立了多个分支,如果代码合并的时候有冲突要自己手动解决。

通过git branch 分支名创建分支

git
现在我通过git branch dev1创键了dev1分支,再通过git branch dev2创建了dev2分支,这两个分支都是基于master分支创建的,所以现在dev1和dev2会有master分支的所以代码。接下来就是分别切换到到各自的分支上工作。

通过git checkout 分支名 切换分支

我通过git branch dev1切换到dev1分支,在1.js写入代码var a = 1; 然后提交代码通过git add dev1git commit -m 在dev1提交

git
我通过git branch dev2切换到dev2分支,在1.js写入代码var b = 1; 然后提交代码通过git add dev2git commit -m 在dev2提交

git

现在切换回来mater分支,因为刚才是基于master分支创建,master是主分支,在主分支中合并。

通过git merge 分支名合并分支

git
我通过git merge dev1合并了分支dev1会提示Fast-forward

git
我通过git merge dev2合并分支dev2会提示CONFLICT,出现冲突了。

打开1.js文件解决冲突,出现如图提示

git
选择性删除代码,留下需要的代码
git

解决冲突后需要从新提交代码即可。