Git初学者的实践总结(摘自廖老师)

本文摘自廖老师的Git教程

当你已经安装好Git后,进入Git Bash,会提示要输入用户名和邮箱。

$ git config --global user.name "Your Name"
$ git config --global user.email "xxx@xxx.com"

在设置好你的名字和邮箱后,可以通过命令pwd来查看当前的目录。
创建版本库
cd来锁定到你要添加版本库的路径

$ cd /e/Git

可以再用pwd来查看路径是否正确,确定好后就可以用命令mkdir添加你的版本库了(当然你可以手动在Git下创建,请尽量使用英文起名来避免产生麻烦)

$ mkdir learngit
$ cd learngit
$ pwd
/e/Git/learngit

使用git init命令把这个目录变成Git可以管理的仓库

$ git init

把文件添加到版本库
Windows用户请不要使用自带的记事本编辑任何文本文件(可能会遇到很多问题,因为开发团队的一点点画蛇添足),所以推荐使用免费的Notepad++来编辑文本(注意将默认编码设置为UTF-8 without BOM)。
注:编写的文件(如:readme.txt)要在learngit目录下才能被Git管理。
此时编写好的文件处在工作区,要将readme.txt添加到版本库需要两步。
暂存区
第一步:使用命令git add将文件添加到暂存区(版本库的左部分),此步还未提交到分支,只是暂存

$ git add readme.txt

执行命令后,没有任何显示证明你是对的(没有消息就是最好的消息),此时可以用命令git status来查看当前仓库状态,出现一堆字表示还未将该文件提交到仓库。
第二步:执行git commit命令将文件提交到分支(版本库的右部分)

$ git commit -m "你对本次改动的注释"

此处若不写-m “注释”,则执行后会跳到Vim,所以为了带来不必要的麻烦,也为了给自己更清晰的改动思路,把注释写上还是好的。
此时再用命令git status查看仓库的状态,则会显示working tree clean,表示暂存区的所有文件都已经提交了。因为commit可以提交多个文件,所以你可以添加多个文件到暂存区后一起提交。(这就是为什么要分两步提交的一个原因了)

$ git add readme.txt
$ git add test.txt
$ git commit -m "add 2 files"

小结:
初始化仓库:git init
添加文件到仓库:

$ git add readme.txt
$ git commit -m "add a file"

到这里你可以去实践一下啦
修改及再次提交
我们在Notepad++中修改文件(删去一个单词)

Git is a version control system.
Git is free software.

修改之后的文件需要再次提交(同样是那两步),我们使用命令git status可以查看当前仓库的状态,它告诉我们readme.txt文件被修改了

$ 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来查看具体修改的位置及内容

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software. 

这里我们可以看到将原来的句子Git is a version control system.添加了一个词distributed,后面的一个句子没有改变。
再我们确定了修改的内容之后就可以提交了,这里不再重复,如果你有些忘记了,请翻回上边把文件添加到版本库哦~
版本回退
手滑误删是最常见的事了,不过在Git中总是可以补救的
使用命令git log查看提交历史,即查看都有哪些版本

$ git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:06:15 2018 +0800

    append GPL

commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:03:36 2018 +0800

    add distributed

commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 20:59:18 2018 +0800

    wrote a readme file

在commit后面的一串数字是版本号,我们可以通过版本号来实现回退版本,若你觉得显示的太繁琐可以在命令后加参数即git log --pretty=oneline来显示出一行(版本号及你的注释)

$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file

下面我们使用命令git reset回退版本(后面还有它的另一个功能)

$ git reset --hard HEAD^
HEAD is now at e475afc add distributed

这里的参数--hard会在以后讲到,请先用着嘿嘿,HEAD表示当前版本,类似指针指向当前版本,则HEAD^是上一个版本,类似HEAD^^则是上上个版本,若十多个则可以使用HEAD~10则是往上10个版本。
这里我们可以使用命令cat来查看文件内容,看看是否回退了版本。

$ cat readme.txt
Git is a distributed version control system.
Git is free software.

这时我们还可以找回之前回退被顶掉的版本,用版本号来指定回到版本,只需版本号的前几位即可。翻回之前查看的版本号

$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL

此时的版本号已经改变
可见我们可以通过查看版本号来实现回到指定的版本,但如果我们找不到被顶掉的版本号怎么办?通过指令git reflog来查看你的每一步命令

$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file

这时通过查看命令我们可以看到最新commit的是1094a,我们就可以通过版本号来实现了。
小结
查看提交历史:git log,便于回退版本
查看命令历史:git reflog,便于找回版本
撤销修改
这里有两种情况
一种情况是在本地修改也就是在工作区,还没有用git add readme.txt来将文件添加到暂存区时,这时使用命令git checkout -- readme.txt来撤销会返回到和版本库(暂存区和提交区)一样的状态,也就是把在工作区的修改撤销了。

另一种情况是在已经添加到暂存区,此时使用命令git reset HEAD readme.txt修改,撤销会将暂存区的修改撤销掉然后重新放回到工作区。git reset命令不仅可以回退版本,也可以将暂存区的修改回退到工作区。这时用HEAD表示最新版本。

总之就是返回到最近的一次git addgit commit时的状态(需要理解一下)
小结
撤销工作区的修改:git checkout -- <filename>
撤销暂存区的修改:git reset HEAD <filename>
若已提交,请参考回退版本。

若你还是觉得不懂的话请移步廖老师的Git教程,讲的真的很好!
(https://www.liaoxuefeng.com/wiki/896043488029600/896067008724000)

还会陆续通过自身实践补充,若有错误的地方请及时与我沟通或下方评论。本人是小白一个,希望会得到鼓励嘻嘻。

下篇我会总结如何将本地仓库关联到Github上的远程仓库、远程库克隆到本地及分支的管理等。后续还会出详细的Github Desktop的使用来代替较复杂的Git(但是若是你基本熟悉了Git的命令会更加快速的接受Github Desktop)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值