Git的正确使用姿势与最佳实践|青训营

72 阅读3分钟

先在官网地址上安装Git,Workapace : 工作区 Index/Stage :暂存区、Repository :仓库区(或本地仓库)Remote :远程仓库 工作区(Workapace)  程序员开发改动的地方,是你当前看到的,也是最新的。  平时开发就是拷贝远程仓库中的一个分支,并基于该分支进行开发。在开发的过程中就是对工作区的操作。 暂存区(Index/Stage)  .git目录下的index文件,暂存区会记录 git add 添加的文件的相关信息(文件名、大小...),不保存文件实体。可以使用git status查看暂存区的状态。暂存区标记了你当前工作区中,哪些内容是被Git管理的。  当你完成某个功能需要提交到远程仓库中,那么第一步就是要将更改通过git add提交到暂存区,被Git管理。 本地仓库(Repository)  保存了对象被提交过的各个版本,比起工作区和暂存区的内容,它更旧一些。  git commit后同步index的目录树到本地仓库,方便从下一步通过git push同步本地仓库与远程仓库。 远程仓库(Remote)  远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步。我们在提交之前需要git pull使本地仓库拉下代码。 HEAD  HEAD,它始终指向当前所处分支的最新的提交点。你所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变。 一、新建代码库

在当前新目录新建一个git代码库 gitinit新建一个目录,将其初始化为First代码库git init 新建一个目录,将其初始化为First代码库 git init [project-name] 下载一个项目和它的整个代码史 $ git clone [url] 二、配置

Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置) 显示当前的Git配置 gitconfiglist编辑Git配置文件git config --list 编辑Git配置文件 git config -e [--global] 设置提交代码时的用户信息 gitconfig[global]user.name"[name]"git config [--global] user.name "[name]" git config [--global] user.email "[email address]" 三、增加/删除文件 添加指定文件到暂存区 gitadd[file1][file2]...添加指定类型文件(使用通配符方式批量提交)到暂存区git add [file1] [file2] ... 添加指定类型文件(使用通配符方式批量提交)到暂存区 git add *.html 添加指定目录到暂存区 gitadd[dir]添加当前目录下的所有存在更改文件到暂存区(包括提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件)git add [dir] 添加当前目录下的所有存在更改文件到暂存区 (包括提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件) git add . 添加已经被add的文件且存在更改的文件(Git根路径以下所有文件)到暂存区 (提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)) gitaddu添加所有变化(Git根路径以下所有文件)到暂存区(包括提交新文件(new)、被修改(modified)文件以及被删除(deleted)文件)git add -u 添加所有变化(Git根路径以下所有文件)到暂存区 (包括提交新文件(new)、被修改(modified)文件以及被删除(deleted)文件) git add --all gitaddA//简写添加每个变化前,都会要求确认,对于同一个文件的多处变化,可以实现分次提交git add -A // 简写 添加每个变化前,都会要求确认,对于同一个文件的多处变化,可以实现分次提交 git add -p 删除工作区文件,并且将这次删除放入暂存区 gitrm[file1][file2]...停止追踪指定文件,但该文件会保留在工作区git rm [file1] [file2] ... 停止追踪指定文件,但该文件会保留在工作区 git rm -cached [file] 改名文件,并且将这个改名放入暂存区 gitmv[fileorigin][filerename]改名文件夹,并将此更改上传gitmvfoldfoldernewfoldergitaddunewfolder(u选项会更新已经追踪的文件和文件夹)gitcommitm"changedthefoldernamewhaddup"删除文件夹,并将此更改上传git mv [file-origin] [file-rename] 改名文件夹,并将此更改上传 git mv -f oldfolder newfolder git add -u newfolder (-u选项会更新已经追踪的文件和文件夹) git commit -m "changed the foldername whaddup" 删除文件夹,并将此更改上传 git rm -r --cached [dir] gitcommitm删除了dirgit commit -m '删除了dir' git push -u origin master 四、代码提交 提交暂存区到仓库区 gitcommitm[message]提交暂存区的指定文件到仓库区git commit -m [message] 提交暂存区的指定文件到仓库区 git commit [file1] [file2] ... -m [message] 提交工作区自上次commit之后的变化,直接到仓库区 gitcommita提交时显示所有的diff信息git commit -a 提交时显示所有的diff信息 git commit -v 使用一次新的commit,替代上一次提交,如果代码没有任何变化,则用来改写上一次commit的提交信息 gitcommitamendm[message]重做上一次commit,并包括指定文件的新变化git commit --amend -m [message] 重做上一次commit,并包括指定文件的新变化 git commit -amend [file1] [file2]... 五、Git 协作 git push :将本地Git仓库中的代码推送到远程服务器上。 git pull :从远程服务器上拉取最新的代码。 git fetch :从远程服务器上拉取最新的代码。 git merge :将远程分支的代码合并到本地分支中。