zoukankan      html  css  js  c++  java
  • GIT学习笔记

    GIT学习笔记


    看着SovietPower一直没有弃更,还发现自己的博客还有人看,所以想继续写写。
    以后尝试记录下自己的学习笔记,课程作业一类的。


    1、设置用户名和设置邮箱

    $ git config --global user.name "menjianotng" 
    $ git config --global user.email "menjiantong@foxmail.com"
    $ git config user.name // 查看用户名
    $ git config user.email // 查看用户邮箱
    $ git config --global --unset user.name "menjiantong" // 取消设置的用户名
    $ git config --global --unset user.email "menjiantong@foxmail.com" //取消设置的邮箱
    

    2、创建本地库

    版本库:版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

    $ cd F:
    $ mkdir ceshi_git
    $ cd ceshi_git
    $ pwd // 显示当前路径
    $ git init // 初始化,把这个目录变成Git可以管理的仓库
    

    3、把文件添加到版本库

    git其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

    首先本地创建一个文件(readme.txt),并将这个文件放到ceshi_git下(子目录也可以),否则git找不到。然后我们尝试将这个文件添加到git仓库。

    $ git add readme.txt 
    $ git commit -m "提交了readme.txt" // 引号中为本次提交的说明
    [master (root-commit) eaadf4e] wrote a readme file
     1 file changed, 2 insertions(+)
     create mode 100644 readme.txt
    

    git add < file> 可以使用多次,然后使用一次git commit一次把他们提交到git仓库。

    4、版本回退

    此时我们可以不停的修改readme.txt,并且再每次修改了提交,然后如果对文件修改是出了错误,便可以使用git查看修改了什么地方,并回退的最后一次正确的地方。

    $ git log // 查看修改日志
    $ git log --pretty=oneline // 以一行形式查看
    $ git reset --hard HEAD^ // 回退到上一版本
    $ git reset --hard HEAD^^ // 回退到上上版本   
    $ git reflog // 查看命令历史,并可以查询到每个版本的id,可以版本前进(与回退对应)
    $ git reset --hard ____  // ____上可以输入每个版本的id
    
    

    5、工作区和暂存区

    工作区(Working Directory):电脑里能看到的目录,比如ceshi_git文件夹就是一个工作区
    暂存区:即stage部分,使用git add可以将文件添加到这里
    master:即git控制的仓库,Head为指针。

    注意:每次修改没有将文件放到stage(暂存区),必须用git add命令才可以更新到stage,然后用git commit提交到仓库。
    比如,
    1、git add readme.txt
    2、修改readme.txt
    3、git commit -m "提交readme.txt"
    此时提交的是未改变的readme.txt

    $ git diff HEAD -- readme.txt // 提交后,可以使用此命令可以查看工作区和版本库里面最新版本的区别
    

    6、撤销修改

    如果在本次工作区将本地文件写错了,可以使用git从本地版本库恢复。
    1、本地文件写错,但没有添加到暂存区(stage),此时

    $ git restore <file> // 从本次版本库恢复
    $ git checkout -- <file> // 从本地版本库恢复
    

    2、本地文件写错,提交到了暂存区

    $ git restore --stated <file>
    $ git reset HEAD <file>
    

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

    3、提交到了暂存库,使用版本回退恢复。

    7、删除文件

    现在从本地工作区删除了一个文件,git仓库中却有这个文件。

    1、如果确实需要删除,可以从git仓库中删除。

    $ git add text.txt // 添加text.txt到缓存区
    $ git commiet -m "提交text.txt到git仓库" // 添加text.txt到git仓库
    $ rm text.txt //删除本地工作区的text.txt
    $ git status // 此时显示delete text.txt,此修改没有进入缓存区
    $ git rm text.txt // 从git仓库删除,
    $ git status // 此时显示delete text.txt,此修改已经进入缓存区
    $ git commit -m "删除了text.txt" // 此时git仓库已经更新,没有了text.txt
    

    2、不小心删除了,可以从本地git仓库恢复

    $ git checkout text.txt // 从本地git仓库恢复
    

    8、远程仓库

    cd ~/.ssh //查看本地ssh key
    ls // 当前文件下的所有文件,包含 id_isa 和 id_isa.pub 
    $ ssh-keygen -t rsa -C "youremail@example.com" // 如果没有,使用这个生成密钥,一路回车
    

    (id\_rsa)(id\_rsa.pub)这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

    9、使用github建立仓库

    1、添加ssh_key
    登录github->setting->ssh and GPG keys->New ssh keys

    将id-isa.pub的内容复制进去即可

    2、创建github仓库

    创建成功后

    这里有仓库的https和ssh,github推荐使用一下代码创建一个新的仓库或者从本地的git版本库上传。

    //create a new repository on the command line 创建github远程仓库
    echo "# ceshi_git" >> README.md
    git init
    git add README.md
    git commit -m "first commit"
    git branch -M main
    git remote add origin git@github.com:menjiantong/ceshi_git.git
    git push -u origin main
    
    //push an existing repository from the command line 上传本地github仓库
    git remote add origin git@github.com:menjiantong/ceshi_git.git // menjiantong为用户名,ceshi_git为远程github仓库名
    git branch -M main // 将默认分支改名为main
    git push -u origin main
    

    3、上传本地git仓库到github远程仓库
    在本地的ceshi_git仓库下运行上面的三行命令,因为我们添加了本地ssh_key,所以是可以推送上去的。
    添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

    通过上面三行可以将本地库与远程仓库关联,以后每次本地修改都可以推送到远程仓库进行更新。
    本地库也可以和远程库取消关联(但github远程仓库不会真正删除,需要从网站上删除)

    $ git push // 当本地仓库进行了改变时,使用这一行命令可以将本地库推送到和远程仓库
    $ git push origin master // 应该等同于上面,廖雪峰博客写的
    $ git remote -v // 查看远程仓库信息
    origin  git@github.com:michaelliao/learn-git.git (fetch)
    origin  git@github.com:michaelliao/learn-git.git (push)
    $ git remote rm origin
    

    未完


    参考:廖雪峰的博客

  • 相关阅读:
    Linux进程相关的一些笔记
    [Project Euler] 来做欧拉项目练习题吧: 题目007
    [Project Euler] 来做欧拉项目练习题吧: 题目015
    [Project Euler] 来做欧拉项目练习题吧: 题目009
    [Project Euler] 来做欧拉项目练习题吧: 题目017
    [Project Euler] 来做欧拉项目练习题吧: 题目014
    [Project Euler] 来做欧拉项目练习题吧: 题目013
    [Project Euler] 来做欧拉项目练习题吧: 题目006
    [Project Euler] 来做欧拉项目练习题吧: 题目008
    [Project Euler] 来做欧拉项目练习题吧: 题目012
  • 原文地址:https://www.cnblogs.com/mjtcn/p/15320998.html
Copyright © 2011-2022 走看看