网站建设情况调查表,应用软件开发需要学什么,河北邯郸的最新通告,如何增加网站会员文章目录 简介git的安装配置git的安装git的配置 git使用的基本流程创建版本库时光机穿梭版本回退工作区和暂存区管理修改撤销修改删除文件 远程仓库添加远程库从远程库克隆 总结 简介
本文主要记录了我在学习git操作的过程#xff0c;以及如何使用GitHub。建议先参考廖雪峰的… 文章目录 简介git的安装配置git的安装git的配置 git使用的基本流程创建版本库时光机穿梭版本回退工作区和暂存区管理修改撤销修改删除文件 远程仓库添加远程库从远程库克隆 总结 简介
本文主要记录了我在学习git操作的过程以及如何使用GitHub。建议先参考廖雪峰的git教程实操练习一遍再利用Learning Git Branching进行巩固。下文内容是对廖雪峰git教程的实践
git的安装配置
git的安装
我们可以直接下载GitHub Desktophttps://desktop.github.com/下载自带了git bash我们无需重复安装gitGitHub Desktop提供了详细的新手指引我们根据指引提交我们的项目。
也可以下载githttps://git-scm.com/
git的配置
注意git config命令的--global参数用了这个参数表示你这台机器上所有的Git仓库都会使用这个配置当然也可以对某个仓库指定不同的用户名和Email地址。
git config --global user.name Your Name
git config --global user.email emailexample.comgit使用的基本流程
创建版本库
mkdir learngit
cd learngit通过git init命令把这个目录变成Git可以管理的仓库
git initwindow里面可能无法显示.git文件我们可以设置显示隐藏的项目。 现在我们编写一个readme.txt文件内容如下 Git is a version control system. Git is free software. 第一步用命令git add告诉Git把文件添加到仓库
git add readme.txt第二步用命令git commit告诉Git把文件提交到仓库
git commit -m wrote a readme filegit commit命令-m后面输入的是本次提交的说明可以输入任意内容当然最好是有意义的这样你就能从历史记录里方便地找到改动记录。
git commit命令执行成功后会告诉你1 file changed1个文件被改动我们新添加的readme.txt文件2 insertions插入了两行内容readme.txt有两行内容。
为什么Git添加文件需要addcommit一共两步呢因为commit可以一次提交很多文件所以你可以多次add不同的文件比如 添加某个文件时该文件必须在当前目录下存在file4.txt文件不存在因此报错。
时光机穿梭
版本回退
修改readme.txt文件如下 Git is a distributed version control system. Git is free software distributed under the GPL. 然后进行提交
git add readme.txt
git commit -m append GPL在Git中我们用git log命令查看历史记录
git loggit log命令显示从最近到最远的提交日志我们可以看到3次提交。
如果嫌输出信息太多看得眼花缭乱的可以试试加上--prettyoneline参数
git log --prettyoneline你看到的一大串类似59a9fdd...的是commit id版本号和SVN不一样Git的commit id不是123……递增的数字而是一个SHA1计算出来的一个非常大的数字用十六进制表示而且你看到的commit id和我的肯定不一样以你自己的为准。为什么commit id需要用这么一大串数字表示呢因为Git是分布式的版本控制系统后面我们还要研究多人在同一个版本库里工作如果大家都用123……作为版本号可能发生冲突。
首先Git必须知道当前版本是哪个版本在Git中用HEAD表示当前版本也就是最新的提交599fdd...注意我的提交ID和你的肯定不一样上一个版本就是HEAD^上上一个版本就是HEAD^^当然往上1000个版本写1000个^比较容易数不过来所以写成HEAD~1000。
可以使用git reset命令进行版本回退
git reset --hard HEAD^^我们发现回退到了未修改readme.txt的那个版本。 Git的版本回退速度非常快因为Git在内部有个指向当前版本的HEAD指针。
那我们如何对版本进行恢复呢这里有两种方法
情形一直接利用commit id指定回到未来某个版本 情形二当我们不知道commit id时Git提供了一个命令git reflog用来记录你的每一次命令下面例子我们可以看出指针上一次指向59a9fdd。
工作区和暂存区
工作区Working Directory 就是你在电脑里能看到的目录比如我的learngit文件夹就是一个工作区 版本库Repository 工作区有一个隐藏目录.git这个不算工作区而是Git的版本库。
Git的版本库里存了很多东西其中最重要的就是称为stage或者叫index的暂存区还有Git为我们自动创建的第一个分支master以及指向master的一个指针叫HEAD。 Git自动为我们创建了唯一一个master分支所以现在git commit就是往master分支上提交更改。
你可以简单理解为需要提交的文件修改通通放到暂存区然后一次性提交暂存区的所有修改。
下面举一个例子
先对readme.txt做个修改比如加上一行内容 Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage. 2. 在工作区新增一个LICENSE文本文件 用git status查看状态 使用两次命令git add把readme.txt和LICENSE都添加
git add readme.txt
git add LICENSE.txt
git status现在暂存区的状态就变成这样了 执行git commit就可以一次性把暂存区的所有修改提交到分支
git commit -m understand how stage works
git status现在版本库变成了这样暂存区就没有任何内容了
管理修改
Git跟踪并管理的是修改而非文件。
现在我们加上一行内容 Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage. Git tracks changes. git add readme.txt
git status然后再修改readme.txt文件 Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage. Git tracks changes of files. 最后直接进行提交
git commit -m git tracks changes
git status我们发现第二次的修改没有被提交这是因为第二次的修改没有通过git add放入缓存区我们可以通过git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别
git diff HEAD -- readme.txt 可见第二次修改没有被提交我们可以git add后进行git commit进行提交。
撤销修改
情形一还未git add Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage. Git tracks changes of files. My stupid boss still prefers SVN. 使用git status查看一下Git会告诉你git restore可以丢弃工作区的修改
git restore readme.txt情形二已经git add到暂存区 git restore --staged readme.txt #暂存区回退
git restore readme.txt #工作区回退情形三已经git commit还没有推送到远程库中
git add readme.txt
git commit -m fallback versiongit reflog
git reset --hard 389d734删除文件 情况一直接删除 这里删除file1.txt文件 情况二删错了利用版本库对工作区文件进行还原。 这里删除file2.txt文件 最后我们发下file1.txt文件被删除了file2.txt文件还原了。 注意从来没有被添加到版本库就被删除的文件是无法恢复的
远程仓库
添加远程库 git remote add origin https://github.com/liuxu-manifold/learngit.git由于远程库是空的我们第一次推送master分支时加上了-u参数Git不但会把本地的master分支内容推送的远程新的master分支还会把本地的master分支和远程的master分支关联起来在以后的推送或者拉取时就可以简化命令。
git push -u origin master推送成功后可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样 删除与远程库的关联 如果添加的时候地址写错了或者就是想删除远程库可以用git remote rm name命令。使用前建议先用git remote -v查看远程库信息
git remote -v
git remote rm origin此处的“删除”其实是解除了本地和远程的绑定关系并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库需要登录到GitHub在后台页面找到删除按钮再删除。
从远程库克隆
如何解决 gitgithub.com permission denied (publickey). fatal could not read from remote repository https://zhuanlan.zhihu.com/p/454666519
git clone gitgithub.com:liuxu-manifold/liuxu-manifold.git总结
本文记录了我在学习git过程中的一些常用命令当我们对git有一个整体而全面的认识之后我们后面可以通过查文档或者GPT来完成任务。