阅读 242

史上最浅显易懂的Git入门教程,操作总结!(收藏)

如未特别说明,所有命令均默认在Git Bash工具下执行

下载Git软件,安装 (windows系统)

git-scm.com/downloads

安装完成后,在开始菜单里找到“Git”->“Git Bash”,打开如下图


设置你的名字和邮箱,目的是:告诉git你是谁
在命令行中输入:
git config --global user.name "Your Name"
git config --global user.email "Your Email"复制代码

创建Git版本库

mkdir project    //创建文件夹
cd project       // 进入项目文件夹
git init         //变成git管理的仓库    Reinitialized existing Git repository in E:/project/.git复制代码

到这里,你的本地仓库算是创建完毕了!

添加远程库

当你创建好本地仓库,需要在github上面添加仓库,并且让两个仓库同步
第一步:自行到github 或者码云 创建一个git仓库,这里简单,请自行研究,或者评论提问
第二步:可以从这个仓库克隆出新的仓库 “或者” 可以把一个已有的本地仓库与之关联(建议使用ssh连接)   会有ssh警告(看下面ssh key 配置)

//打开 “Git”->“Git Bash”
克隆仓库:
    git clone 你的仓库地址
与本地仓库关联:
    git remote add origin 你的仓库地址复制代码
第三步:本地库的所有内容推送到远程库上

git push -u origin master复制代码

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。


ssh key 配置

连接建议使用ssh



当使用git方式下载时,如果没有配置过ssh key,则会有如下错误提示:


执行以下命令生成秘钥

ssh-keygen -t rsa -C "这里换上你的邮箱"

执行命令后需要进行3次或4次确认:确认秘钥的保存路径(如果不需要改路径则直接回车);如果上一步置顶的保存路径下已经有秘钥文件,则需要确认是否覆盖(如果之前的秘钥不再需要则直接回车覆盖,如需要则手动拷贝到其他目录后再覆盖);创建密码(如果不需要密码则直接回车);确认密码;
复制代码

执行过程如下图: 


在指定的保存路径下会生成2个名为id_rsa和id_rsa.pub的文件  (上面确认的保存地址)


打开你的github,进入配置页



选择SSH and GPG keys


选择New SSH key


然后用文本工具打开之前生成的id_rsa.pub文件,把内容拷贝到key下面的输入框,并为这个key定义一个名称(通常用来区分不同主机),然后保存


再次尝试用git方式下载,可以看到已经可以正常下载



把文件添加到版本库

创建一个readme.txt

this is a readme content复制代码

第一步: 提交到仓库(添加指定readme.txt文件)

git add readme.txt (添加指定readme.txt文件)
git add . (添加全部文件)复制代码
第二步:命令,-m后面输入的是本次提交的说明

git commit -m '说明'复制代码
第三步:提交到分支

git push orignal 分支名复制代码

上面都是为下面的操作做准备,笔者准备在这里画重点了;


工作区和暂存区 (重要)

暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么

工作区

你在电脑里能看到的目录

版本库

工作区有一个隐藏目录.git,是Git的版本库

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD


上面的分节(把文件添加到版本库),有两步

第一步:git add    就是把工作区的提交到暂存区

第二步:git commit   就是把暂存区提交到当前的分支    

(需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改)

验证

1.修改readme.txt

2.在工作区新增一个LICENSE文本文件(内容随便写)
复制代码

两次命令git add,把readme.txtLICENSE都添加后,暂存区就有了这两个文件


git commit -m "understand how stage works"复制代码

这个时候,提交之后,暂存区就到了当前分支;

一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的(没有修改)


撤销修改

场景1,你没有 git add  也没有 git commit

说明:只有在工作区上面修改,没有提交到暂存区

命令:git checkout -- 文件名  测消指定文件      git checkout .撤销所有文件

场景2,你已经 git add 没有 git commit

命令: git reset HEAD <file> 返回场景1,按照场景1步骤

场景3,你已经 git commit
  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。


删除文件

情况1:确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
情况2:删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本     git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
git checkout -- test.txt   复制代码


分支管理

复制代码

创建与合并分支

创建分支

git checkout -b 分支名    //创建并切换到新分支   复制代码

checkout -b    实际执行了

git branch   dev
git checkout dev复制代码
查看当前分支

git branch
复制代码

合并分支

git checkout master    //切换到master
git merge dev     // 合并dev复制代码

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>


解决冲突

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容

然后 git add --filename  git commit - m ''

用带参数的git log也可以看到分支的合并情况

git log --graph --pretty=oneline --abbrev-commit复制代码

忽略特殊文件

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:github.com/github/giti…

忽略文件的原则是:

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

常用命令总结

git branch 查看本地所有分支
git checkout master 切换到master分支
git checkout -b debug 切换到一个新分支“debug”
git branch -d debug 删除debug分支
git branch -D debug 强制删除没有合并的分支
git push origin --delete dev 删除远程dev分支
git checkout -b dev origin/dev 创建本地dev分支并且在线上dev同步到本地dev分支


git fetch juice master 从远程juice的库获取它的master分支代码
git merge master 合并juice的分支



git checkout . 丢弃本地修改

git add -A
git commit -m '备注'
git push origin master 将本地master分支推送到远程库三步曲
git status 查看本地当前状态



git remote add juice (git地址) 和远程库建立链接
git remote -v 查看远程库信息


git stash 储藏当前未提交的代码
git stash pop 恢复储藏的代码
git stash list 查看储藏的工作现场

git clone (git地址) 从远程库克隆代码
git tag 查看所有标签

git remote set-url origin [url]  修改远程仓库地址

git branch --set-upstream dev origin/dev 建立本地dev分支与远程origin/dev分支的连接

git log -3 查看最近三条log
git reset --hard (commit) 回滚到指定版本
git push -f origin master 强制提交到远程

.gitignore规则不生效的解决办法

把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'复制代码


文章分类
前端
文章标签