Git学习笔记
2017/6/16
这次的笔记主要是笔者在观看莫烦的Git教学视频中进行记录的
一 创建git仓库
首先介绍一下如何创建一个git仓库
- 首先需要选择一个文件夹作为你的仓库。
- 设置git的全局设置:
git config --global user.name "chencheng"
git config --global user.email "chenchengsmail@qq.com"
设置使用者的名字和email之后,在每次提交的时候就会显示该用户提交的。 - 在文件夹目录下初始化该仓库
git init
这样该文件夹就变成了文件管理库
并且在该文件夹下面会出现一个.git文件夹
(由于是“.”开头的文件夹所以文件夹是隐藏显示的,使用
ls -a
来进行所有文件的显示,注意不要手贱去修改文件夹里面的文件)
- 使用
git status
来查看仓库的状态,由于我们没有提交任何东西到仓库,所以里面是没有东西的。(如果有的时候嫌输出的字太多,使用git status -s
可以查看简略的参数状态)
二 在仓库中添加文件
如何在新建好的git仓库中新增文件
- 假如这时候在仓库中添加demo.py这个文件,那么再使用
git status
,此时便会发现仓库里面提示说有文件没有被添加到git管理库中去。
这个时候使用git add demo.py
将demo.py这个文件添加到仓库中去。
(Tips: 如果想一次性将文件夹中所有未被添加的文件都添加进行,使用git add .
来添加所有) -
下面使用一张官网的图片来对整个过程进行介绍:
- 首先仓库中的文件刚开始被新建出现之后都是处于Untracked状态(这时候git追踪不到的状态),此时我们要将这些新的文件都进行add到staged状态中去。
- 文件被add到了staged状态之后就可以被跟踪修改也可以被提交了。
- 要将文件从staged状态下commit上去则使用
git commit -m "create demo.py"
即可。
这里的-m后面加上的字符串代表的是本次提交的信息。
三 查看仓库里面提交的信息
如何查看已经提交之后的信息
- 提交了之后,使用
git log
命令来查看仓库里面的信息。会发现我们上一次提交的文件信息。 - 如果对提交的文件进行修改然后再使用
git status
查看就会出现提示说文件处于修改状态,这就是git跟踪到了文件已经被修改了。这时候如果我们要提交修改,则跟上面步骤一致,先使用git add demo.py
将变化的文件add到staged状态中去,然后再使用git commit -m "change 1"
来提交上去。这个时候再使用git log
命令来查看提交的信息就会发现现在多了一条刚刚提交上去的信息。
四 查看文件修改情况
如何查看修改文件的情况
- 再对同一文件进行修改,使用
git status -s
命令来对修改内容进行查看,此时文件又会处于修改状态,此时使用命令git diff
可以查看到文件的大致修改情况。
使用git add .
将所有的变化都add上去变成staged状态,此时如果要再查看add之后的变化信息,则要使用git diff --cached
来进行查看。这个时候再将文件进行修改,则会出现两个modified状态,一个使add上去的绿色modified,一个是红色的没有进行提交的modified状态。此时如果还要对变化进查看则需要使用到git diff HEAD
,这样对两个文件的变化都会进行显示。同理可以查看某个状态的变化情况。
五 回到从前的版本状态
当我们后悔提交之后,如何回到之前commit的状态下的文档情况
- 先可以查看一下提交的信息,使用
git log --oneline
来进行缩写显示。 - 如果这个时候我们发现上一次的提交有点问题(并且文件名也被我们改变了),希望重新提交上一次的东西,但是又不会改变整体的log状态,这个时候使用
git commit --amend --no-edit
这样就可以使用这一次的提交来代替上一次的版本而不是多出一次log(可以看到这个时候的ID变了) - 如果更改后add到了staged状态,但是发现还想要继续进行修改再提交,那么这个时候可以使用
git reset demo.py
来将文件从staged状态变成modified状态从而可以继续进行修改。 - 如果希望回到之前提交的版本中去,或者是上一个版本中的内容被意外删除了,这个时候就可以使用
git reset --hard HEAD
来对上一个版本的内容进行恢复。(比如我提交了demo.py文件,但是我不小心将这个文件删除了,那么这个时候我使用这个命令就会将已经删除了的文件恢复出来。) - 如果我要回到之前提交的前两次内容的情况下,我可以使用
git reset --hard^^
来回到上两次提交的版本情况中去。
如果要回到前100次提交的情况同理,使用git reset --hard~100
即可;
此外还可以使用特定的版本号来进行跳到特定版本情况中去,使用git reset --hard 2a23423
即可跳到版本号为2a23423的版本中去。这里不需要看git log
中那一长串的版本号,而只需要使用git log --oneline
中较短的版本号即可。 - 这个时候我们反悔了,而这个时候使用
git log
又看不到我们前面最先前的版本号了,那么这个时候我们就需要使用到git reflog
来查看之前提到的所有版本,记下特定的版本号(假设为xxxxxxx)之后使用git reset --hard xxxxxxx
然后再跳到想跳到的版本中去即可。
又或者是跳到对应的head指针中去使用git reflog
查看当前指针指向的位置(假如我们此时需要跳到HEAD@{1})然后再使用git reset --hard HEAD@{1}
即可跳到该指针指的的位置中去即可。
六 删除文件
如果想要删除文件(想删除)或者是不小心删除了文件(想恢复)
- 在版本库中,有一些文件需要删除,那么可以直接删除本地文件。这个时候通过使用
git status
查看状态就能看到git发现了版本中的一些文件被删除了。这个时候使用git rm 文件名
即可将版本库中的文件进行删除,然后再进行提交git commit -m "delete some checkfile"
即可完成删除。 - 另外一种情况,本地的文件并不想进行删除,而是误删的。这个时候可以使用
git checkout -- 文件名
即可轻松将误删文件恢复到最新的版本。
换句话说,只要你先前的文件都进行了commit,那么久不用担心文件被误删的情况了O(∩_∩)O
七 将仓库上传到Github
假设要将本地仓库中的内容上传到Github上去
- 首先在Github上新建一个仓库,新建之后又命令提示如何将当前本地的仓库提交到网络上的Github仓库中去(大概长这样)
git add origin https://github.com/Cheneng/Pyplot.git
后面会提示填写Github信息。
然后使用git push -u origin master
即可将本地的master分支上传至Github仓库中去。同理如果有不同的分支名字,则使用git push -u dev
即可将dev分支上传。 - 本地的仓库上传之后,如果更改了本地的代码并且commit了之后,想要同步仓库至Github上去,此时只需要直接使用
git push -u origin master
即可直接推送上去。
简而言之,只需要关联一次Github,后面再上传就只需要使用
git push -u origin 分支名
即可将当前本地仓库中的内容上传到Github上的分支中去。