Git指南
Git简介
- Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
- Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
- Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git 基本概念
Git安装配置
Windows安装
在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行:
官网安装包下载地址:https://gitforwindows.org/
国内的镜像:https://npm.taobao.org/mirrors/git-for-windows/。
完成安装之后,就可以使用命令行的 git 工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。
在开始菜单里找到”Git”->”Git Bash”,会弹出 Git 命令窗口,你可以在该窗口进行 Git 操作。
Git配置
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
用户信息
git config --global user.name "runoob"
git config --global user.email test@runoob.com
注:其中user.name可不必与github的usename相同。
查看配置信息
git config --list
Git 基本操作
Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull
说明:
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:版本库或本地仓库
- remote repository:远程仓库
创建仓库命令
下表列出了 git 创建仓库的命令:
命令 | 说明 |
---|---|
git init |
初始化仓库 |
git clone [复制的项目地址] |
拷贝一份远程仓库,也就是下载一个项目。 |
提交与修改
Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。
下表列出了有关创建与提交你的项目的快照的命令:
命令 | 说明 |
---|---|
git add [file/dir] |
添加文件到暂存区 |
git status |
查看仓库当前的状态,显示有变更的文件。 |
git diff |
比较文件的不同,即暂存区和工作区的差异。 |
git commit -m [message] |
提交暂存区到本地仓库。 |
git reset |
回退版本。 |
git rm |
将文件从暂存区和工作区中删除。 |
git mv |
移动或重命名工作区文件。 |
提交日志
命令 | 说明 |
---|---|
git log |
查看历史提交记录 |
git blame <file> |
以列表形式查看指定文件的历史修改记录 |
远程操作
命令 | 说明 |
---|---|
git remote |
远程仓库操作[-v 查看远程仓库] [rm [别名] 删除远程仓库] |
git fetch |
从远程获取代码库 [[alias] [branch] ] |
git pull |
下载远程代码并合并[<远程主机名> <远程分支名>:<本地分支名> ] |
git push |
上传远程代码并合并[[alias] [branch] ] |
Git Github
连接github配置
-
使用以下命令生成 SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
- 后面的 your_email@youremail.com 改为你在 Github 上注册的邮箱,一路enter、得到key。
- 到路径
C:\Users\xyq\.ssh
下打开id_rsa.pub,复制里面的 key。
-
进入github
- 进入 Account => Settings(账户配置)
- 左边选择 SSH and GPG keys,然后点击 New SSH key 按钮,title 设置标题,可以随便填,粘贴在你电脑上生成的 key。
-
为了验证是否成功,输入以下命令:
$ ssh -T git@github.com #显示以下结果说明连接成功。 The authenticity of host 'github.com (52.74.223.119)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes # 输入 yes Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts. Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access. # 成功信息
测试-创建仓库并push
-
在github上点击” New repository ” 新建一个repository。
-
在Repository name 填入 runoob-git-test(远程仓库名) ,其他保持默认设置,点击”Create repository”按钮,就成功地创建了一个新的Git仓库。
-
在本地的仓库下运行以下命令:
$ cd D:\\Soft_file\\Git_workspace #进入自己的目录 $ mkdir runoob-git-test # 创建测试目录 $ cd runoob-git-test/ # 进入测试目录 $ echo "# 菜鸟教程 Git 测试" >> README.md # 创建 README.md 文件并写入内容 $ ls # 查看目录下的文件 README $ git init # 初始化 $ git add README.md # 添加文件 $ git commit -m "添加 README.md 文件" # 提交并备注信息 [master (root-commit) 0205aab] 添加 README.md 文件 1 file changed, 1 insertion(+) create mode 100644 README.md # 提交到 Github,后面git@github.com:tianqixin/runoob-git-test.git需改成自己在gihub上ssh的链接 $ git remote add origin git@github.com:tianqixin/runoob-git-test.git $ git push -u origin master
其他
-
出现错误信息:error: remote origin already exists.即远程源(远程仓库)已存在使用以下命令
$ git remote -v #查看远程仓库,加上 -v 参数,你还可以看到每个别名的实际链接地址。 origin git@github.com:tianqixin/runoob-git-test.git (fetch) origin git@github.com:tianqixin/runoob-git-test.git (push) git remote rm origin #(删除已关联仓库)
添加远程仓库
要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下:
git remote add [shortname] [url]
提取远程仓库
Git 有两个命令用来提取远程仓库的更新。
-
从远程仓库下载新分支与数据:
$ git fetch [alias] #这个命令将某个远程主机的更新全部取回本地 #如果只想取回特定分支的更新,可以指定分支名 $ git fetch [alias] [branch] #注意之间有空格
该命令执行完后需要执行 git merge 远程分支到你所在的分支。
-
从远端仓库提取数据并尝试合并到当前分支:
$ git merge [alias]/[branch]
该命令就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支。
-
git pull = git fetch + git merge
将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为
$ git pull <远程主机名> <远程分支名>:<本地分支名>
如果远程分支是与当前分支合并,则冒号后面的部分可以省略
eg:将远程仓库origin下载到本地仓库origin的master的分支里。
$ git fetch origin
$ git merge origin/master
推送到远程仓库
推送你的新分支与数据到某个远端仓库命令:
git push [alias] [branch]
以上命令将你的 [branch] 分支推送成为 [alias] 远程仓库上的 [branch] 分支,实例如下。
$ touch runoob-test.txt # 添加文件
$ git add runoob-test.txt
$ git commit -m "添加到远程"
master 69e702d] 添加到远程
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 runoob-test.txt
$ git push origin master # 推送到 Github
重新回到我们的 Github 仓库,可以看到文件已经提交上来了。
删除远程仓库
删除远程仓库你可以使用命令:
git remote rm [别名]
实例:
$ git remote -v
origin git@github.com:tianqixin/runoob-git-test.git (fetch)
origin git@github.com:tianqixin/runoob-git-test.git (push)
# 添加仓库 origin2
$ git remote add origin2 git@github.com:tianqixin/runoob-git-test.git
$ git remote -v
origin git@github.com:tianqixin/runoob-git-test.git (fetch)
origin git@github.com:tianqixin/runoob-git-test.git (push)
origin2 git@github.com:tianqixin/runoob-git-test.git (fetch)
origin2 git@github.com:tianqixin/runoob-git-test.git (push)
# 删除仓库 origin2
$ git remote rm origin2
$ git remote -v
origin git@github.com:tianqixin/runoob-git-test.git (fetch)
origin git@github.com:tianqixin/runoob-git-test.git (push)