GitHub 使用教程

git官网:https://git-scm.com/downloads

在git安装好之后,还需要做注册一个github账号,作为远程仓库,首先要在本地创建一个ssh key 这个的目的就是你现在需要在你电脑上获得一个密匙,就是咱们平时的验证码一样的东西,获取之后,在你的GitHub账号里边输入之后,你的电脑就和你的GitHub账号联系在一起了,这样以后就可以十分方便的通过Git bash 随时上传你的代码。下边介绍一下如果获得这个钥匙,又是如何输入到你的GitHub里边的呢在git bash中所有功能都是通过简单的一些代码来实现的。

获取密匙的时候需要输入$ ssh-keygen -t rsa -C "[email protected]"

需要输入这个代码,引号内需要改成你在注册GitHub的时候绑定的邮箱账号。之后会有一些简单的让你确认的操作,之后让你会提示操作路径、密码等等,一般情况下就直接按回车一路过就可以


GitHub 使用教程_第1张图片

如果之后你出现了这个界面之后,就说明你的密匙已经成功创建了。

cat ~/.ssh/id_rsa.pub 打印刚刚获取到的公钥,


GitHub 使用教程_第2张图片

复制公钥,现在你就需要登录到你的GitHub上边添加这个密匙,打开你GitHub的设置界面,找到SSH and GPG keys这个选项之后,在网页右上角有一个添加新的SSH keys 点击这里的title 是让你给你的密匙起一个名字,根据个人喜好,什么名字都可以,然后把你在刚刚文件中复制的密匙,填写在下边的大框里。保存即可。

ssh -T [email protected]

然后输入上边的代码,来检查是否成功绑定。第一次绑定的时候输入上边的代码之后会提示是否continue,在输入yes后如果出现了:You've successfully authenticated, but GitHub does not provide shell access 。那就说明,已经成功连上了GitHub。

之后需要做一些配置:

GitHub 使用教程_第3张图片

这里一跳而过,不多说,完成之后,我们就可以使用git了。

git分区

GitHub 使用教程_第4张图片

工作区:就是我们打开文件夹所能看到的内容,比如windows系统盘下面的某个文件夹,就可以看

做是一个工作区。

缓存区:就是需要提交的那部分文件

版本库:就是已经提交,被纳入版本控制之列的文件

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

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

2. git的使用——基本操作

在本地创建文件夹,切换进入文件夹,开启git命令窗口,相关操作的命令如下:

(1)初始化git仓库  git init 

GitHub 使用教程_第5张图片

git add 文件名    #将工作区的文件添加到缓存区中

git commit -m “注释”  #将缓存区的文件内容提交到版本库中

(2)添加文件到仓库  git add 文件名

(3)提交代码到仓库  git commit -m '注释' 

(4)push代码到服务器   git push origin master 

(5)查看分支:git branch

(6)创建分支:git branch <分支名>

(7)切换分支:git checkout <分支名>

(8)创建+切换分支:git checkout -b <分支名>

(9)合并某分支到当前分支:git merge <分支名>

(10)删除分支:git branch -d <分支名>

(11)git log --graph命令可以看到分支合并图。

 (12)查看远程库信息,使用git remote -v;

(13)本地新建的分支如果不推送到远程,其他开发者是看不到的,从本地推送分支,使用git push origin 自己的分支名,如果推送失败,先用git pull抓取远程的新提交;

(14)在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;(branch-name:本地分支名,也就是自己的分支)

(15)建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

(16)从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

(17)git clone 远程git地址  : 克隆一个远程项目

(18)git status 查看文件的状态,所谓文件状态的变化就是文件在工作区,缓存区,版本库之间不断的迁移

git status -u  查看状态

(19)git merge --no-ff -m '注释说明' 自己的分支名     将自己的分支代码合并到开发分支上

(20)让git显示颜色:git config --global color.ui true

(21)要关联一个远程库,使用命令 

        git remote add origin 远程仓库地址,比如:

git remote add origin https://github.com/JavaCodeMood/study_python_demo.git

关联后,使用命令 git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master推送最新修改;

(22)查看远程服务器的相关信息:git remote -v

(23)git remote show origin(别名)  也可以查看远程服务器的相关信息

GitHub 使用教程_第6张图片

3.git的使用——快照

GitHub 使用教程_第7张图片

(1)git log   查看提交的日志

(2)gitk    以图形化的方式展现提交的日志

(3)git log -1   查看最近的一次提交

(4)git log -2   查看最近的两次提交

(5)git log --oneline  查看提交的日志,一行显示

(6)git log --oneline --graph 查看提交的日志

(7)git log -1 -p 查看最近的一次提交

(8)git reflog 显示你所使用过的每一条命令

(9)git log --graph --pretty=oneline --abbrev-commit  查看提交的日志信息

4.git的使用——版本回退

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

(1)从当前版本回退到上一个版本:git reset --hard HEAD^

(2)根据提交码进行回退:git reset --hard d302ae7  提交码取前面7位就够了

(3)git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区

5.git的使用——版本差异

