Pro Git 学习笔记文档地址:Pro Git原文地址:PRO GIT 学习笔记1、Git起步初次运行Git前的配置用户信息git config –global user.name “your user name"git config –global user.email “your email address"文本编辑器设置默认的文本编辑器:git config –global core.editor emacs查看配置信息git config –list2、Git基础创建Git仓库在工作目录中初始化新仓库git init克隆现有仓库git clone urlurl分ssh和https两种,推荐使用ssh。检查当前文件状态git status跟踪最新文件git add 文件名或*.js/css/html…或.忽略不想提交的文件cat .gitignore查看已暂存和未暂存的更新git diffgit diff –cached提交更新git commit -m “提交备注信息"跳过使用暂存区域git commit -a “提交备注信息"在提交时使用git commit -a就会把已跟踪的已暂存文件一起提交,跳过git add步骤,即两个命令进行合并。移除文件git rm从已跟踪文件清单中移除并删除工作目录中的指定文件,先使用git status查看跟踪文件清单,再使用git rm进行精准移除。强制移除使用git rm -f,但不推荐使用。从远程仓库中删除文件,使用:git rm –cached 文件名/.文件后缀/文件夹…移动文件对文件重命名或移动文件,可以使用:git mv file_from file_to查看提交历史git loggit log -p -2-p选项展开显示每次提交的内容差异,用-2显示最近的两次更新。单词层面的对比,使用:git log -p -U1 –word-diff这个命令在代码检查中较少使用,在图文编辑中出现较多。显示摘要信息,使用:git log –stat其他有用的命令:–pretty选项可以指定使用完全不同于默认格式的方式展示提交历史,用oneline将每个提交放在一行显示,这在提交数很大时非常有用:git log –pretty=onlineformat可以定制要显示的记录格式:git log –pretty=format:"%h - %an, %ar : %s"常用的格式占位符写法及其代表的意义选项说明%H提交对象(commit)的完整哈希字串%h提交对象的简短哈希字串%T树对象(tree)的完整哈希字串%t树对象的简短哈希字串%P父对象(parent)的完整哈希字串%p父对象的简短哈希字串%an作者(author)的名字%ae作者的电子邮件地址%ad作者修订日期(可以用-date=选项定制格式)%ar作者修订日期,按多久以前的方式显示%cn提交者(committer)的名字%ce提交者的电子邮件地址%cd提交日期%cr提交日期,按多久以前的方式显示%s提交说明添加ASCII字符串表示的简单图形git log –pretty=format:"%h %s” –graphgit log 命令支持的选项选项说明-p按补丁格式显示每个更新之间的差异。–word-diff按 word diff 格式显示差异。–stat显示每次更新的文件修改统计信息。–shortstat只显示 –stat 中最后的行数修改添加移除统计。–name-only仅在提交信息后显示已修改的文件清单。–name-status显示新增、修改、删除的文件清单。–abbrev-commit仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。–relative-date使用较短的相对时间显示(比如,“2 weeks ago”)。–graph显示 ASCII 图形表示的分支合并历史。–pretty使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。–oneline–pretty=oneline –abbrev-commit 的简化用法。限制输出长度按照时间作限制的命令:–since和–untilgit log –since=2.weeks搜索条件–author 显示指定作者的提交–grep 搜索提交说明中的关键字–all-match 同时满足这两个选项搜索条件的提交其他常用的类似选项选项说明-(n)仅显示最近的 n 条提交–since, –after仅显示指定时间之后的提交。–until, –before仅显示指定时间之前的提交。–author仅显示指定作者相关的提交。–committer仅显示指定提交者相关的提交。具体示例:git log –pretty="%h - %s” –author=gitster –since=“2018-10-01” \ –before=“2008-11-01” –no-merges – t/撤消操作修改最后一次提交git commit –amend取消已经暂存的文件git reset HEAD 文件名取消对文件的修改这条命令谨慎使用git checkout – 文件名远程仓库的使用查看当前的远程库git remote显示对应的克隆地址git remote -v添加远程仓库git remote add [shortname] url抓取仓库信息git fetch [shortname]从远程仓库抓取数据此命令会从远程仓库抓取数据到本地git fetch [remote-name]抓取克隆的远程仓库的更新数据git fetch originfetch命令只是把远程仓库的数据抓取到本地,并不会自动合并到当前工作分支推荐使用的拉取远程仓库数据,并进行数据合并操作的命令git pull推送数据到远程仓库git push origin master查看远程仓库信息git remote show [remote-name]远程仓库的删除和重命名重命名远程仓库git remote renamegit remote rename vue react移除远程仓库git remote rm vue打标签显示已有的标签git tag设定条件进行搜索git tag -l “v1.4.2.“新建标签轻量级标签git tag含附注的标签git tag -agit tag -a v1.4 -m “my version 1.4"查看相应标签的版本信息git show v1.4签署标签git tag -sgit tag -s v1.5 -m “my signed 1.5 tag"验证标签git tag -v [tag-name]git tag -v v1.4.2.1后期加注标签忘记了加注标签,只要在打标签的时候跟上对应提交对象的校验和即可git tag -a v1.2 9fceb02分享标签git push origin v1.5一次推送所有本地新增标签git push origin –tags技巧和窍门自动补全windows系统下连续按Tab键Git 命令别名git config –global alias.ci commitgit config –global alias.st statusGit 分支新建testing分支git branch testing切换到testing分支git checkout testing分支的新建与合并以上两个命令进行合并git checkout -b testingGit会把工作目录的内容恢复为检出某分支时它所指向的那个提交对象的快照。它会自动添加、删除和修改文件以确保目录的内容和当时提交时完全一样。合并提交内容git mergegit checkout mastergit merge hotfix删除工作分支git branch -d hotfix分支的合并查看冲突 git status调用可视化的合并工具解决冲突git mergetool分支的管理查看各个分支最后一个提交对象的信息git branch -v查看哪些分支已被并入当前分支git branch –merged查看尚未合并的分支git branch –no-merged利用分支进行开发的工作流程长期分支特性分支远程分支同步远程服务器上数据到本地git fetch origin 推送本地分支git push origin master在远程分支上分化出新的分支:git checkout -b serverfix origin/serverfix跟踪远程分支git checkout -b sf origin/serverfix删除远程分支分支的衍合整合分支方法git mergegit rebase从一个特性分支中再分出一个特性分支的历史git rebase –onto master server clientgit checkout mastergit merge server衍合的风险一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。服务器上的 Git协议Git可以四种主要的传输协议进行数据传输:本地协议、SSH协议、Git协议和HTTP协议。在服务器上部署 Gitgit clone –bare my_project my_project.git把裸仓库移到服务器上未完待续…