阅读原文什么是Git?Git是一个免费的开源分布式版本控制系统,旨在处理从小到大的项目以提高速度和效率;Git可以帮助我们管理我们的代码,记录历史,只要代码提交给Git,它就永久不会丢失,并且可以随时“遍历”(回到上一个版本);可多终端共享,在团队协作中,多人操作同一个文件时,可实现自动合并(模块化、组件化)和标记冲突,具有强大的分支管理系统。Git和SVN的区别SVN:集中式,需要中央服务器,所有的代码拉取和提交都在中央服务器上,一旦中央服务器或网络出现故障,代码就无法拉取和提交,需要不断回退建立中央服务器服务器以防止代码丢失。Git:分布式。在有中央服务器的同时,每个开发者在本地都有自己的本地仓库,版本库完整,不用担心代码丢失。Git存储代码变化的快照,更新代码的速度比SVN要快。Git安装Windowshttps://git-scm.com/Mac如果你安装了Xcode自带的Git,https://developer.apple.com/x...你可以安装Homebrew,它是wmac的包管理器,https://brew.sh/下面是两个界面美化插件:OhMyZSH:http://ohmyz.sh/iTerm2:https://www.iterm2.com/Linux命令1、打印工作目录pwd2,创建文件夹mkdir文件夹名3.更改路径,输入盘符:cdd:进入文件夹:cd文件夹名返回上层目录:cd..输入某路径:cd路径我要输入a不知道路径的文件夹,可以直接将文件拖到命令窗口,路径会自动识别。4.查看文件列表lsls-al下面的命令添加-al参数可以查看隐藏文件。5.创建文件touch文件名6.移动文件mv文件/文件夹路径将文件或文件夹移动到输入的路径。7、查看文件内容cat文件名8、删除文件/文件夹rm-rf文件夹名rm文件名-rf表示递归删除,加*为参数会递归删除整个文件夹的内容,rm-rf*(谨慎使用)。9.清除命令窗口clear10。查看命令历史直接在命令行查看:history将当前Git命令历史写入文件:history>filename11.使用vi编辑器编辑文件vifilename进入编辑模式:i进入命令模式:Esc保存退出::wq强制退出::q!12、使用命令编辑文件输入文件内容:echocontent>filename添加内容:echocontent>>filename当使用echo编辑一个不存在的文件时当已有文件存在时,新建一个创建文件并将内容编辑到文件中,而触摸创建一个空文件。Git的本地操作Git在管理文件时,所有的文件都有三种状态,修改、暂存、提交。Git由本地仓库、工作区、暂存区、版本库三部分组成。Git管理的文件夹下有一个名为.git的隐藏文件夹。对应关系如下:修改→工作区已暂存→暂存区(在.index文件下。查看配置信息:gitconfig--list配置用户名:gitconfig--globaluser.name》你的name"配置邮箱:gitconfig--globaluser.email"youremail"2.初始化要初始化的Git仓库在Git的文件夹中执行如下命令,告诉Git哪个文件夹是Git管理的。一个项目初始化一次并且不能嵌套gitinit3.查看Gitstatusgitstatus文件是红色的,表示已经被修改,文件名是绿色的,表示已经添加到暂存区4.添加到暂存区gitadd文件名gitadd.gitadd-A.和-A两个参数都提交到暂存区,.只监听修改和添加文件的变化,-A监听修改和添加的文件,删除5.删除暂存区gitrm--cached文件名gitrm--cached。-r第一个命令是删除某个文件的暂存区。当参数为.时,删除所有暂存区,所以需要加上参数-r代表递归删除。6、提交到版本库从暂存区提交到版本库:gitcommit-m"版本信息"从工作区直接提交到版本库(之前需要添加暂存区):gitcommit-a-m"版本信息"7.查看提交日志gitlog8,比较工作区、暂存区、版本库工作区和暂存区比较:gitdiff工作区和版本库比较:gitdiff分支名暂存区和版本库比较:gitdiff--缓存9。撤消操作gitcheckout文件名gitcheckout。撤销操作是将暂存区覆盖到工作区,并丢弃当前工作区的修改内容。该参数是用当前工作区覆盖整个暂存区。一旦撤销,您将无法返回到之前的工作区。当你不小心将当前工作区的错误代码提交到暂存区时,可以使用如下命令将暂存区回滚到之前的暂存区,并且只能回滚一次。gitresetHEAD文件名10、回滚版本查看所有版本号:gitreflog按版本号回滚版本:gitreset--hard版本号回滚到上一个版本:gitreset--hardHEAD^将某个版本文件回滚到工作空间:gitcheckout版本号文件名回滚版本会用当前仓库选择的版本覆盖暂存区和工作区。11、分支操作查看分支:gitbranchGit刚刚初始化和管理的文件夹必须提交一次到版本库(root-commit:rootcommit)之后才会有master分支master,否则即使创建了新的分支,将无法切换回master。创建分支:gitbranch分支名切换分支:gitcheckout分支名创建并切换分支:gitcheckout-b分支名删除分支(需要切换出要删除的分支):gitbranch-D分支名新创建的分支和mainbranchmaster还是在同一个区域,新创建的文件只是真正的和提交到新分支的版本库分离。如果分支工作区发生变化,则不能直接切换到其他分支。您可以提交更改或暂时存储更改。如果临时存储更改(使用临时存储区覆盖工作空间),当您等待切换回分支时,恢复临时存储。这里所说的暂存,并不是之前的代码提交到暂存区,因为当前分支工作区的代码会变成切换分支工作区的代码,导致当前分支工作区的修改丢失。这里的暂存类似于注册修改,切换回分支时恢复。暂存变更:gitstash恢复暂存内容:gitstashpopmergebranch:将指定分支合并到当前分支,所以分支开发完成后,merge分支需要先切换回master主分支.使用gitmerge指定的分支名称查看分支合并的图:gitlog--graphgitlog--graph--oneline红线代表主分支,绿线代表新创建的分支,*on分支代表提交到存储库的节点。--oneline参数表示提交信息显示为一行。12.解决冲突。创建分支后,分支和master主分支分别向版本库提交代码。这时候切换回master主分支,合并后的分支就会有冲突。人工处理后,重新提交到暂存区,提交到版本库。//代码冲突<<<<<<
>>>>>>>开发分支(传入改动)git操作remoterepository远程仓库可以是Github、Gitee(码云)、Coding或者中央服务器等,以下是常用的免费仓库地址。可以在首页注册一个账号:Github:https://github.comGitee:https://gitee.comCoding:https://coding.net1。使用WebStrom处理需要过滤提交的文件夹编辑器编辑代码时,会自动生成根目录下的.idea文件夹,Mac开发时根目录下的.DS_Store文件夹,安装依赖存放在项目开发期间的node_modules文件夹中。这样的文件夹在上传代码到远程仓库或中心服务器时是不应该上传的,所以在上传之前应该过滤掉。在根目录下创建.gitignore文件,记录上传时忽略的文件夹。内容(可根据需要配置)如下:文件:.gitignore.idea.DS_Storenode_modulesGit在上传时会自动忽略空文件夹。假设你要上传一个名为public的空文件夹,你需要在文件夹中新建一个名为.gitkeep的文件(名字随意,最好有语义),这样要提交的空文件夹就不再是空的了。2.关联远程仓库gitremoteaddorigin远程仓库地址3.查看关联远程仓库gitremote-v4,删除关联远程仓库gitremoterm地址别名地址别名指的是上面的origin,或者其他名称,必须对应到要删除其关联的地址别名。5.将代码推送到远程仓库gitpushoriginmastergitpush-uoriginmaster如果加上-u参数,以后再次提交时可以省略地址别名和分支名,直接执行以下命令即可执行提交。gitpush6,从远程仓库拉取代码提交代码时,如果直接提交到远程仓库,当前代码会被覆盖到远程仓库。如果之前别人提交过代码到远程仓库,会造成远程仓库的冲突,所以一般在提交代码前,拉取远程仓库的代码,并与本地代码合并,并新建一条历史记录生成。如果有冲突,则手工处理冲突,然后统一提交到远程仓库。拉取不合并代码(配合merge,不常用):gitfetchoriginmaster拉取并合并代码(常用):gitpulloriginmaster7,创建gh-pages分支发布静态页面涉及远程仓库网站操作取以Github为例,其他仓库类似:在项目中创建一个名为gh-pages的分支;提交分支到在线仓库;找到提供给您的仓库网站的设置并切换到github-pages;点击栏目上方的地址可以访问我们的静态页面。gitcheckout-bgh-pagestouchindex.htmlgitadd.gitcommit-m"commitinformation"gitpushorigingh-pages8,拉取别人的项目到本地gitclone项目地址projectaliasabovecommandprojectalias是可选的,相当到重命名项目根文件夹。9.询问别人的项目在远程仓库网站上进入别人的项目页面;点击发行选项;输入问题的标题和描述,然后单击提交;项目所有者可以回复或关闭问题。10.改别人的项目代码。别人项目首页有fork图标,操作名称为Fork;fork是当前项目下的一个副本。若代码有更新,则不再相应更新;使用clone命令克隆自己的地址拉取项目到本地运行;默认是Git仓库,有源地址,修改后可以提交代码到自己的仓库;只有Fork关系才能修改别人的代码,点击Newpullrequest发送提交请求;点击创建拉取请求按钮,填写提交标题和提交详情,确认提交;项目所有者可以在自己的项目页面上的Pullrequest菜单中查看和处理提交;点击Closepullrequest关闭,点击Mergepullrequest同意提交合并。如果一个团队中的其他人需要操作同一个项目,上面的过程是非常繁琐的。项目所有者可以通过在设置的协作者选项中添加其他人的帐户或用户名来为项目添加贡献者。添加的人具有最大权限。GUI界面在目前的VSCode、WebStorm等前端开发编辑器中,都集成了Git,可以直接点击按钮进行操作,无需使用命令行。这种操作Git的界面称为GUI界面。个人建议尽量少。使用GUI界面,命令行是基础,或者输入更多的命令行,这就完美了。