为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的某几个命令,还有直接从Git手册粘贴帮助文档的,总之,初学者很难找到一个由浅入深,学完后能立刻上手的Git教程。
详细教程可点击右侧链接☞廖雪峰链接
Git简单来说就是代码版本控制系统,通过他可以进行多人开发同一个项目然后讲每个人的代码块合并完成一个大项目,还能控制代码版本记录等。
Git 最核心的一个概念就是工作流。
通常提交代码分为几步:
1. git add 从工作区提交到暂存区
2. git commit . 从暂存区提交到本地仓库
3. git push或git svn dcommit从本地仓库提交到远程仓库
1.版本管理
2.多人协作
1.集中式版本管理工具–svn
2.分布式版本管理工具–git
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
$git init
Initialized empty Git repository in D:/Mi/ceshi/.git/
$ git add stc.md
2.用命令git commit -m "提交说明"告诉Git,把文件提交到仓库:
$git commit -m "stc.md"
3.为什么Git添加文件需要add,commit一共两步呢?
因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
$git add stc.md 1.md
$git commit -m "add 1.md gen_gai stc.md"
1.初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
1.使用命令git add ,注意,可反复多2.次使用,添加多gi;
使用命令git commit -m ,完成。
1.用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
2.用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支
3.用git status查看一下状态
$git status
1.版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看
2.要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
$git log
$git reflog
2.把当前版本回退到上一个版本,就可以使用
git reset – hard HEAD^命令:
git reset --hard HEAD^
3.回退版本 git reset --hard commitID(版本号)
git reset --hard commitID(例如:849042746)
4.^代表回退前面一个版本 ^^回退前俩个版本
5.版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
1.HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
2.穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
3.要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
1.撤销工作区的修改 git restore 文件名
git restore 1.md
2.撤销暂存区的修改 git restore --staged 文件名
git restore --staged 1.md
3.删除文件工作区的文件 rm 文件名 删除版本库文件 git rm 文件名
$ rm 1.md
$ git rm 1.md
4.克隆一个本地库,如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
$ git clone [email protected]:Tianci_sun/gitskills.git
5.克隆完进入gitskills目录看看
$ cd gitskills
$ ls
README.md
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
第三步:点“Add Key”,你就应该看到已经添加的Key:
1.现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:
$git remote add origin [email protected]:Tianci_sun/sun_tianci.git
2.删除远程库
$git remote rm origin(库名)
3.把本地库的所有内容推送到远程库上
$ git push -u origin master
4.从现在起,只要本地作了提交,也就是推,就可以通过命令:
$ git push origin master
$git pull 连接后可以直接拉取
$git pull origin dev 拉取dev分支的文件
$git pull命令从远程拉取(远程最新代码),git clone也能从远程克隆下来
$git pull [email protected]:Tianci_sun/yq-text.git 远程仓库的SSH
$ git checkout -b dev(创建分支)
$ git branch dev(查看分支)
$ git checkout dev(切换分支)
git branch
$ git merge dev(分支名)
$ git branch -d dev
$ git switch -c dev
6.切换到已有的master分支
$ git switch master
$ git remote origin
$ git remote -v(详细信息)
$ git push origin master(主分支)
如果要推送其他分支,比如dev,就改成:
$ git push origin dev(分支名)
$ git clone [email protected]:Tianci_sun/learngit.git
Cloning into 'learngit'...
git pull
查看分支:git branch
创建分支:git branch
切换分支:git checkout 或者git switch
创建+切换分支:git checkout -b 或者git switch -c
合并某分支到当前分支:git merge
删除分支:git branch -d
git branch:查看分支
git branch 分支名称:创建分支,只创建不使用
git checkout 分支名称:切换分支
git checkout -b分支名称:创建并切换分支
git merge 分支名称:合并某分支到当前分支
git branch -d 分支名称:删除分支
git branch -D 分支名称:强制删除,不管你保没保存,没提示的删除(慎用)
Git是分布式的,SVN是集中式的
Git和SVN都是版本管理系统,但是他们命令区别后面会简单进行一个对比,我们先从原理的角度分析
分布式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们在自己本地也会创建一个库,用于保存自己的修改与提交,之后再将自己库提交至服务器库进行更新