标签:key 标记 文件 文件名 工作 文件恢复 理解 ash fir
早已听说gayhub。我们就抽下零碎的时间来学习下。
GIT是在官网下的一个windows版本。一切默认安装。用bash的exe打开即可。
1.基础环境的搭建。
$ git config --global user.name "Recurison" $ git config --global user.email "sknoendideal@163.com"
自己理解的意思是标记了本地环境的名字。
$ mkdir learngit ##新建个文件夹以作为版本仓 $ cd learngit/ $ git init ## 初始化版本仓 $ ls -ah ##会有个.git的隐藏文件
2.基本使用
新建个readme.txt文件,用notepad++编辑。最好不要用windows自带的记事本编辑。
内容:
这是一个中文乱码文件
乱码不乱
文件自然在 learngit/下
命令:
第一次提交:
$ git add hehe.txt ##文件添加至仓库;不会有任何输出
$ git commit -m "first 1" ##-m带上本次提交的描述,最好是有意义的。
[master 69100b0] first 1
1 file changed, 2 insertions(+) ##提示了一个文件修改,两条插入。
create mode 100644 hehe.txt
添加文件到Git仓库,分两步:
git add <file>
,注意,可反复多次使用,添加多个文件;git commit -m <message>
,完成。修改后第二次提交:
内容:
这是一个中文乱码文件
乱码乱
命令:
$ git status ##查看当前仓库状态 On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: hehe.txt no changes added to commit (use "git add" and/or "git commit -a")
$ git diff ##可以看到变化的地方,显示的跟linux下diff一样。
diff --git a/hehe.txt b/hehe.txt
index 2f49f4a..6d502c0 100644
--- a/hehe.txt
+++ b/hehe.txt
@@ -1,2 +1,2 @@
这是一个中文乱码文件
-乱码不乱
\ No newline at end of file
+乱码乱
然后提交:
$ git add hehe.txt $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: hehe.txt
$ git commit -m "second time"
[master 789bcd3] second time
1 file changed, 1 insertion(+), 1 deletion(-)
3.版本恢复
恢复到历史版本可通过commit_id来恢复。
比如可以通过:git log 或者git reflog查看到commit_id
$ git log commit 789bcd3efbe0176b5ea4f10f7fbe2bcc042e4df0 (HEAD -> master) Author: Recurison <sknoendideal@163.com> Date: Fri Dec 7 13:49:07 2018 +0800 second time commit 69100b0fa5d4a487363e4e1606121b7c22e20429 Author: Recurison <sknoendideal@163.com> Date: Fri Dec 7 13:33:17 2018 +0800 first 1
上图显示。HEAD为当前版本。如果要恢复到"first 1"版本的话,使用:
$ git reset --hard HEAD^
HEAD is now at 69100b0 first 1
其中^为上个版本,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100。
也可以用git reset -- hard commit_id 来回退版本。
$ git reset -- hard a16a5704b0fdb568507668d7d16218c9026df3bc
4.常见命令
1)如果本地及版本库都删除了test.txt这个文件,可以通过git reflog查到次文件版本,然后通过git checkout id号 文件名。来恢复文件
git checkout a16a5704b0fdb568507668d7d16218c9026df3bc test.txt
2)撤销修改
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
$ git checkout -- readme.txt
如果文件在占存区但没有commit,可用命令git reset HEAD <file>
可以把暂存区的修改撤销掉(unstage),重新放回工作区
$ git reset HEAD readme.txt
3)删除文件
删除本地文件rm test.txt
删除版本库文件那就用命令git rm 文件名
删掉,并且git commit
$ git rm test.txt rm ‘test.txt‘ $ git commit -m "remove test.txt" [master d46f35e] remove test.txt 1 file changed, 1 deletion(-) delete mode 100644 test.txt
如果删错了,但版本库还有,所以可以很轻松地把误删的文件恢复到最新版本
git checkout -- test.txt
版本库没有的话,也可以用上面4.1)的方法来恢复文件。
标签:key 标记 文件 文件名 工作 文件恢复 理解 ash fir
原文地址:https://www.cnblogs.com/recurision/p/10082540.html