2019-09-20 Git基本用法和常用指令

先概括的介绍一下git

git主要用于网络多人协作开发,首先有一台服务器,安装了git服务端程序;
开发人员安装一个git客户端;git客户端安装后会有一个 git bash.exe,这个就是我们
执行git命令的入口;一般来说是在本地仓库里右键菜单就有;

git大概有以下概念:
远程仓库:
位于服务器,通常对应一个开发工程;

本地仓库:
位于客户端本地的一个和远程仓库对应的仓库,初始可以把远程仓库clone过来;

远程分支:
大概就是一个仓库可以对应多个分支,每个分支有一份独立的镜像工程文件;初始一个仓库只有一个主分支,开发人员可以切分支,刚切出来的分支和主分支一模一样(以主分支为模板,以哪个分支为模板就和哪个分支一样),开发人员可以在自己的分支上开发,而不会影响主分支或者其他人切的分支;开发好了可以一次性合并到主分支;大概这样。

本地分支:
就是和远程分支对应的本地的分支,开发人员只能在本地分支上开发,开发好了推送到远程分支,多次反复,最后远程分支再一次性合并到远程主分支;
当然也可以直接在本地主分支上开发,然后直接推送到远程主分支,怎么玩都行;

下面给出git常用指令以解释:

1.git status
查看当前分支的修改状态,包括添加了哪些文件,修改了哪些文件,删除了哪些文件;

2.git branch
查看当前所处的本地分支,同时会列出本地所有的分支;可以在本地分支自由切换,一旦切换;整个工程代码就被替换为切后的分支的代码,再切回去,又变回去;之所以能随意的变来变去,是因为本地有个仓库,记录了所有分支的代码;

  1. git checkout <分支名>
    切换到 <分支名> 对应的分支;一旦切换,整个工程文件代码全被替换掉;然后所做的一切修改都对应为该分支的修改;

//以下操作都是对当前所处分支而言

4.git add <文件名>
把某个文件 添加到缓冲区 中

5.git add -u
把所有修改的文件(就是git status 展示出来的那些修改,显示为红色,表示未添加到缓冲区)添加到缓冲区中
一旦添加,再查看git status,那些文件就变成绿色了,表示已经添加到缓冲区

6,git commit -m "注释说明"
把缓冲区中所有修改提交到本地仓库;-m后面引号里是注释,git commit指令强迫使用者要加注释,
如果你不加-m"注释", 回车之后会自动进入 vim 输入状态强迫你写注释 ;你写完之后 输入 :q 再回车退出vim编辑状态(个人感觉这个设定比较那什么。。。)

7.git push <远程主机名> <本地分支名> <远程分支名>
远程主机名通常默认为 origin; 其中本地分支名可以省略,如果省略,默认为当前所处的分支;
意思就是把本地仓库该分支的修改全部提交到远程服务器的相应分支;
例如:
git push origin remote_branch

8.git pull <远程主机名> <远程分支名>
把远程分支的内容拉下来并合并到本地当前所处的分支 , 可能会产生冲突,产生冲突,需要解决冲突,再commit;再pull下看是否还有冲突,没有就ok了;
git pull等价于 git fetch + git merge ,本人没有试过只fetch不merge什么效果;或者有什么特殊用处,可能可以比较以一下本地分支和远程分支的代码差异吧,避免冲突过多;

9,git checkout .
这个指令用于撤销所有当前分支的本地修改;也就是说我在本地分支上做了一大堆修改,没有add,也没有commit,更没有push;忽然发现自己全改错了,想回到从前,就执行这个就ok.

10, git checkout <文件名>
类似9,把某个文件的修改恢复从前;

11.git reset --soft HEAD^
撤销当前分支最近一次的commit操作;也就是恢复到git add但没有git commit的状态;
--soft的意思就是保留git add操作; HEAD^表示撤销到最近一次commit前状态;也可以写为
HEAD1;如果进行了2次commit,想撤回到这2次之前,则可以用HEAD2; 3次,4次都类似;

12.git reset HEAD
撤销当前分支所有add的操作(等价于清空缓冲区)

13.git reset <文件名>
撤销某个文件的add操作;

综上所述,git常用指令基本就这些,一般流程就是:

1.git pull 更新代码
2.git add 添加修改到缓冲区
3.git commit -m 将缓冲区一次性刷到本地仓库
4.git push 本地仓库推送到远程仓库

如果中途有误操作,就用git reset; 其中 git checkout 根据后面跟的不同有2个作用,一个是切分支,一个是撤销本地修改;

git push 可以推送到一个远端不存在的分支,这样会在远端新建一个分支,相当于创建分支了;

Remark:
可见git 上传比svn多了两个步骤, 一个是 git add ,一个是 git commit ,这个主要意义在哪里?

先说git commit,
首先git 比svn多了一个本地仓库的概念,这个好处就是无网开发,在没有联网的环境下,我可以执行commit操作到本地仓库;而svn的commit就是直接提交到远程仓库;
(不过吧,个人觉得,你提交到本地仓库,不是相当于没提交吗?和没提交有啥区别呢?可能git作者linus(linux创始人)的思想就是,我提交了就有个记录,同时相当于在本地做了一次备份,虽然没有实际提交到远程,但是还是可以做记录,做备份的)这就是git commit和本地仓库的意义;

再说git add;
git add实际上就是一个缓冲的作用,大概意思就是我可以分多次add,最后一次性commit,每次commit操作系统都会做备份,并且有一条commit记录;有可能实际上我并不需要做那么多备份,也不需要有那么多上传记录;可能就是我先改好了几个文件,我想先标记一下这些文件改好了,就add一下,然后过了一会又改好了几个,再add一下;最后一次性commit,表示这些改动都是相关的一个功能;当然中间可能我发现问题,我撤销某个文件的add;总之你不管怎么add怎么撤销都不会真的commit,等到一切都准备好了,确认无误了,再commit一次就ok了,这样记录也比较清晰;大概就是这个意思。

至于git更多用法,作者尚未接触,欢迎读者补充!如果有作者理解不到位的地方,也欢迎读者指正!

你可能感兴趣的:(2019-09-20 Git基本用法和常用指令)