git的需要注意的命令
git的创建仓库的过程
1:基本的创建本地仓库命令
mkdir learngit
(这个文件夹是需要被git 追踪和管理的,可以是空的,或者是非空的。)
cd learngit
git init(创建本地仓库)
1提交到本地仓库,分两步走。
git add readme.txt
git commit -m "提示信息,尽量用英文"
2查看文件是否被修改
git status
3在终端中显示修改的内容
git diff
4查看修改的日志信息
git log
5所有的git提交的时候的记录成时间线

注意:

图中的一长串的字符串是由每一个的commit id (版本号)利用这个版本号,
就可以进行文件的回滚的操作。
是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。
6回滚
好了,现在我们启动时光穿梭机,准备把readme.txt回退到上一个版本,
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
我们可以通过先使用git log的命令,然后使用
git reset --hard commit id (版本号)
直接将文件回退到一个版本上面。
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
7回退注意事项:
准确回退的时候,我们使用git reset --hard HEAD^ (上一个版本)
或者使用:git reset --hard commit id
当版本比较多,或者前一天晚上,工作提交关闭电脑之后,第二天不能找到前一个版本的commit id 的时候,git 为我们提供一个记录每一个命令的命令
git reflog

这个时候我们就可以找到每一个操作和操作对应的文件版本了。那么会滚到之前的版本就可以实现。
8时光机
git log
git reflog
git reset --hard commit id
git reset --hard HEAD^
HEAD是指针,回退的时候,我们改变的只是指针。
9暂存区和当前分支
还记得我们创建本地的仓库,然后将文件添加到暂存区,之后呢,将暂存区的所有文件一次性提交到当前的分之中。

上面我们创建的这一个learngit文件夹就是我们的工作区,而.git的文件夹就是版本库,版本库中的

index就是暂存区,然而HEAD就是我们所说的指针,
git add readme.txt
这个时候,我们我们就是将文件放在了暂存区,可以连续放置文件多个,然后呢使用
git commit -m "提示信息"
将所有的暂存区的文件都提交到当前HEAD指向的分支上。
我们在最初创建一个.git的版本库的时候,git就自动的为我们创建了一个分支 master。

上面是我的一个显示的创建一个新的文件夹,使用查看状态的命令来查看文件的状态,
LINSENCE.txt是一个从来都没有保存过的文件夹,untracted files
下面我们使用:


git status
git add LINSENCE.txt (将文件保存到暂存区)
git commit -m "display the temporary desposit region"(将文件保存到当前的分支中。)
图片中显示了我们当前的指针确实指向了我们的LINSENCE.txt 版本。
10:管理修改:


上面标明我们查看到文件已经修改,并且然后使用git add 将文件放置到暂存区,然后等待保存到当前的分支中。
注意下面

这个时候我们在上一个没有提交之前,再次修改文件,

结果显示,有文件没有放置在暂存区stage。
只是将第一次的修改提交了,第二次的修改没有提交到当前的分支。
使用:git diff HEAD -- LINSENCE.txt
来查看当前工作区和版本库之间的区别,<a href="https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192" name ="back" ; text-decoration="none" ;color="red">版本回退,廖雪峰
所以每一次都要先使用git add “xxx.txt” 将文件放置到缓存区,然后使用git commit -m "description" 以此将所有的结果保存成功。
撤销修改
git checkout -- filename
使用 -- 表示将紧跟着的文件中的修改撤销。
如果不适用 -- 就表示,切换到另外一个另外的一个分支。
只要是没有将修改提交,都可以撤销修改,(一旦提交,工作的时候,管理员就可以查看到所有的文件的版本,)
无论是不是使用了git add xxx.txt
都可以讲工作区或者缓存区中的文件中的修改撤销。
git checkout -- LINENSE.txt
eg:



上面三个和下面的一个结果就表明了在工作区中将文件中的修改撤销。

下面在暂存区中撤销修改:
修该
git status
git add LINSENCE.TXT
git status
git reset HEAD LINSENCE.TXT (将暂存区中的内容清除,置于非暂存的状态。)
git status
git checkout -- LINSENCE.TXT
git status
一起就可以完成撤销修改了。
注意:
当我们把文件放到暂存区之后,再对文件做修改的时候,再使用撤销修改,只能回到暂存区中的版本的状态。
或者说只能撤销在工作区中的修改。

先对暂存区中的文件查看状态,然后将文件版本放到暂存区,然后清除暂存区,最后对工作区的版本文件撤销修改。

暂存区的撤销修改,廖雪峰
git 删除的操作
当我们把文件提交到版本库中的当前树之后,
1:从工作区中删除
rm filename(linux系统)
del filename(win系统)
ps:
如果还想将版本库中的文件复原到工作区然后继续编辑,可以使用:
git checkout -- commit id
(相当于从版本库中下载到当前的工作区)
2:从版本库中删除
git rm filename
git commit -m "提示删除"(必须使用)
总结:当文件提交到版本库中的当前分支之后,我们不用担心误删除工作区中的版本,可以使用git chechout -- commit id
但是只能够复原到版本库中最新的版本。换句话说提交之后,又开发了很多新的更新代码,但是没有将其提交到当前的版本库就被误删除了,即使从版本库中恢复到工作区,那么也只能是版本库中的最新的内容(只包含提交时的代码),新添加的更新代码将无情的丢失。
posted on 2019-06-03 15:46 delistyourfuture 阅读(235) 评论(0) 收藏 举报
浙公网安备 33010602011771号