【Git入门】Try Git学习笔记
Try Git官网教程链接: https://try.github.io/levels/1/challenges/1
廖雪峰Git学习链接:别点我
本教程的主要内容:
- git仓库的新建
- 文件的添加、提交、修改、删除、撤销、复原
- 对提交日志、仓库状态、分支情况、文件改动等查询功能
- 远程仓库
- push和pull指令
- 分支的新建、切换、合并
- git仓库的新建
首先在你的计算机中选择合适的路径新建一个文件夹。如,我在F盘下新建文件夹Try_Git_learn。进入到该文件夹,点击右键,运行Git Bash Here,进入到Git的终端控制台窗口,如图:
1.1、输入git init
git-init - 创建一个空的Git仓库(Repository)或重新初始化一个现有仓库。通过这个指令,你的当前文件夹下会产生一个隐藏文件夹为[,git],这个文件是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
1.2、输入git status
git-status 显示工作树的状态,包括:
A.显示索引文件和当前HEAD提交之间存在差异的路径。
B.显示工作树和索引文件之间存在差异的路径
C.工作树中未被Git跟踪的路径(并且不会被gitignore指令忽略))。
说明:工作树即是当前计算机文件夹;索引文件即是索引区中包含的文件,可理解为即将提交的缓存区。
1.3、输入git status
在重复输入这个指令前,需要在当前路径下新建一个txt文件(如test.txt),然后在终端输入git status观察会发生什么变化。
此时,终端提示,test.txt这个文件未被追踪(untracked),需要通过git add指令将添加到索引文件。
1.4 git add
git add 将文件添加到索引。
此命令使用工作树中的当前内容更新索引,以准备下一个提交的内容。它通常会将现有路径的当前内容作为一个整体添加,但是也可以使用一些选项来添加仅适用于所应用的工作树文件的部分更改的内容,或删除工作树中不存在的路径了。
“索引”包含工作树内容的快照,这个快照被作为下一个提交的内容。因此,在对工作树进行任何更改之后,在运行commit命令之前,必须使用add命令将新的或修改的文件添加到索引。
这个命令可以在提交之前执行多次。它只在add命令运行的时候添加指定文件的内容;如果您希望在下一次提交中包含后续更改,则必须再次运行git add以将新内容添加到索引。可以使用git status命令来获取哪些文件有更改的下一个提交阶段的摘要。
git add命令默认不会添加被忽略的文件。如果在命令行上明确指定了任何被忽略的文件,那么git add将会失败并显示被忽略的文件列表。忽略由Git执行的目录递归或文件名匹配所达到的文件(在shell之前引用您的globs)将被忽略。 git add命令可用于使用-f(强制)选项添加忽略的文件。
1.5 git status
在通过git add将test.txt添加到索引后,再次通过git status来观察git状态。如图:
此时终端提示,已经完成新文件的添加(可以通过git rm --cached<file>..指令来取消添加的文件),这些文件待提交。
1.6 git commit
git commit 将索引的当前内容与来自描述更改的用户的日志消息一起存储在新提交中。
以上操作添加后的文件处于一个缓存中(索引),还没有添加到仓库中,需要通过该指令进行提交到git管理仓库中。
git commit -m "Add cute octocat story"是使用了git commit -m<msg>指令,<msg>是提交消息,我觉得是一种备注信息,便于记录。这里我改一下<msg>内容试一下,如图:
1.7 git add '*.txt'
在使用该指令前,需要在本地文件夹新建几个txt文件,并同时使用git status进行显示,如下:
其中文件夹“testfamily”又包含了两个txt文件。
通过git add'*.txt'指令,将所有未被git追踪的txt文件都添加到索引,输入后,终端是没有返回信息的,需要接下来使用git status来查看,如图:
1.8 git commit
重复git commit -m指令,将索引中的文件进行提交。使用备注信息“add all txt file”,如图:
1.9 git log
git log 显示提交日志。输入后终端显示如下:
里面只显示了提交信息,没有具体提交的文件描述。所以这里体现了使用git commit -m<提交信息>时,提交信息的重要性。
1.10 git remote
git remote 管理您追踪分支的存储库(“远程”)。手册英文解释为:Manage the set of repositories ("remotes") whose branches you track.
该指令的作用是将本地仓库添加到远程仓库中,所以在使用该指令前,需要登录自己的账号在GitHub上进行登录,并创建远程仓库。如图:
使用以上git指令进行上传远程仓库时,使用上图中的网址。
即git remote add origin https://github.com/IamBaoMouMou/Try-Git.git。
1.11 git push
git push 使用本地引用更新远程引用,同时发送完成给定引用所需的对象。简单的可以理解为将本地数据上传到服务器。
后面加-u origin master是为了便于git 记住该参数,下次可直接使用git push。其中origin是远程名称(是通过上条指令git remote add 建立的),master是分支名称。
输入以上指令,终端显示如下:
此时完成上传,同时可以登录自己的GitHub查看刚才新建的Try-Git仓库中已经存在上传的数据了,如图:
1.12 git pull
git-pull - 从另一个存储库或本地分支获取并合并
其完整的指令格式为:
git pull [options] [<repository> [<refspec>…]]
根据英文手册进一步理解该指令:(可跳过)
将远程存储库中的更改合并到当前分支中。 在默认模式下,git pull是git fetch的缩写,然后是git merge FETCH_HEAD。
更确切地说,git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。 使用--rebase,它运行git rebase而不是git merge。
<repository>应该是传递给git-fetch的远程仓库的名字。 (refs / heads / *:refs / remotes / origin / *)可以命名一个任意的远程引用(例如,一个标签的名称)或者甚至是一个引用集合。 通常它是远程存储库中分支的名称。
从git-branch --track设置的当前分支的“remote”和“merge”配置中读取<repository>和<branch>的缺省值。
在使用这条指令时,需要自己在远程仓库新建一个文件,以模拟其他分支对远程仓库进行了更改,如图:
在运行指令git pull origin master后,终端显示如下:
终端提示,有一处更改,新增了文件yellow_test.txt文件,同时可以查看自己本地文件夹也多了一个文件,这个相当于从远程仓库下载到本地仓库。
1.13 git diff
git diff 在工作树和索引或树之间显示更改,索引和树之间的更改,两棵树之间的更改,两个Blob对象之间的更改或磁盘上两个文件之间的更改。
在执行该指令前,为了观察该指令的效果,需要对本地仓库进行更改,我使用git rm 指令本地移除了yellow_test.txt文件在完成以上文件更改后,使用git diff HEAD查看终端显示,如图:
HEAD是一个指针,在你所有不同的提交中保持你的位置。 默认情况下,HEAD指向最近的提交,所以它可以作为一个快速的方式来引用那个提交,而不必查找SHA。
1.14 git add
首先在本地文件夹testfamily中新建一个文件dog_test.txt。然后使用git add将其添加到索引中。自己可以使用git status进行观察。
未完待续....
Tips:所有git指令 可以通过在终端输入git help git打开本地的Git 指令手册。也可以在浏览器输入以下路径:
<file:///C:/Program%20Files/Git/mingw64/share/doc/git-doc/git.html>手册中对每条指令进行了详细的说明。