12306网站开发公司,做公司网站怎么做手机版,施工企业领导带班记录,青岛队建网站本笔记是阅读《git pro》所写#xff0c;仅供参考。 《git pro》网址https://git-scm.com/book/en/v2 git官网 https://git-scm.com/
一、git起步
1.1、检查配置信息 git config --list查看所有的配置以及它们所在的文件
git config --list --show-origin可能有重复的变量名…本笔记是阅读《git pro》所写仅供参考。 《git pro》网址https://git-scm.com/book/en/v2 git官网 https://git-scm.com/
一、git起步
1.1、检查配置信息 git config --list查看所有的配置以及它们所在的文件
git config --list --show-origin可能有重复的变量名因为 Git 会从不同的文件中读取同一个配置例如/etc/gitconfig与~/.gitconfig。 这种情况下Git 会使用它找到的每一个变量的最后一个配置。 你可以通过输入 git config key来检查 Git 的某一项配配置
1.2、提交用户名
git config --global user.name John Doe提交邮箱
git config --global user.email johndoeexample.com说明 如果使用了 --global 选项那么该命令只需要运行一次因为之后无论你在该系统上做任何事 情 Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时可以在那个项目目录下运 行没有 --global 选项的命令来配置。
1.3、配置默认文本编辑器
git config --global core.editor emacs在 Windows 系统上必须指定可执行文件的完整路径
git config --global core.editor C:/ProgramFiles/Notepad/notepad.exe -multiInst -notabbar -nosession -noPlugin1.4、获取帮助三种方式
git help verb
git verb --help
man git-verbgit help
二、git基础 通常有两种获取 Git 项目仓库的方式 1、将尚未进行版本控制的本地目录转换为 Git 仓库 2、从其它服务器 克隆一个已存在的 Git 仓库。
2.1、git添加一个尚未进行版本控制的项目目录 进入尚未进行版本控制的项目目录执行 git init
git init该命令将会创建一个 .git 的子目录这个子目录含有初始化的Git仓库中所有的必须文件这些文件是Git的骨干。
2.2、git clone 克隆现有的仓库 git clone 命令可以获取已有仓库的拷贝Git 克隆的是该 Git 仓库服务 器上的几乎所有数据而不是仅仅复制完成你的工作所需要文件。 当你执行 git clone 命令的时候默认配置 下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。事实上如果你的服务器的磁盘坏掉了你通常 可以使用任何一个克隆下来的用户端来重建服务器上的仓库 虽然可能会丢失某些服务器端的钩子hook设 置但是所有版本的数据仍在 克隆仓库的命令是 git clone url克隆仓库并重命名 git clone url my_project_name2.3、记录每次更新到仓库 刚才有了一个真实项目的Git仓库 并从这个仓库中检出了所有文件的工作副本。当对文件进行修改时想要记录时应该将其提交到仓库。 工作目录下的所有文件只有俩总状态已跟踪和未跟踪。已跟踪的文件是指那些被纳入版本控制的文件再上一次快照中有它们的记录在工作一段时间后它们的状态有可能是已修改、未修改或者已放入暂存区。简而言之已跟踪就是Git已经知道的文件。 工作目录中除已跟踪外的其它文件都属于未跟踪文件他们既不存在于上次的快照记录中也没有被放入暂存区。初次克隆某个仓库时工作目录中的所有文件都属于已跟踪文件并处于未修改状态因为Git刚刚检出他们而你并未编辑过他们。 编辑过某些文件之后由于上次提交后对它们做了修改Git将它们标记为已修改文件。在工作时可以选择性的将这些修改过的文件放入暂存区然后提交所有已暂存的修改反复如此。 文件的状态变化周期 2.4、检查当前文件状态
可以用 git status 命令查看文件处于什么状态 查看目录下所有文件状态
git status查看单个文件或者目录
git status filename这说明有该文件在暂存区。 这说明你现在的工作目录相当干净。换句话说所有已跟踪文件在上次提交后都未被更改过。 此外上面的信息还表明当前目录下没有出现任何处于未跟踪状态的新文件否则 Git 会在这里列出来。 最后该命令还显示了当前所在分支并告诉你这个分支同远程服务器上对应的分支没有偏离。 现在分支名是“master”这是默认的分支名。 使用 git status -s 命令或 git status --short 命令你将得到一种格式更为紧凑的输出。
git status -sgit status --short在项目下创建一个新的 README 文件。 如果之前并不存在这个文件使用 git status 命令你将看到一个新的未跟踪文件
echo My Project README
git status在状态报告中可以看到新建的 README 文件出现在 Untracked files未跟踪的文件 下面。 未跟踪的文件意味着 Git 在之前的快照提交中没有这些文件Git 不会自动将之纳入跟踪范围除非你明明白白地告诉它“我需要跟踪该文件”。
2.5、跟踪新文件 使用命令 git add 开始跟踪一个文件 。命令格式
git add filenamegit add 命令使用文件或目录的路径作为参数如果参 数是目录的路径该命令将递归地跟踪该目录下的所有文件。可以用它开始跟踪新文件或者把已跟踪的文件放到暂存区还能用于合并时把有冲突的文件标记为已解决状态等。 将这个命令理解为“精确地将内容添加到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。
跟踪文件README并查看文件状态文件状态显示已跟踪并处于暂存状态 只要在 要提交的变更Changes to be committed 这行下面的就说明是已暂存状态。 如果此时提交那么该文件在你运 行 git add 时的版本将被留存在后续的历史记录中。
2.5、暂存已修改的文件 修改已跟踪的文件并提交文件。打开一个文件并修改使用git status查看。 使用 git add添加到暂存区就可以commit。 如果将文件放入暂存区又修改后git status该文件会同时出现在在暂存区和非暂存区。Git 只 会暂存了运行 git add 命令时的版本。如果commit只会运行最后一次git add的版本而不是最后修改的版本。所以修改完文件以后需要及时git add 把最新版本重新暂存起来。 2.6、忽略文件 如果文件不想被Git管理又不想出现未跟踪文件列表。可以创建一个名 .gitignore 的文件。文件 .gitignore 的格式规范如下 • 所有空行或者以 # 开头的行都会被 Git 忽略。 • 可以使用标准的 glob 模式匹配它会递归地应用在整个工作区中。 • 匹配模式可以以/开头防止递归。 • 匹配模式可以以/结尾指定目录。 • 要忽略指定模式以外的文件或目录可以在模式前加上叹号!取反。
示例如下
touch .gitignore
vi .gitignore在 .gitignore加入被忽略的文件支持 #开头注释以及正则表达式。
#过滤编译文件 .out
*.out
#过滤以 .o .a 结尾的文件
*.[oa2.7、查看已暂存和未暂存的修改 git diff 能通过文件补丁的格式更加具体地显示哪些行发生了改变。看出当前做的哪些更新尚未暂存 有哪些更新已暂存并准备好下次提交
git diff若要查看已暂存的将要添加到下次提交里的内容可以用 git diff --staged 命令。 这条命令将比对已暂存文件与最后一次提交的文件差异
git diff --staged注意git diff 本身只显示尚未暂存的改动而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件运行 git diff 后却什么也没有就是这个原因。 然后用 git diff --cached 查看已经暂存起来的变化
git diff --cached2.8、提交更新 如果暂存区已经准备就绪那么就可以提交。建议提交前使用 git status查看文件状态然后再运行命令 git commit 提交文件。
git status
git commit这样会启动你选择的文本编辑器来输入提交说明我的是VIM 模式
git commit 参数
-m 将提交信息与命令放在同一行
git commit -m 增加文件
-a 跳过使用暂存区域,不经过git add直接提交
git commit -a
2.9、 移除文件 要从 Git 中移除某个文件就必须要从已跟踪文件清单中移除确切地说是从暂存区域移除然后提交。可以用 git rm 命令完成此项工作并连带从工作目录中删除指定的文件这样以后就不会出现在未跟踪文件清单中了。 git rm 文件名下一次提交时该文件就不再纳入版本管理了。 如果要删除之前修改过或已经放到暂存区的文件则必须使用强制删除选项 -f译注即 force 的首字母。 这是一种安全特性用于防止误删尚未添加到快照的数据这样的数据不能被 Git 恢复。 不要直接使用系统命令删除文件这样会有一点问题。如果删除可以使用git restore 恢复文件。
2.10、移动文件 Git 并不显式跟踪文件移动操作。 如果在 Git 中重命名了某个文件仓库中存储的元数据并不会体现出这是一次改名操作。 不过 Git 非常聪明它会推断出究竟发生了什么。 在 Git 中对文件改名可以这么做
git mv file_from file_to运行 git mv 就相当于运行了下面三条命令
mv filterHalf.c filterHalf1.c
git rm filterHalf.c
git add filterHalf1.c2.11、查看提交历史 git log 在提交了若干更新又或者克隆了某个项目之后可以使用git log查看历史。
git log
-p 或 --patch 它会显示每次提交所引入的差异按 补丁 的格式输出后面可以加数字例如-2显示前俩条。
--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 --prettyoneline --abbrev-commit 合用的简写。不传入任何参数的默认情况下git log 会按时间先后顺序列出所有的提交最近的更新排在最上面。 这个命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。 git log 参数 -p 或 --patch 它会显示每次提交所引入的差异按 补丁 的格式输出。 你也可以限制显示的日志条目数量例如使用 -2 选项来只显示最近的两次提交 查看每次提交的简略统计信息可以使用 --stat 选项 --pretty。 这个选项可以使用不同于默认格式的方式展示提交历史。 这个选项有一些内建的子选项供你使用。 比如 oneline 会将每个提交放在一行显示在浏览大量的提交时非常有用。 另外还有 shortfull 和 fuller 选项它们展示信息的格式基本一致但是详尽程度不一 git log --prettyonelinepretty的 format 可以定制记录的显示格式。git log --prettyformat 常用的选项 列出了 format 接受的常用格式占位符的写法及其代表的意义。
选项说明%H提交的完整哈希值%h提交的简写哈希值%T树的完整哈希值%t树的简写哈希值%P父提交的完整哈希值%p父提交的简写哈希值%an作者名字%ae作者的电子邮件地址%ad作者修订日期可以用 --date选项 来定制格式%cn提交者的名字%ce提交者的电子邮件地址%cd提交日期%cr提交日期距今多长时间%s提交说明
git log --prettyformat:%h - %an, %ar : %s当 oneline 或 format 与另一个 log 选项 --graph 结合使用时尤其有用。 这个选项添加了一些 ASCII 字符串来形象地展示你的分支、合并历史
git log --prettyformat:%h %s --graphgit log 限制输出长度
选项说明-n仅显示最近的 n 条提交–since, --after仅显示指定时间之后的提交。–until, --before仅显示指定时间之前的提交。–committer仅显示提交者匹配指定字符串的提交。–grep仅显示提交说明中包含指定字符串的提交。-S仅显示添加或删除内容匹配指定字符串的提交。
2.12、撤消操作 有时候我们提交完了才发现漏掉了几个文件没有添加或者提交信息写错了。 此时可以运行带有 --amend 选项的提交命令来重新提交
git commit --amend这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改例如在上次提交后马上执行了此命令 那么快照会保持不变而你所修改的只是提交信息。
2.13、取消暂存的文件 如果一次git add多个文件其中某个文件想要取消暂存可以使用 git reset HEAD file…2.14、撤消对文件的修改 修改完文件后或者在电脑删除文件后想要恢复不是使用git rmgit status会提示怎么做。 git restore -- file 是一个危险的命令。 你对那个文件在本地的任何修改都会消失——Git 会用最近提交的版本覆盖掉它。 除非你确实清楚不想要对那个文件的本地修改了否则请不要使用这个命令。也可以使用git checkout -- file
2.15远程仓库的使用 远程仓库是指托管在因特网或其他网络中的你的项目的版本库。 你可以有好几个远程仓库通常有些仓库对你只读有些则可以读写。 与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。 管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。 查看远程仓库 查看你已经配置的远程仓库服务器可以运行 git remote 命令。 它会列出你指定的每一个远程服务器的简写。
git remote
-v会显示需要读写远程仓库使用的 Git 保存的简写与其对应的URL。添加远程仓库 运行 git remote add shortname url 添加一个新的远程 Git 仓库同时指定一个方便 使用的简写
git remote add shortname url 现在你可以在命令行中使用字符串 shortname 来代替整个 URL。 例如如果你想拉取 url远程仓库 的仓库中有但你没有的信息可以运行 git fetch shortname。
从远程仓库中抓取与拉取 从远程仓库中获得数据命令
git fetch remote这个命令会访问远程仓库从中拉取所有你还没有的数据。 执行完成后你将会拥有那个远程仓库中所有分支的引用可以随时合并或查看。 如果你使用 clone 命令克隆了一个仓库命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所 以git fetch origin 会抓取克隆或上一次抓取后新推送的所有工作。 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
推送到远程仓库 分享项目时必须将其推送到上游命令
git push remote branch查看某个远程仓库 如果想要查看某一个远程仓库的更多信息可以使用命令
git remote show remote 它同样会列出远程仓库的 URL 与跟踪分支的信息。 这些信息非常有用它告诉你正处于 master 分支并且如果运行 git pull 就会抓取所有的远程引用然后将远程 master 分支合并到本地 master 分支。 它也会列出拉取到的所有远程引用。
远程仓库的重命名与移除 修改一个远程仓库的简写名 git remote rename oldname newname移除一个远程仓库——你已经从服务器上搬走了或不再想使用某一个特定的镜像了 又或者某一个贡献者不再贡献了——可以使用命令 git remote remove 仓库名git remote rm 仓库名一旦你使用这种方式删除了一个远程仓库那么所有和这个远程仓库相关的远程跟踪分支以及配置信息也会一起被删除。