GIT命令记录
常用的一些命令
文章目录
pwd
用于显示当前目录
MaiBenBen@An MINGW64 ~
$ pwd
/c/Users/MaiBenBen
mkdir xxx
创建目录
MaiBenBen@An MINGW64 ~
$ mkdir myFirstRepository
cd xxx
切换到 xxx
目录下面 ;
MaiBenBen@An MINGW64 ~
$ cd myFirstRepository
//已经切换到 myFirstRepository 下面
MaiBenBen@An MINGW64 ~/myFirstRepository
$ pwd
/c/Users/MaiBenBen/myFirstRepository
如果想要切换盘符,则使用 cd /xx
;
MaiBenBen@An MINGW64 ~
$ cd /d
//切换到 D 盘
MaiBenBen@An MINGW64 /d
$ pwd
/d
vi xxx
使用 vim
编辑器,编辑 xxx
文件 ;
Git init
在文件夹里面使用该命令,就会将所在的文件夹变为 Git
的仓库 ,但是一般该文件夹的名字,其所在的目录都不要有中文字符;创建完毕以后,文件夹中会多出一个 .git 文件,该文件是用 Git
自己用的,用于管理版本库,一般不要手贱去动它 ;
MaiBenBen@An MINGW64 /e/myFirstRepository
$ git init
Initialized empty Git repository in E:/myFirstRepository/.git/
Git add xxx
将文件 添加 到 Git
仓库中,(只是添加到仓库) ;
Git
能记录追踪文本文件的内容变化,对于音频、图像等二进制数据,它是无法记录追踪器具体变化的,最多记录追踪其大小变化!这里其中说一下 Word
为了加密自己的格式,是使用二进制保存的,因此 Git
也无法追踪其变化!
要 添加
到仓库的文件,需要先放到仓库文件夹或者其子文件夹下面,对文件名大小写敏感!;
MaiBenBen@An MINGW64 /e/myFirstRepository (master)
$ git add readme.txt
Git commit [-m “message”]
这才是将文件 提交
到仓库,方括号中可选项,用于添加提交说明,为什么提交本次代码 ;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git commit -m "修改后的文件说明"
[master (root-commit) 2cfc997] 修改后的文件说明
1 file changed, 3 insertions(+)
create mode 100644 Readme.txt
Git status
查看仓库的情况,是否有文件更新,是否有文件未提交 等等 ;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ 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: Readme.txt // 一个被修改的文件
no changes added to commit (use "git add" and/or "git commit -a")
Git diff
查看文件内容的改动;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git diff
warning: LF will be replaced by CRLF in Readme.txt.
The file will have its original line endings in your working directory.
diff --git a/Readme.txt b/Readme.txt
index 7bc9289..61d385f 100644
--- a/Readme.txt
+++ b/Readme.txt
@@ -1,3 +1,6 @@
哈哈啊哈 2018年11月14日11:33:48
使用 VIM 编辑,有点难受呀马飞;
-
+ESC 进入模式选择!
+:W 保存
+:q 退出
+A 进入编辑
+ xxx
代表新增的内容;
- xxx
代表删除的内容 ;
Git log
查看历史操作,查看我们曾经对文件的修改;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git log
// 最近一次修改(第二次修改)
commit e933eb076326c563beb9fe4dbdaaf8bf4de2690a (HEAD -> master)
Author: Allbet <1255621959@qq.com>
Date: Wed Nov 14 13:29:50 2018 +0800
对Readme.txt文件进行修改
// 第一次修改
commit 2cfc99744cadc4d3091a42e1c9bfa59e6696f726
Author: Allbet <1255621959@qq.com>
Date: Wed Nov 14 11:43:24 2018 +0800
修改后的文件说明
可以看到,我们一共对文件进行了两次修改 ;
如果不想看这些具体信息,比如:修改者、修改时间等,可以加上参数 : --pretty=oneline
,仅保留版本号、修改说明 ;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git log --pretty=oneline
e933eb076326c563beb9fe4dbdaaf8bf4de2690a (HEAD -> master) 对Readme.txt文件进行修改
2cfc99744cadc4d3091a42e1c9bfa59e6696f726 修改后的文件说明
cat xxx
查看 xxx
文件内容 ;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ cat Readme.txt
哈哈啊哈 2018年11月14日11:33:48
使用 VIM 编辑,有点难受呀马飞;
Git reset --hard xxx
回退到之前的某个版本;
想要回退,则必须让 Git
知道回退到哪个版本, Git
中,使用 head
代表最新版本,***head^
*** 代表前一个版本, head^^
代表前2个版本,不使用 ^
也行,使用 head~1
代表前一个版本,后面的版本以此类推;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git reset --hard Head~1
HEAD is now at 2cfc997 修改后的文件说明
MaiBenBen@An MINGW64 /e/learnGit (master)
$ cat Readme.txt
哈哈啊哈 2018年11月14日11:33:48
使用 VIM 编辑,有点难受呀马飞;
此时,使用 Git log --pretty=oneline
查看历史记录,发现刚刚的新版本不复存在了;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git log --pretty=oneline
2cfc99744cadc4d3091a42e1c9bfa59e6696f726 (HEAD -> master) 修改后的文件说明
要是想在回退到之前的新版本,也是可以的,但是需要使用具体的版本号,没有 head
这样的代表可以使用了;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git reset --hard e933eb //写上版本号
HEAD is now at e933eb0 对Readme.txt文件进行修改
MaiBenBen@An MINGW64 /e/learnGit (master)
$ cat Readme.txt
哈哈啊哈 2018年11月14日11:33:48
使用 VIM 编辑,有点难受呀马飞;
ESC 进入模式选择!
:W 保存
:q 退出
A 进入编辑
可以看见文档又被恢复到之前的最新版了,同时我们还发现,版本号,是不需要写全部的,只需要写前面的几个即可, Git
会自己去根据前缀查找出具体的,但是要注意的是,给的版本号前缀,必须保证只能找到一个其唯一的全部版本号 ;
Git reflog
记录我们每次操作的对应的版本号;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git reflog
e933eb0 (HEAD -> master) HEAD@{0}: reset: moving to e933eb
2cfc997 HEAD@{1}: reset: moving to Head~1
e933eb0 (HEAD -> master) HEAD@{2}: commit: 对Readme.txt文件进行修改
2cfc997 HEAD@{3}: commit (initial): 修改后的文件说明
至此,我们可以随意的进行版本的回退,恢复,因为,每次操作的版本号,都在这里;
并其,我们可以发现, Git
内部是使用链表的一个机构保存每个版本的,即使我们回退到之前的任意一个版本,后续的版本也都在,不是被删除了;
暂存区
Git
有个暂存区的概念,每个人的电脑上,使用 git init
创建一个仓库的时候,自动生成的 .git
文件夹,里面进行管理版本库, .git
版本库,被分成一个 master
主分支区和暂存区;
每次 add
都是先添加到暂存区中的, commit
以后,才会清空暂存区,将里面的文件添加到 master
主分支上;
git diff head – xxx
查看 xxx 文件,在库中的主版本和当前工作区中的差别;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git diff Head -- Readme.txt
diff --git a/Readme.txt b/Readme.txt
index 61d385f..a388d8a 100644
--- a/Readme.txt
+++ b/Readme.txt
@@ -2,5 +2,7 @@
使用 VIM 编辑,有点难受呀马飞;
ESC 进入模式选择!
:W 保存
-:q 退出
-A 进入编辑
+:Q 退出
+A 插入
+S 删除
+
如果没有差别,则不输出;
git checkout – xxx
撤销 工作区 中对 xxx
文件的全部修改,让其回滚到最近一次的 git add
、 git commit
操作的状态,其实就是拿着版本库中的文件,进行替换工作区中的文件 ;
git reset HEAD
想要撤销暂存区中文件,该命令会将暂存区中的命令,拿回到工作区;
rm xxx
将 xxx
文件从工作区删除,但是此时版本库还有该文件;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ rm test.txt
可以使用 git status
,观察库的变化,此时会被告知有文件被删除;
MaiBenBen@An MINGW64 /e/learnGit (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: test.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
.Readme.txt.swp
no changes added to commit (use "git add" and/or "git commit -a")
git rm xxx
从版本库之中删除 xxx
文件,跟着 git commit
一起,就可以彻底的删除文件了;
如果想要恢复被删除的文件,则使用 git checkout -- xxx
,该命令会移除所有操作;
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)