群晖 套件 wordpress,东莞网站优化seo,微信商城和小程序的区别,南通网站怎么推广个人博客#xff1a;我的个人博客#xff0c;各位大佬来玩1 创建 git仓库1.1 从现有工作目录中初始化新仓库需要到你需要用git管理的项目中输入以下命令#xff1a;git init便会创建一个空的git项目#xff0c;并且当前目录下会出现一个名为 .git 的目录#xff0c; Git 需…个人博客我的个人博客各位大佬来玩1 创建 git仓库1.1 从现有工作目录中初始化新仓库需要到你需要用git管理的项目中输入以下命令git init便会创建一个空的git项目并且当前目录下会出现一个名为 .git 的目录 Git 需要的数据和资源都存放在这个目录中不过我们目前只是初始化所有的文件与目录告诉 git在这个目录中有几个文件需要版本控制。我使用了几个cpp的文件git add *.cpp还可以git add READMEgit commit -m initial project version你已经得到了一个实际维护着若干文件的 Git 仓库。1.2 从现有仓库克隆克隆某个开源项目的git仓库可以使用 git clone 命令例如克隆一份Ruby语言的 Git 代码仓库 ticgit可以使用下面的命令git clone gitgithub.com:schacon/ticgit.git这表示在当前文件夹下新建一个ticgit其中包含一个 .git 的文件夹用于保存下载下来的所有版本记录然后从中取出最新版本的文件拷贝。修改克隆的名字git clone gitgithub.com:schacon/ticgit.git myticgit结果如下在克隆的时候我们可以选择不同的数据传输协议在我们的例子中选择的是 ssh传输协议你还可以有https://开头或者userserver:/path.git传输协议2. 记录仓库更新当我们创建了git存储库后我们便可以在工作目录对这写文件进行更新。在工作目录中的文件无非有两种状态已跟踪已跟踪的文件是指本来就被纳入版本控制管理的文件在上次快照中有它们的记录工作一段时间后它们的状态可能是未更新已修改或者已放入暂存区。在克隆获取库后工作目录的所有文件都是已跟踪的。未跟踪其他所有的文件都是未跟踪的即他们既没有快照也没有放入暂存区。在修改后 git才会把他们表示为已修改的然后放到暂存区准备提交更新。2.1 查看跟踪状态输入下面的命令来查看当前工作目录的文件处于什么状态git status出现的情况当前工作目录很干净所有已跟踪文件在上次提交后都未被更改过。git status
On branch master
nothing to commit, working directory clean现在让我们修改一下比如添加一个文件注意需要在git克隆的仓库内执行vim README然后随便输入一些内容保存退出。git status会出现Untracked files 即未跟踪状态Untracked files:(use git add file... to include in what will be committed)READMEnothing added to commit but untracked files present (use git add to track)表示我们的README 处于Untracked files即未跟踪状态未跟踪的文件意味着Git在之前的快照提交中没有这些文件Git 不会自动将之纳入跟踪范围除非你明明白白地告诉它“我需要跟踪该文件”因而不用担心把临时文件什么的也归入版本管理。2.2 跟踪新文件跟踪我们上面新建的 README文件git add README当我们再次 git status会发现它处于**Changes to be committed即未提交状态它这时已经被跟踪了但是没有提交。**即处于暂存状态Changes to be committed:(use git restore --staged file... to unstage)new file: README其实 git add 的作用就是将一个文件放入暂存区域中并且把所有未跟踪的文件或者目录变为已跟踪状态。这是个多功能命令根据目标文件的状态不同此命令的效果也不同可以用它开始跟踪新文件或者把已跟踪的文件放到暂存区还能用于合并时把有冲突的文件标记为已解决状态等这是个多功能命令根据目标文件的状态不同此命令的效果也不同可以用它开始跟踪新文件或者把已跟踪的文件放到暂存区还能用于合并时把有冲突的文件标记为已解决状态等2.3 暂存已修改的文件我们修改一个已经存在于历史版本的文件README.mkd忽略上面的内容我们会看到这样的状态Changes not staged for commitChanges not staged for commit:(use git add file... to update what will be committed)(use git restore file... to discard changes in working directory)modified: README.mkd表示已经跟踪的文件发生了修改但是还没有放在暂存区里。要暂存这次更新则需要执行git add看上节关于git add的讲解命令。现在我们运行此命令把 README.mkd放到暂存区中git add README.mkd再次status其状态得到Changes to be committed:(use git restore --staged file... to unstage)new file: READMEmodified: README.mkd两个文件都被放在暂存区了提交后便会被更新到仓库中注意如果此时你又想修改一个已经被放在暂存区的文件则修改后会发现出现了两个相同的文件一个已跟踪并且放在暂存区而另一个已跟踪未在暂存区。Changes to be committed:(use git restore --staged file... to unstage)new file: READMEmodified: README.mkdChanges not staged for commit:(use git add file... to update what will be committed)(use git restore file... to discard changes in working directory)modified: README.mkd这是因为 git只会暂存 执行git add后的文件因此此时需要重新 输入此命令git add README.mkdChanges to be committed:(use git restore --staged file... to unstage)new file: READMEmodified: README.mkd2.4 忽略某些文件我们不想让某些文件被纳入git的管理即他们根本不用出现在未跟踪状态下我们创建或者修改一下 .gitignore 文件即可vim .gitignore修改后查看文件如下$ cat .gitignore
*.gem
*.swp
*.[oa]
*~
*.log
*.tmp
*.pid
rdoc/
pkg/*.gem *.swp *.[oa] 表示我们要忽略以 gem swp o a 等后缀的文件~ 表示 一些文件的副本或者其他文件rdoc/ 表示的是一个 文件夹因为它的末尾是 /要养成一开始就设置好 .gitignore 文件的习惯以免将来误提交这类无用的文件。可以对一些模式取反表示的就是忽略他们之外的文件或者目录2.5 查看已暂存或者未暂存的更新查看具体修改了什么地方可以使用下面的命令git diff运行如下diff --git a/README b/README
index e31a6eb..0a7d6e9 100644
--- a/READMEb/README-1,3 1,4 你好!66666hjhhhh
我修改了一行前面的 号表示我们添改了这一行的内容- 号则表示我们删改了一行信息此命令比较的是工作目录中当前文件和暂存区域快照之间的差异也就是修改了之后还没有暂存起来的变化查看已经暂存的文件与上次提交的文件的差异首先把README先 放入暂存区git add README运行如下命令即可查看git diff --cached简单总结git diff查看某个文件还没有被暂存起来的改动其实就是显示你当前修改了什么内容与在暂存区的内容做比较。暂存前后的变化git diff --cached查看某个文件已经被暂存和上一次提交时的文件的内容差异。已经暂存的变化2.6 提交更新首先检查有没有修改了但是没有被暂存的因为提交只会提交暂存区的检查git statusgit add xxx # 如果还存在未暂存的目标检查完成后输入提交命令git commit这时就会出现一个文本编辑器并且输入本次提交的说明我的出现了 vscode可以按照下列的命令进行修改默认哪个编辑器git config --global core.editor xxxxx默认的提交信息包括最后一次git status显示的信息如果觉得这还不够可以用 -v 选项将修改差异的每一行都包含到注释中来。退出编辑器时Git 会丢掉注释行将说明内容和本次更新提交到仓库。在空行输入提交信息保存后退出learning git use 接着就会提示你提交成功并且显示当前是在哪个分支master提交的本次提交的完整 SHA-1 校验和是什么582f005以及在本次提交中有多少文件修订过多少行添改和删改过。[master 582f005] learning git use3 files changed, 10 insertions(), 1 deletion(-)create mode 100644 README提交时记录的是放在暂存区域的快照任何还未暂存的仍然保持已修改状态可以在下次提交时纳入版本管理。每一次运行提交操作都是对你项目作一次快照以后可以回到这个状态或者进行比较。使用 -m 快速添加提交信息git commit -m 我要学习[master f949baa] 我要学习1 file changed, 2 insertions()2.7 跳过暂存使用下面的命令可以将修改的文件无需放入暂存区即无需使用git add的命令可以直接 提交。修改了一个文件之后执行下面的语句git commit -a即在commit的时候添加一个 -a 2.实现快速修改提交git commit -a -m 跳过暂存[master 042500c] 跳过暂存1 file changed, 2 insertions()2.8 移除文件从 Git 中移除某个不想要的文件即从已经暂存的区域移除某个文件。输入以下命令来删除暂存区的文件并且直接把它从工作目录中删除连未跟踪区域都别留下。git rm xxx相当于直接删除这个文件Changes to be committed:(use git restore --staged file... to unstage)deleted: README如果要删除一个已经放在暂存区的文件则必须强制删除输入以下命令git rm -f xxx 只从暂存区删除即删除跟踪但是不删除其本身git rm --cached xxx此命令删除所有 log/ 目录下扩展名为 .log 的文件git rm log/\*.log删除当前目录及其子目录中所有 ~ 结尾的文件。git rm \*~2.9 移动文件我们想要把一个文件README.txt 改为 README 可以使用下面的命令git mv README.txt README mv 表示 把文件从README.txt 改为 README实际上执行了三条语句是等价的注意README.txt一定是在暂存区域内mv README.txt README
git rm README.txt
git add READMEmv命令把README.txt 改为 README但是此时README.txt仍在暂存区并且README在未暂存区删除暂存区的README.txt把README放入暂存区实际上 git mv file_from file_to 便可以表示这一过程无需写三条3. 查看提交历史演示: 首先运行命令获取项目库git clone git://github.com/schacon/simplegit-progit.git在此项目中运行git log会出现以下内容commit ca82a6dff817ec66f44342007202690a93763949 (HEAD - master, origin/master, origin/HEAD)
Author: Scott Chacon schacongmail.com
Date: Mon Mar 17 21:52:11 2008 -0700changed the verison numbercommit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon schacongmail.com
Date: Sat Mar 15 16:40:33 2008 -0700removed unnecessary test codecommit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon schacongmail.com
Date: Sat Mar 15 10:31:28 2008 -0700first commitgit log 会按提交时间列出所有的更新最近的更新排在最上面每次更新都有一个 SHA-1 校验和作者姓名电子邮箱提交时间与提交说明使用 -p 显示每次提交的内容差异 -2只显示最近两次git log -p -2使用--word-diff获取单词层面的变化git log -p --word-diff使用-stat 显示简要的增改行数统计git log --stat每个提交都列出了修改过的文件以及其中添加和移除的行数并在最后列出所有增减行数小计。--pretty 可以指定使用完全不同于默认格式的方式展示提交历史git log --prettyxxxxxx可以为onelineshortfullfullerformat 定制显示的格式相当于debuggit log --prettyformat:%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 提交说明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 使用其他格式显示历史提交信息。可用的选项包括 onelineshortfullfuller 和 format后跟指定格式。 --oneline --prettyoneline --abbrev-commit 的简化用法--since 和 --until 对时间作出限制显示最近两周的提交git log --since2.weeks其他选择:选项 说明 -(n) 仅显示最近的 n 条提交 --since, --after 仅显示指定时间之后的提交。 --until, --before 仅显示指定时间之前的提交。 --author 仅显示指定作者相关的提交。 --committer 仅显示指定提交者相关的提交。4. 撤销操作4.1 修改最后一次操作如果在提交后发现提交信息写错了或者漏掉几个文件没有加则可以这样修改git commit --amend如果还没有暂存文件就提交了则可以这样操作git commit # 提交了
git add file
git commit --amend上面的三条命令最终只是产生一个提交第二个提交命令修正了第一个的提交内容。4.2 取消暂存中的文件我们有多个文件还未暂存但是我们不小心一次性全部放入暂存了git add .但是我们想一个一个放不能一次性放入因此我们使用这两条命令git status显示的内容有说明git reset HEAD fileHEAD表示上一个版本 HEAD^ HEAD^^ ....git store --staged file4.3 取消对文件的修改我们不想对这个文件进行修改了让他回到一开始的状态git checkout -- benchmarks.rb你可能已经意识到了这条命令有些危险所有对文件的修改都没有了因为我们刚刚把之前版本的文件复制过来重写了此文件。所以在用这条命令前请务必确定真的不再需要保留刚才的修改。如果只是想回退版本同时保留刚才的修改以便将来继续工作可以用下章介绍的 stashing 和分支来处理应该会更好些。5. 远程管理仓库管理远程仓库的工作包括添加远程库移除废弃的远程库管理各式远程库分支定义是否跟踪这些分支5.1 查看当前远程库查看当前配置有哪些远程库git remote注意默认存在一个 origin的远程库Git 默认使用这个名字来标识你所克隆的原始仓库。显示原始仓库的克隆地址git remote --v如果有多个远程仓库此命令将全部列出。5.2 添加远程仓库要添加一个新的远程仓库可以指定一个简单的名字以便将来引用git remote add pb git://github.com/paulboone/ticgit.git添加了一个 远程仓库 名称为 pbpb代表的就是远程仓库的地址抓取仓库地址git fetch pbPaul 的主干分支master已经完全可以在本地访问了对应的名字是 pb/master你可以将它合并到自己的某个分支或者切换到这个分支看看有些什么有趣的更新。5.3 从远程仓库抓取数据使用下面的命令从远程仓库抓取数据到本地git fetch remote-name此命令从远程仓库中拉取所有你本地仓库中还没有的数据。抓取从你上次克隆这个仓库以来别人上传到此仓库中的所有更新git fetch origin有一点很重要需要记住fetch 命令只是将远端的数据拉到本地仓库并不自动合并到当前工作分支只有当你确实准备好了才能手工合并。5.4 推送数据到远程仓库项目进行到一个阶段要同别人分享目前的成果可以将本地仓库中的数据推送到远程仓库。git push [remote-name] [branch-name]把本地的branch分支推送到远程 remote 服务器上5.5 查看远程仓库信息命令:git remote show [remote-name]查看某个远程仓库的信息它友善地告诉你如果是在 master 分支就可以用 git pull 命令抓取数据合并到本地。另外还列出了所有处于跟踪状态中的远端分支。5.6 远程仓库的删除与重命名修改某个远程仓库在本地的名称git remote rename pb pbnewname对远程仓库的重命名也会使对应的分支名称发生变化。删除对应的远程仓库git remote rm pbname6. 打标签在某一时间点上打上标签git的标签类型轻量型标签是个不会变化的标签只指向某个特定对象的引用含附注的标签存储在仓库中的一个独立对象它有自身的校验和信息包含着标签的名字电子邮件地址和日期以及标签说明。6.1 显示所有标签git tag标签按字母顺序排列所以标签的先后不表示重要程度的轻重.筛选标签git tag -l v1.4.2.*6.2 创建标签创建含附注的标签-a 后附带标签的名字git tag -a v1.4 -m my version 1.4-m表示指定对应的标签说明如果没有 -m后面的内容则会跳转到vscode让你手动编写 标签说明使用下面的命令来显示标签对应的信息git show v1.4列出了此标签的提交者和提交时间以及相应的标签说明。创建个人的私钥git tag -s v1.5 -m my signed 1.5 tag创建轻量级标签直接给出标签的名字即可git tag v1.86.3 加注标签已经提交的版本中补上标签信息首先显示所有的版本git log --prettyoneline可以看到 没有标签我们输入命令让其中一个版本加上标签git tag -a v1.9 085bb3b注意直需要加上校验和的前几位即可git就会识别这是哪一个版本。显示我们刚加的标签git show v1.96.4 分享标签通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支运行 git push origin [tagname] 即可git push origin v1.5一次性推送所有的本地标签上去git push origin --tags7. Git使用技巧7.1 自动补全首先可以查看自己的 Git 有没有自动补全的功能如下操作所示git contab输入git co 然后 按两次tab键会出现提示的命令 config 和commit如果上述办法不可以则需要进行如下操作如果你用的是 Bash shell可以试试看 Git 提供的自动补全脚本。下载 Git 的源代码进入 contrib/completion 目录会看到一个 git-completion.bash 文件。将此文件复制到你自己的用户主目录中译注按照下面的示例还应改名加上点cp git-completion.bash ~/.git-completion.bash并把下面一行内容添加到你的 .bashrc 文件中source ~/.git-completion.bash也可以为系统上所有用户都设置默认使用此脚本。Mac 上将此脚本复制到 /opt/local/etc/bash_completion.d 目录中Linux 上则复制到 /etc/bash_completion.d/ 目录中。这两处目录中的脚本都会在 Bash 启动时自动加载。7.2 使用别名为命令起一个别名 git configgit config --global alias.st status接下来输入git st其实就是git status 取消在暂存区的文件完整命令如下git reset HEAD file可以使用别名git config --global alias.unstage reset HEAD --git unstage file显示最后一次提交的文件完整命令如下git log -1 HEAD可以使用别名看起来会更清晰git config --global alias.last log -1 HEADgit lastGit 只是简单地在命令中替换了你设置的别名输入Git外部命令git config --global alias.visual !gitkgit visual