GitHub 使用教程_第8张图片

(1)使用git diff 来比较工作区与缓存区之间的差异

(2)使用git diff --cached 来比较缓存区与版本库之间的差异

(3)使用git diff HEAD 来比较工作区与版本库之间的差异

(4)git diff 文件名   #查看某个文件在工作区与缓存区之间的差异

(5)git diff HEAD -- filename命令可以查看工作区和版本库里面最新版本的区别

(6)git diff 远程开发分支名 自己的分支名:查看自己的分支与远程开发分支有什么不同

(7)git diff origin/develop  develop  查看开发分支有什么不同(develop:开发分支名)

6. git的使用——历史版本

GitHub 使用教程_第9张图片

(1)使用git checkout 从缓存区中取出文件;也可以使用git checkout取出缓存区的状态

(2)使用git checkout HEAD 来取出版本库中的状态,它会做两步操作:

第一步:使用版本库中的文件来覆盖缓存区

地二步:使用版本库中的文件来覆盖工作区

(3)git checkout -- .   取出当前目录下的所有历史版本

(4)git checkout HEAD 文件名   从版本库中取出某个文件

(5)git checkout -- 文件名 丢弃工作区的修改,意思就是,把 该文件在工作区的修改全部撤销,即让这个文件回到最近一次 git commit或 git add时的状态。

7.git的使用——分支

GitHub 使用教程_第10张图片

(1)master:主分支

dev:开发分支,创建开发分支是为了保证master分支的稳定性

bug:解决bug的分支

注意:dev,bug是我自己定义的分支名,你请随意

(2)git branch dev  #创建开发分支

(3)git branch  #查看分支

(4)git branch -a  #查看所有分支

(5)git branch -v  #查看分支,并带有提交码

(6)git branch -d 分支名   #删除分支

(6)git checkout dev   #切换到dev分支

(7)git checkout master  #切换到master分支

(8)git checkout -b bug   #创建bug分支,并切换到bug分支

将dug分支合并到master分支:

首先要切换到master分支:git checkout master

然后进行合并:git merge bug

然后查看日志:git log --oneline

合并完成之后,需要删除bug分支:git branch -d bug   #删除bug分支

然后在查看分支:git checkout -v

再切换到dev分支进行开发:git checkout dev

开发完成之后,提交代码:git add 文件名    #将工作区的代码添加到缓存区

                        git commit -m “注释”  #将缓存区的代码提交到版本库

切换回master分支合并dev代码:git checkout master

合并dev代码:git merge dev

在查看日志:git log --oneline

命令作用域常用情景

git reset提交层面在私有分支上舍弃一些没有提交的更改

git reset文件层面将文件从缓存区中移除

git checkout提交层面切换分支或查看旧版本

git checkout文件层面舍弃工作目录中的更改

git revert提交层面在公共分支上回滚更改

git revert文件层面(然而并没有) 

8.git的使用——tag标签

(1)git tag v1.0    打标签 

(2)git  tag   查看所有标签 

(3)git show 可以查看某个标签的详细信息

(4)git tag  用于新建一个标签,默认为HEAD,也可以指定一个commit id

(5)git tag -d 可以删除一个本地标签;

(6)注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。 

(7)如果要推送某个标签到远程,使用命令git push origin

(8)一次性推送全部尚未推送到远程的本地标签:git push origin --tags 

(9)如果标签已经推送到远程,现在需要删除远程标签,首先从本地删除:

git tag -d

 然后,从远程删除。删除命令也是push,但是格式如下:

git push origin :refs/tags/

9.git的使用——删除文件

(1)使用git删除某个某个文件,之后还需要进行提交,否则删除不会成功:

git rm 要删除的文件名

git commit -m "del 删除文件"

(2)误把文件删除,可以通过版本库恢复回来:git checkout -- 误删除的文件

10.git的使用——设置别名

(1)git config --global alias.st status   设置status的别名为st,git st 等价于 git status,下同

(2)git config --global alias.co checkout

(3)git config --global alias.ci commit

(4)git config --global alias.br branch

--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

11.git的使用——将dev分支上的某个未完成的工作暂存起来

首先要切换到dev分支上:git checkout dev

修改某个文件后,将它暂存起来:git stash  / git stash save

查看状态:git status  可以看到这个工作会变得很干净

查看存储了哪些暂存工作:git stash list

恢复暂存起来的工作:git stash apply

再查看状态,你就会看到之前暂存起来的工作了。

清除暂存起来的工作:git stash clear

12.git的使用——设置忽略文件

(1)配置全局忽略的文件,这样就不用每个项目都加gitignore了:

git config --global core.excludesfile '~/.gitignore' 

(2)创建.gitignore文件,用来忽略某些文件

(3)echo “文件名” >> .gitignore   将需要忽略的文件添加到忽略文件中

(4)cat .gitignore  查看忽略文件

(5)echo “目录/” >> .gitignore  忽略一个文件

(6)echo "*.txt" >> .gitignore  忽略以.txt结尾的所有文件

你可能感兴趣的:(GitHub 使用教程)