git入门配置及常用命令

配置及生成SSH

Git配置

Git安装完之后,需做最后一步配置。打开git bash,分别执行以下两句命令

git config --global user.name “用户名”
git config --global user.email “邮箱”

SSH配置

  1. 打开 git bash
  2. 执行生成公钥和私钥的命令:ssh-keygen -t rsa 并按回车3下(为什么按三下,是因为有提示你是否需要设置密码,如果设置了每次使用Git都会用到密码,一般都是直接不写为空,直接回车就好了)。会在一个文件夹里面生成一个私钥 id_rsa 和一个公钥id_rsa.pub。(生成的公私钥在 .ssh的文件夹里面)
  3. 在.ssh文件夹里打开 id_rsa.pub 文件,复制内容,在 github 上进行添加,即完成公钥配置。

创建版本库

  1. 新建一个要放代码的文件夹
  2. 路径切换到文件夹所在目录,通过git init命令把这个目录变成Git可以管理的仓库:
    输完会出现如下信息$ Initialized empty Git repository in 文件目录/.git/(.git就是我们常说的版本库)
  3. 将代码放到创建的文件夹下,然后$ git add 文件名+后缀,执行完此句命令,不会有什么显示就说明添加成功。如果有很多文件,可以继续重复这步。
  4. 添加完成后,执行$ git commit -m "此次提交的描述"

查看版本记录

命令:$ git log
需要注意最上面的是最新一版。

本地分支版本回退

命令:$ git reset --hard HEAD^(以回退到上一个版本为例。)

补充:在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD ^ ,上上一个版本就是HEAD ^^ ,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

要是后悔回退了怎么办??

在你回退版本后再用$ git log查询时,回退前最新版本已经不见了,那怎么办呢?别急。

  • 只要上面的命令行窗口还没有被关掉,你就可以顺着往上找,找到回退之前最新版本的版本号, 1094adb…,于是就可以指定回到未来的某个版本:
    命令:$ git reset --hard 1094a(假设版本号前几位是1094a,在这里只需要前几位就可以,推荐5-6位)

  • 命令行窗口关了怎么办呢?
    这时候我们另一个命令就派上用场,命令:$ git reflog,这个命令会记录你每一次的命令,从而你就可以找到对应的版本号,然后就可以让Git内部指向当前版本的HEAD指针定位到指定位置。

简单说一下工作区和暂存区

在这里插入图片描述
工作区:编写代码的文件夹。
缓存区:暂存代码的修改,等待提交到分支。
分支:保存每一次提交的版本。

  • 上文提到版本库(.git):Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
  • 前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
    • 第一步是添加到暂存区:git add 文件名

    • 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前本地分支

由此,我们一定要记住,提交修改一定要先将其add到暂存区。

撤销修改

  • 工作区修改,但未提交到暂存区
git checkout  --文件名
// 将工作区撤销到与暂存区相同的状态。
// 若之前提交过暂存区后,又修改了文件,会撤销到提交暂存区的状态。
// 若暂存区为空,会撤销到版本库的状态。
  • 提交到暂存区,但未添加到本地分支
git reset HEAD 文件名
// 这个命令执行完后,就会撤销到提交暂存取前的状态,即上一步的状态。
  • 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。

删除文件

  • 当你删除了一个文件,工作区和版本库就不一致了。此时可以用git status查看删除了哪些文件。
  • 当你确认要删除,则使用git rm 文件名加后缀,并且git commit -m "描述",此时版本库的文件就被删除了。还有一种情况是你误删了,这时版本库还有这个文件,因此你可以使用$ git checkout -- 文件名加后缀进行还原。
  • 当文件提交到版本库永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

添加远程仓库

  • 关联 命令git remote add origin git@server-name:path/repo-name.git;这里的最后一部分为ssh克隆地址
  • git push -u origin master第一次推送master分支的所有内容
  • 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

从远程仓库克隆

  • 前提:在github有一个仓库。若是新建,记得勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件
  • 克隆命令:$ git clone github仓库克隆地址.

在这里 github 克隆地址分为两类,一类是ssh,一类是https。但通过ssh支持的原生git协议速度最快。使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

分支管理

  • 当只有一个分支时,master指向最新提交的版本,HEAD 指向 master。如图
    在这里插入图片描述

  • 当我们创建新的分支,例如dev时,Git新建了一个指针叫 dev,指向 master 相同的提交,再把HEAD指向 dev。从现在开始,对工作区的修改和提交就是针对 dev 分支了,比如新提交一次后,dev 指针往前移动一步,而 master 指针不变;假如我们在 dev 上的工作完成了,就可以把 dev 合并到 master 上。

  • 使用到的命令:

    • 创建+切换到新创建的分支 $ git checkout -b dev
    • 创建分支 $ git branch dev
    • 切换分支 $ git checkout dev
    • 删除分支 $ git branch -d dev or $ git branch -D dev (强制删除未合并的分支)
    • 重命名分支 nginx git branch –m oldname newname
    • 查看当前分支 $ git branch.该命令会列出所有分支,当前分支前面会标一个*号。
    • 推送本地分支 git push origin branch-name,若推送失败,则先用git pull 拉取最新的远程提交。
    • 建立本地分支和远程分支的关联git branch --set-upstream branch-name origin/branch-name
    • 克隆远程非master分支git checkout -b dev origin/dev需要克隆其他分支需要将这样新建分支。即指定远程的新建分支。
    • 分支合并
         git merge dev //不保留合并历史
         git merge --no-ff dev //保留合并历史记录
    

解决冲突

什么是冲突?
假设现在有master分支和Dev分支。我们在本地对Dev分支中一个文件的一行进行了修改,并提交到Dev分支上;接着我们切换到master分支上,对同一文件、同一行进行不同的修改,并且提交到master分支。master分支和Dev分支各自都分别有新的提交。而这两者的提交内容修改不同, git无法判别到底要进行怎样的合并。

这时就需要手动去修改成我们希望的内容,然后再提交。

忽略特殊文件

  • 在Git工作区的根目录下创建一个特殊的.gitignore 文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

忽略原则

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库;
    3.忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值