首先
git
和github
不是同一个东西。Git
是一款免费、开源的分布式版本控制系统,而github
是基于git
的代码托管平台
且同时也具有版本记忆功能。git
是分布式版本管理系统。git
是由linux
的创造者linus
开发的。不同于
CVS
和SVN
的集中式版本控制方式,git
使用分布式进行版本控制。将较而言,git
分布式版本控制可以实现本地化的版本库,工作时不必联网;git
具有强大的分支管理能力,稳定性更高。(便捷)
git首次安装后的设置:
首先打开hash.exe输入用户名和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
利用git
本地仓库进行版本控制可以简单的理解为:a 持有实际文件的物理工作目录,b 暂存区,c 本地仓库(git在本地默认建立的一个master分支)
其中a-->b
是由add
实现,而b-->c
是由commit
实现。
利用git
在本地进行版本库存储:
-
git
在本地指定地点建立仓库(或者是指向克隆下来的仓库):cd e:/github_projects/tisikcci.github.io
-
初始化一个
git
仓库:git init
初始化之后,会在tisikcci.github.io
文件夹下生成一个默认隐藏的.git
文件夹
-
向这个隐藏的文件夹中添加文件:
README.md
(可以是别的文件,要将这个文件放在.git同级文件夹下):git add README.md
也可以一次添加多个文件
,类似于:
git add README1.md README2.md README3.md
-
将文件存入本地仓库(当前分支),同时添加改动或者说是更新说明:(
-m
后这里的‘first commit’应该是与本次提交或者更新有关系有实际意义的说明,方便以后溯源)git commit -m'first commit'
-
在上面的3,4步骤过程后可以使用以下命令看到内容的变动
git status
-
可以使用以下代码查看git版本库的修改或者说是更新次数(使用q可以退出这个命令)
git log
如果觉得这样得到的信息太多,可以使用下面的命令,使得每次修改信息漂亮的显示在同一行
git log --pretty=oneline
也可以选定查看最近2次的版本更新信息:
git log -n 2
-
可以利用reset实现版本回退:
git reset --hard head^
注意:HEAD表示当前版本(就是一个指针),在后面加一个^,表示(指向)上一个版本,前第N个版本是HEAD~N,
回退以后想恢复之前最新的版本或者是某次特定的版本,可以利用如下代码查找操作代码库的关键步骤历史记录的ID实现:
git reflog
根据ID,比如是441736f,前进到回退前的某个版本
git reset --hard 441736f
8.commit之后又对项目中的某个文件内容进行了更新,可以利用以下命令回到离commit最近的状态(就是丢弃掉没有进行add操作的更改内容,回到上次commit操作时的状态)
git checkout -- 文件名
这里本质是利用本地版本库中的相同文件替换了本地文件夹中的文件,所以看起来是回到之前commit操作时的状态了(但是如果更改已经add了,除非放弃add操作内容,否则下次commit又会更新本地仓库)
更进一步,撤销已经add到暂存区但没有commit到本地分支的文件
it reset head 文件名
以上过程中可以使用以下命令查看具体文件的内容
cat 文件名
- 删除本地版本库中的文件
首先说一下一种特殊情况:本地的文件夹中的项目相关文件被删除了,但没有更新本地的版本库,如果这时想恢复被删除的项目相关文件,可以利用以下命令:
git checkout -- 文件名
第二种情况是真的想删除本地仓库中的相关文件,利用以下代码删除本地文件夹中的文件(也可以手动删除)
rm 文件名
然后利用以下代码删除本地仓库中的文件
git rm 文件名
并且利用git commit进行保存
git commit -m"remove 文件名"
-
新建一个分支,可以利用
git branch 分支名 git checkout 分支名
上面的代码分别表示新建一个分支,并将head(指针)指向新建的指针
也可以使用下面的方式直接实现新建一个分支并使head指向它
git checkout -b 分支名
可以利用下面的命令分别查看本地分支,远程分支和所有分支,当前指向分支前会加*号
git branch<br>git branch -r<br>git branch -a
删除已经存在的指定本地分支,远程分支(注意要先将指针指向其他分支才能删除此分支)
git branch -d 分支名
git push origin :分支名
重命名分支
git branch -m 原分支名 新分支名
- 在新分支上提交内容,对之前的主分支master并不会有影响,可以利用如下方式再切换回主分支
git checkout master
此时head会重新指向master,将master替换为别的分支,可以实现切换到任意指定分支
-
将新建立的分支合并到主分支(首先要切换回主分支)
git merge 新分支
合并后,就可以利用上面给出的方法删除新分支
-
如果想保留新建的分支,并推送到远程仓库,可以利用
git push origin 新建的分支
-
可以给项目进度添加版本号,通过添加标签的方式实现
git tag 版本号
通过省略版本号可以直接查看已经添加的版本号
git tag
可以给以前的某次提交补加版本号,只要查找到之前commit操作对应的ID,比如:441736f
git tag 版本号 441736f
可以利用如下的方式实现在添加标签时添加说明
git tag -a 版本号 -m "版本说明"
可以通过以下命令查看指定版本内容
git show 版本号
删除不想要的标签
git tag -d 已经存在的标签(版本号)
可以将本地标签推送到远程仓库
git push 远程主机名(比如origin) 版本号
比如:
git push origin v1.0
将本地所有的版本号都推送到远程仓库
git push origin --tags
如果想删除远程仓库的版本号,需要进行两步
a. 首先要删除本地版本号(标签)
b.再删除远程版本号
git push origin :refs/tags/版本号
利用以上步骤,基本可以实现利用git本地进行操作,以下要实现将本地git仓库同步到远程仓库(例如github,当然也可以自己在一台PC上搭建一个服务器,作为远程仓库)
利用github充当远程仓库是一种很不错的方式,git本地仓库和github可以通过SSH加密,利用多种方式进行数据传输:HTTP(s)、SSH、Git、本地协议等,前两种比较常用。
1.要想将本地仓库同步到Github上,首先需要建立本地和Github上使用的SSH私钥和公钥,在git的bash.exe中输入
ssh-keygen -t rsa -C “tisikcci@foxmail.com”
在电脑上生成公钥和私钥,将公钥上传到github上
登录Github,找到右上角的图标,打开点进里面的Settings,再选中里面的SSH and GPG KEYS,点击右上角的New SSH key,然后Title里面随便填,再把刚才id_rsa.pub里面的内容复制到Title下面的Key内容框里面,最后点击Add SSH key,这样就完成了SSH Key的加密-
测试是否连接成功
ssh -T git@github.com
在Github上建立一个你想和本地仓库进行同名的仓库(名字相同)
-
利用上面的cd...指向本地仓库的位置,然后关联到Github的远程仓库:
git remote add origin git@github.com:tisikcci/tisikcci.github.com.git
关联好之后,可以把本地仓库中的内容推送到Github上的远程仓库了
在首次进行推送的时候,需要:
git push -u origin master
此处加 -u 是用来将本地master和远程master进行关联的,以后再次推送就不需要再加了,origin是远程主机的名字,可以通过以下代码来查看
git remote
或者是
git remote -v
这个主机名字是可以人为指定的。
首次推送之后,下次再向远程仓库master分支推送项目时,只需要
git push origin master
-
上面提到可以人为指定远程主机的名字,在将远程仓库克隆到本地的时候,可以实现
git clone -o 新主机名 https://github.com/tisikcci/first-static-web-page.git/
如果使用默认的主机名并且克隆到本地指定的位置,可以利用
git clone https://github.com/tisikcci/first-static-web-page.git/ 本地地址
最好是直接利用SSH协议进行clone,如下
git clone 仓库的SSH地址 本地建立的空文件夹地址
git clone git@github.com:tisikcci/test.git e:/github_projects/zz
就将远程仓库的test克隆到了本地的zz文件夹中。