git基本操作
Last updated
Was this helpful?
Last updated
Was this helpful?
多人开发分支,绝对【严禁】使用git push -f
或git push --force
。
这个的意思是,不管远端分支如何,直接把本地的代码覆盖掉。这样很可能让别人提交的代码消失,是绝对不能做的。
在master上不能用reset --hard
要让master的提交记录一直往前。因此版本回滚用revert
master是默认的主分支,其他都是副分支
打开命令行,在本地文件夹中,输入
下载完成后,该文件夹中就会多一个名为xiao
的文件夹。这就克隆完成了。
分支的新建是基于当前分支的。比如你先在master,那么切出来的分支,代码就和master一模一样。
你可以在上面更改,而不会改变master的代码。
如切换到master,就是git checkout master
本地的仓库有三部分:
工作目录:拥有实际文件
暂存区(index):缓存区域
HEAD:指向最后一次提交结果
它会显示modify了哪些、new了哪些等等信息。
提交分为三步:
添加文件到暂存区
当前看得到的代码,叫工作目录。暂存区类似于一个缓存。
如果你想全部提交,可以
这样不仅能把全部内容提交到暂存区,也能把删除的情况也提交上去
添加文件到本地仓库
这是提交到了本地仓库,并更改了仓库的HEAD指向。下一步就是提交到远端的仓库。
那么为啥不是直接add到远端呢?因为可以多次add,合并到一次commit。
本地仓库推到远端仓库
其实是要说明推送到哪个远端的仓库
不过我们在第一次
push
的时候,会提示让输入这行代码:这个的意思,就是连接到远端的master,因此以后的
push
就不需要加origin master了
撤销全部add:
撤销某个add:
回到上一个版本,且保留工作空间的改动代码
可以看到所有操作记录,包括被删掉的
复制前面的一串乱码,然后在命令行
修改完后,会发现推不上远端。git的提示是,本地的版本落后于远端,因此不能推上去
因此要用
这会在push之前检查一下,有没有其他人也在推,如果有,需要pull一下最新的代码,再push上去。
而我们所禁止的git push -f
,是不管其他的就直接推上去。就可能导致其他人的修改丢失。
单纯的git pull
,是把远端代码直接覆盖本地的HEAD,有可能会影响你的commit内容
而—rebase
的意思是根据时间线来修改本地代码,能保留你的改动。
rebase的操作,会让子分支的提交线只有一根,会更加好看且容易理解。
如果遇到冲突,那么命令行前面会是一堆乱码
此时进去解决冲突,然后
如果还是乱码,那么继续解决冲突并continue
,直至乱码消失,变成你的分支名。
如果有乱码且没冲突那么可以跳过
切换到master,然后
--no-ff
的意思是,保留提交线分叉图。
这能告诉其他人,一系列的提交都是为了实现同一个目的。
删除本地:
删除远端
存当前操作
查看所有存档
取出存档
这个stash@{xxx}
,是需要在list里面查看,并复制的
先查看log的提交记录
可以看到,每次的commit都会有一串乱码在前面。
复制你想要去的commit,前面的乱码。
就能进入到对应的commit
比如说要,那么需要获取其ssh:git@47.97.170.255:xiao/xiao.git