GIT常用命令(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/deramer1/article/details/82819852

1、创建版本库

版本库可以理解成GIT管理的目录,GIT能追踪里面每一个文件的增加,修改,删除。创建版本库的命令只需要一行,在相应的目录下里,点击鼠标右键会出现Git Bash Here,点击进入命令行,输入git init 完成初始化。git就会跟踪这个目录下所有的文件。

如下,显示创建成功。

$ git init
Initialized empty Git repository in F:/gitlearn/test/.git/

2、将文件添加到版本库中

接下来就要将我们需要的跟踪的文件添加到版本库中,这里一共需要两步。

新建一个test.txt的文件,内容为 add file 

第一步,将文件添加到缓存区,git add test.txt

第二步,将文件提交到仓库,git commit -m "add file"

代码的执行过程如下,其中,git commit -m " "双引号里面的内容,是要描述本次提交都做了哪些修改,毕竟我们也的代码也要给别人看,让别人清楚的知道我们本次提交干了什么很重要。

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git add test.txt

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ cat test.txt                                       //显示文件内容
add file
hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git commit -m "add file"
[master (root-commit) aa76a9a] add file
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

在这里很多人会有疑问,为什么git提交的时候,要分两步,这样岂不是很麻烦,这两步都干了什么,先来看一张图:

   (转载自廖雪峰的博客,我会在文末添加链接)

我们存放文件的目录是工作区,在我们输入add命令之后,是将文件添加到暂存区中,就是图中的stage中,再次commit的时候才会添加到版本库中。

3、版本回退

现在,我们已经学会如何把修改提交到了暂存区和版本库里面。但是在开发中,我们经常会有想回到某个版本的时候,我们应该如何做呢?

我们先做一些准备

工作,新建test.txt文本文件,依次输入A、B、C并提交到版本库。

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git add test.txt

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git commit -m "add A"
[master 4543fae] add A
 1 file changed, 1 insertion(+), 1 deletion(-)

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git add test.txt

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git commit -m "add B"
[master a444e62] add B
 1 file changed, 1 insertion(+), 1 deletion(-)

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git add test.txt

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git commit -m "add C"
[master d85795c] add C
 1 file changed, 1 insertion(+), 1 deletion(-)

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$

输入git log 可以查看最近的提交记录,如果想让提交记录简单一点,可用如下的命令,可以看到记录非常清晰。

其中,前面的一堆字母和数字的组合是版本号,版本回退的时候,就依靠这个。在Git中当前版本是HEAD,上一个版本是HEAD^

,上两个版本是HEAD^^,上100个版本为HEAD~100

$ git log --pretty=oneline
d85795cd86774b556c24f287cad44bbbcf204518 (HEAD -> master) add C
a444e6238d0955528a52a7e53e54351ffbde7e26 add B
4543fae6169effbc8b35b948a06a1c687817902c add A

现在,我们要回到add B的版本,如下,输出文本内容为B,这个时候我们用git log输出版本号,发现add C 版本已经没了。如果,你还没有关命令窗口,找到add C的版本号,可以直接回去,但是大多数情况下,我们是找不到版本号的。幸好git记录每一次命令。

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git reset --hard HEAD^
HEAD is now at a444e62 add B

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ cat test.txt
B

输入git reflog 可以看到版本号,直接回到相应的版本。

$ git reflog
a444e62 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
d85795c HEAD@{1}: commit: add C
a444e62 (HEAD -> master) HEAD@{2}: commit: add B
4543fae HEAD@{3}: commit: add A

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git reset --hard d8579
HEAD is now at d85795c add C

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ cat test.txt
C

4、撤销修改

有的时候,我们提交完申请之后,想要撤回自己的修改。下面是具体的操作:

1>当修改工作区的代码的时候,想放弃修改,直接git checkout -- file,如下图,想删除工作区的GIT,输入命令,可以直接删除。

$ cat test.txt
Git
GIT
hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git checkout -- test.txt

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ cat test.txt
Git

2>当修改完了工作区的代码,还提交到了暂存区,先git reset HEAD file 然后回到第一步

现在文件里面是三个GIT叠加,先用reset丢弃缓存区的修改,再用checkout丢弃工作区的修改。

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git reset HEAD test.txt
Unstaged changes after reset:
M       test.txt

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git checkout -- test.txt

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ cat test.txt
Git
GIT

3>如果已经提交了版本库,参考版本回退

5、删除文件

在删除文件的时候,我们只是在工作区里面删除了,导致工作区和版本库不一致。

$ 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

no changes added to commit (use "git add" and/or "git commit -a")

这个时候,有两种操作,第一种操作是误删

直接checkout文件就恢复了

$ git checkout -- test.txt

第二种操作是,确实想在版本库里删除,如下,先用git rm test.txt删除,然后提交。

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git rm test.txt
rm 'test.txt'

hp@LAPTOP-MA0BPGJQ MINGW64 /f/gitlearn/test (master)
$ git commit -m "remove test.txt"
[master 49d4aec] remove test.txt
 1 file changed, 2 deletions(-)
 delete mode 100644 test.txt

掌握这些命令,就可以在自己的电脑上操作Git了,然而,我们还要学习如何将代码托管到Github上,以及如何学会多人协作。

参考博客:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758392816224cafd33c44b4451887cc941e6716805c000

猜你喜欢

转载自blog.csdn.net/deramer1/article/details/82819852