分类
Linux

Git 真好玩

一.创建版本库

1.创建一个文件夹 toys

2.初始化一个Git仓库,使用git init命令。

$ **git init**
Initialized empty Git repository in C:/Users/codeyoursmile/Desktop/education/.git

3.在toys文件夹下创建一个play.txt文件
内容为:play the game.

4.将添加文件到Git仓库

4.1 使用命令git add ,注意,可反复多次使用,添加多个文件;

$ git add play.txt

4.2 使用命令git commit -m ,完成。

$ git commit -m "play"
[master (root-commit) e51c0c0] play
 1 file changed, 1 insertion(+)
 create mode 100644 play.txt

二.时光机穿梭

1.修改play.txt文件
内容为:let’s play the game.

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   play.txt

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

2.查看具体修改了什么内容

$ git diff play.txt
diff --git a/play.txt b/play.txt
index 843cfde..9dee2d2 100644
--- a/play.txt
+++ b/play.txt
@@ -1 +1 @@
-play the game
\ No newline at end of file
+let's play the game.
\ No newline at end of file

三.版本回退

1.查看历史记录

$ git log
commit 786c6a7641b55ca990b96eda872c2ac3092ad4d6 (HEAD -> master)
Author: yinjianfeng <1969855095@qq.com>
Date:   Sun May 24 00:42:05 2020 +0800

    play second

commit e51c0c05f78c4799cedc31918e2fc023ac02fae9
Author: yinjianfeng <1969855095@qq.com>
Date:   Sat May 23 23:12:01 2020 +0800

    play

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数

$ git log --pretty=oneline
786c6a7641b55ca990b96eda872c2ac3092ad4d6 (HEAD -> master) play second
e51c0c05f78c4799cedc31918e2fc023ac02fae9 play

2.版本回退

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
现在,我们要把当前版本play second 回退到上一个版本play,就可以使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at e51c0c0 play
$ git log
commit e51c0c05f78c4799cedc31918e2fc023ac02fae9 (HEAD -> master)
Author: yinjianfeng <1969855095@qq.com>
Date:   Sat May 23 23:12:01 2020 +0800

    play

3.版本撤销

找到那个play second的commit id是786c6a…,可以指定回到未来的某个版本:
版本号没必要写全,前几位就可以了,Git会自动去找。

$ git reset --hard 786c6a
HEAD is now at 786c6a7 play second

Git提供了一个命令git reflog用来记录你的每一次命令:

$ git reflog
786c6a7 (HEAD -> master) HEAD@{0}: reset: moving to 786c6a
e51c0c0 HEAD@{1}: reset: moving to HEAD^
786c6a7 (HEAD -> master) HEAD@{2}: reset: moving to 786c6a
e51c0c0 HEAD@{3}: reset: moving to HEAD^
786c6a7 (HEAD -> master) HEAD@{4}: reset: moving to HEAD
786c6a7 (HEAD -> master) HEAD@{5}: commit: play second
e51c0c0 HEAD@{6}: commit (initial): play

四.工作区和暂存区

1.工作区(Working Directory)
就是你在电脑里能看到的目录,比如我的toys文件夹就是一个工作区:

2.版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

五.添加远程库

1.执行git remote,就是先将本地仓库与远端仓库建立一个链接:

$ git remote add origin https://e.coding.net/codeyoursmile/project.git

2.把本地库的所有内容推送到远程库上

git push origin master

六.创建与合并分支

查看分支:git branch

创建分支:git branch

切换分支:git checkout 或者git switch

创建+切换分支:git checkout -b 或者git switch -c

合并某分支到当前分支:git merge

删除分支:git branch -d

七.解决冲突

发表评论

电子邮件地址不会被公开。 必填项已用*标注