Git详细使用教程

远程仓库

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。

GitHub添加远程仓库

  1. 首先安装git程序,按照默认项安装即可

  2. 安装打开git bash应用程序

  3. 设置全局用户名和邮箱

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

    该配置信息在用户/管理员目录中可以查看到

  4. 通过cd指令切换目录并在合适的地方创建一个空目录

    $ cd f:/git
    	//删除目录指令
    	$ rm -r java-advance/
    	//删除普通文件指令
    	$ rm -r readme.md
    $ mkdir leetcode
    $ cd leetcode/
    $ mkdir dp
    $ cd dp
    $ git init
    

    git init初始化之后,目录下会生成一个.git目录,(跟踪版本管理库)
    查看该目录是否存在的指令

    $ ls -ah
    

将文件添加到版本库

  1. 先把文件放到git bash当前目录下
    首先用git add 命令,把文件添加到仓库:
    $ git add a.java
    
    再使用git commit命令,把文件提交到仓库:
    $ git commit -m "wrote the climbStair file"
    [master (root-commit) f94896c] wrote the climbStair file
     1 file changed, 16 insertions(+)
     create mode 100644 ClimbStair.java
    
  2. 修改java文件,把文件内容修改后可以通过git status查看仓库当前的状态
    $ 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:   ClimbStair.java
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
    
    上述表明文件经过了修改,但并没有准备提交
  3. 通过git diff查看我们是如何修改这个java文件的
    $ git diff ClimbStair.java
    diff --git a/ClimbStair.java b/ClimbStair.java
    index 3f4f04e..73e2eab 100644
    --- a/ClimbStair.java
    +++ b/ClimbStair.java
    @@ -12,5 +12,6 @@ public class ClimbStair {
                dp[i] = Math.min(dp[i-1] + cost[i], dp[i-2] + cost[i]);
            }
            return Math.min(dp[len-1], dp[len-2]);
    +               //changed file // **表明该行是新添加的**  
        }
    }
    \ No newline at end of file
    
    
  4. git add之后可查看status:
    $ git status
    On branch master
    Changes to be committed:
    (use "git restore --staged <file>..." to unstage)
          modified:   ClimbStair.java
    
    
    add之前是not stage,add之后是to be committed
    commit之后,没有需要提交的修改,工作区干净
    $ git status
    On branch master
    nothing to commit, working tree clean
    

版本切换

  1. 先通过get log或者 get log --pretty=oneline 展示日志信息
    $ git log --pretty=oneline
    674606b6b46fbac3caec7578872ad54c44d83913 (HEAD -> master) add distributed
    f94896c00bc1dc91a7c13a2719a6ade76996ec89 wrote the climbStair file
    
  2. 通过git reset指令把java文件回退到上一个版本
    $ git reset --hard HEAD^
    HEAD is now at f94896c wrote the climbStair file
    
    此时已经回退到上一个版本了
  3. 此时通过git reset --hard id(前几位,只要能够与其他id区分开即可)将文件转到指定id版本。
    $ git reset --hard 6746
    HEAD is now at 674606b add distributed
    

工作区和暂存区

创建的比如dp目录,就是一个工作区(Working Directory)
隐藏目录.git就是git的版本库,版本库里面的index(Stage)就是暂存区
git为我们自动创建了一个master分支
指向master的指针叫做HEAD
工作区&版本库示意图
把文件添加到Git的两步走策略

  1. 用git add把文件修改添加到暂存区stage
  2. 用git commit提交更改,把暂存区的内容提交到当前分支(当前只有一个master分支)

如果在git中先把工作区中的文件提交了,然后再对工作区中的文件进行修改,修改完成后提交只会提交stage中的修改部分
即:

修改文件=>git add文件=>修改文件=>git commit
这样操作过后第二次的修改并没有提交

提交后,我们可以用 git diff HEAD – readme.txt 命令去查看工作区和版本库里面最新版本的区别

撤销修改

  1. 如果还没提交到暂存区,则直接使用git checkout – fileName把文件在工作区全部修改给撤销掉
  2. 如果已经git add了,还没有commit

    需要把暂存区的修改撤销掉重新放回工作区

    $ git reset HEAD readme.txt //git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,HEAD表示最新版本。
    Unstaged changes after reset:M    readme.txt
    
    然后丢弃工作区的修改就OK了
  3. 既add了,又commit了之后则回退到上一个版本,回退版本内容。

删除文件

删除文件分为删除工作区文件和删除版本库文件

  1. 删除工作区文件:
    $ rm LICENSE.txt
    
  2. 删除工作区文件后,版本库中文件依然存在,可以用版本库中文件恢复工作区文件:
    git 
    
  3. 要是要从版本库中删除文件,就在签名指令加一个git
    此时工作区与版本库中的文件就全部被删除了

本地仓库与与服务器传输

本地Git仓库和GitHub仓库之间的传输是通过SSH加密,故而需要创建SSH Key,

$ ssh-keygen -t rsa -C "youremail@example.com"

可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人

GitHub添加公钥

个人中心=>setting=>SSH & GPG keys=>将ras.pub中的内容完整复制到Key内
在这里插入图片描述

注意,第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告。因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了

链接GitHub

在本地中断输入命令行:

ssh -T git@github.com

下方显示successful表示链接成功

连接GitHub上的仓库

$ git remote add origin https://github.com/zdh2018/leetcode-dp.git

或者

$ git remote add origin git@github.com:zdh2018/leetcode-dp.git

通过git remote -v可以查看是否连接上了本地仓库
然后推送本地代码到GitHub仓库

$ git push -u origin master

第一次要加-u,将本地的master内容与远程的master关联起来
将GitHub仓库的代码同步到本地

$ git pull origin master --allow-unrelated-histories

删除远程库

实际上为解除本地和远程仓库关系

$ git remote rm origin

GitHub上删除某个文件

GitHub上只能删除仓库,却不能删除文件或者文件夹,只能通过指令来实现删除。

$ git pull origin master
$ dir
$ git rm -r --cached target
$ git commit -m "delete targer"
$ git push -u origin master
//操作完成
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值