本篇博文主要记录自己学习Git的笔记/总结
参考教程 廖雪峰的官方网站
1、Git和CVS及SVN的异同点
- githup是分布式版本控制系统
- CVS和SVN是集中式版本控制系统
- 这三种都是免费开源
2、 集中式版本控制系统和分布式版本控制系统区别
- 集中式必须有专门的版本服务器,集中存放文件,需要联网
- 分布式每台电脑都可和其他电脑进行版本更新,也可设置一台电脑专门用于版本内容交换更新
3、Git客户端官方下载地址
4、Git、Githup及Gitlab的区别
- Git是一个工具,用于版本管理
- Githup是一个网站,给用户创建git仓库,用于存放代码文件
- Gitlab是基于git的项目管理管理软件
5、使用Git
以windows系统为例
点击 ‘Git Bash’图标,出来一个命令窗口,如下,在‘$’后可以输入命令
Administrator@USER-20180123LH MINGW64 ~
$
登录
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
首先在D盘创建一个文件夹用于管理代码,例如新建文件夹‘git’(文件名只要是英文就行)
查看当前所在的目录,切换目录
$ pwd
$ cd d:/git
$ pwd
$ mkdir learngit
$ cd learngit/
$ pwd
运行git init
把目录变成Git可以管理的仓库,显示如下:
Administrator@USER-20180123LH MINGW64 /d/git/learngit
$ git init
Initialized empty Git repository in D:/git/learngit/.git/
新生成的.git目录是用来跟踪管理版本库,不要手动修改里面的文件
Administrator@USER-20180123LH MINGW64 /d/git/learngit (master)
$ ls -la
total 4
drwxr-xr-x 1 Administrator 197121 0 十一月 21 16:03 ./
drwxr-xr-x 1 Administrator 197121 0 十一月 21 16:03 ../
drwxr-xr-x 1 Administrator 197121 0 十一月 21 16:03 .git/
用Notepad++文本编辑器在D盘的/git/learngit目录(子目录也行)下新建一个readme.txt的文件,随意写入一些内容,例如
Git is a version control system.
Git is free software.
用如下命令把readme.txt文件添加到Git仓库中,‘-m’后是说明对仓库做了什么修改,便于其他人查阅
$ git add readme.txt
$ git commit -m "wrote a readme file"
修改readme.txt文件,如下:
Git is a distributed version control system.
Git is free software.
$ git status #查看当前库的状态,会显示有修改但未提交,并指出被修改的文件是readme.txt
$ git diff readme.txt #查看readme.txt做了哪些修改
$ git add readme.txt #把修改放到暂存区(stage)
$ git status #再次查看库的状态,显示修改将要被提交
$ git commit -m "add distributed" #把修改提交到分支
$ git status #显示当前没有什么可提交的
回退版本
HEAD^
上一个版本
HEAD^^
上上个版本
HEAD~100
往前数第100个版本
命令如下:
git reset --hard HEAD^ #回退到上一个版本
git reflog
查看历史操作
Administrator@USER-20180123LH MINGW64 /d/git/learngit (master)
$ git reflog
b41aa25 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
586b5f2 HEAD@{1}: commit: 增加了一个空行和测试
b41aa25 (HEAD -> master) HEAD@{2}: commit: add distributed
922bff2 HEAD@{3}: commit (initial): wrote a readme file
回退到任意版本git reset --hard commit_id
例如回退到‘增加了一个空行和测试’的那一个版本’
$ git reset --hard 586b
比较工作区和版本库文件的区别
$ git diff HEAD --readme.txt
丢弃工作区的修改
$ git checkout -- readme.txt
这里有两种情况:
- 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
- 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
丢弃暂存区的修改
$ git reset HEAD readme.txt
添加新文件test.txt并提交,做删除操作
- 提交删除
$ git rm test.txt
$ git commit -m "remove test.txt"
误删撤销
$ git checkout -- test.txt
6、上传本地项目到githup
6.1 githup网站端设置
- 先注册githup账号
- 登陆githup后点右上角图标–再点击“Settings”进入设置页面
- 点“SSH and GPG keys”,再点击“New SSH key”,Title名字随便写,比如“办公电脑”, Key的内容写本地电脑公钥的内容,然后点击“Add SSH key”
- githup的公钥和私钥文件在本地电脑主目录下,获取方式如下:
打开本地的 “Git Bash”
Administrator@USER-20180123LH MINGW64 ~
$ cd ~
Administrator@USER-20180123LH MINGW64 ~
$ ls -la #显示如下
其他文件
drwxr-xr-x 1 Administrator 197121 0 十一月 21 19:47 .ssh/
其他文件
在主目录“~”下有一个名为“.ssh/”的目录,该目录有两个文件,id_rsa
是私钥文件,id_rsa.pub
是公钥文件(如果没有这两个文件,在Git Bash中执行ssh-keygen -t rsa -C "youremail@example.com"
,其他步骤保持默认即可),把公钥文件id_rsa.pub
中的内容复制到上述githup的Key的方框内保存
Administrator@USER-20180123LH MINGW64 ~
$ cd .ssh/
Administrator@USER-20180123LH MINGW64 ~/.ssh
$ ls -lh
total 9.0K
-rw-r--r-- 1 Administrator 197121 1.7K 八月 27 11:00 id_rsa
-rw-r--r-- 1 Administrator 197121 509 八月 27 11:11 id_rsa.pub
-rw-r--r-- 1 Administrator 197121 801 十一月 21 19:49 known_hosts
Administrator@USER-20180123LH MINGW64 ~/.ssh
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvnzxDfvbZIuryZzxv/g0p+0ny64OVEEhjteMUXWr51BWD8Audd8x8HaljudFua/hXm7kM36+h4mTd5a8G8/FrXFzWBqXlL72QIqVocbPwqDcEJLagnpalngGkN+hstEbeuNd5VkldJuQvL/9pXhBnQTnpPM0/3+zzKmXCfpGRxVdqWyOX2PnZYwfn65+BWbt4KLIzahQM2iLuUDh3XLhpxssRXEEZ/biMf5pp9KhFEFF+2SLtfh8AEwwVTTjv3NJmaG5JQL+IvQeocZsORAyh3KSZumNlUz0GcYSwemtKIxrf0F9YnRvC8cWcrg5LKRMToU6mIuPu51/duW90RsJR xxoo@gmail.com
6.2 在githup上新建项目
- 点击右上角的加号“+” ,再点击“New repository”创建仓库
- 输入项目名字,例如“Blog”,然后点击“Create repository”
这样就创建了一个新仓库,下一步需要把本地电脑上的项目同步到githup仓库中
6.3 在本地 GIt Bash中操作
#先切换到项目目录,D盘的/git/Blog目录下
$ cd /d/git/Blog
#把这个目录变成Git可以管理的仓库
git init
#把文件添加到版本库中
git add .
#把文件提交到仓库
git commit -m 'first commit'
#git remote add origin 你的远程库地址,如果非第一次同步,则不用执行
git remote add origin https://github.com/blackeagleoht/Blog.git
#获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)
git pull --rebase origin master
#把本地库的内容推送到远程
git push -u origin master
#查询状态
git status
如果项目文件比较大,在执行命令的时候就需要耐心等待
在执行push -u origin master
时,会弹出一个窗口,让输入githup的登录账号和密码,之后会同步完成,登录githup网站即可看到项目已同步到Blog的仓库中