初始仓库
git init
初始化完成会提示initialized empty Git respository
提交代码
[git add 文件名]
[git commit -m 提交信息]
提交的文件名必须在你初始化的git仓库中存在,如果不存在会提示not match any files
上图说明没有1.js
文件,需要新建一个1.js
文件再提交
第一次提交会默认提交到master分支上,在没有提交之前是没有master分支的。
接下了要了解一下我们提交代码要经历哪些过程:
没有通过[
git add 文件名]
提交的文件在工作区执行了[
git add 文件名]
但没有通过[git commit -m 提交信息]
提交的文件在暂存区执行完了[
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 add 文件名]
的操作)
在历史区回退代码(也就是该文件执行了[git add 文件名]
和[git commmit -m 提交信息]
的操作)
解决冲突
代码冲突大多是建立了多个分支,如果代码合并的时候有冲突要自己手动解决。
通过[git branch 分支名]
创建分支
现在我通过[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 dev1]
和[git commit -m 在dev1]提交
我通过[git branch dev2]
切换到dev2分支,在1.js写入代码var b = 1;
然后提交代码通过[git add dev2]
和[git commit -m 在dev2提交]
现在切换回来mater分支,因为刚才是基于master分支创建,master是主分支,在主分支中合并。
通过[git merge 分支名]
合并分支
我通过[git merge dev1]
合并了分支dev1会提示Fast-forward
我通过[git merge dev2]
合并分支dev2会提示CONFLICT
,出现冲突了。
打开1.js文件解决冲突,出现如图提示
选择性删除代码,留下需要的代码
解决冲突后需要从新提交代码即可。