Git基本使用及远程仓库(Github)

一、安装Git(Windows)及配置

安装

安装包下载地址:https://gitforwindows.org/
下载之后直接安装
装好之后会在开始菜单出现这三个图标
Git中的Bash是基于CMD的,在CMD的基础上增添一些新的命令与功能。所以建议在使用的时候,用Bash更加方便。
GUI是图形化界面
Git基本使用及远程仓库(Github)

基本配置

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
1.用户信息
配置个人的用户名称和电子邮件地址:

$ git config --global user.name “ccg”
$ git config --global user.email [email protected]

2.文本编辑器
设置Git默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的话,可以重新设置:

$ git config --global core.editor emacs

3.差异分析工具
还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:

$ git config --global merge.tool vimdiff

4.查看配置信息

要检查已有的配置信息,可以使用 git config --list 命令:
$ git config --list
可以在配置文件中直接更改
vim ~/.gitconfig
也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:
$ git config user.name
ccg

二、Git基本操作

1.获取与创建项目命令:git init

在目录中执行 git init,就可以创建一个 Git 仓库了(任何目录下都可以)。比如我们创建 newrepo项目:

mkdir newrepo
cd newrepo/
git init

Git基本使用及远程仓库(Github)
现在你可以看到在你的项目中生成了 .git 这个子目录。 这就是你的 Git 仓库了,所有有关你的此项目的快照数据都存放在这里。

2.git clone

使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改

git clone [email protected]:yzcxyccg/hello-world.git

Git基本使用及远程仓库(Github)
克隆完成后,在当前目录下会生成一个 hello-world 目录:

3.基本快照

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。
git add
git add 命令可将该文件添加到缓存,如我们添加以下两个文件:

$ touch README
$ touch hello.php
$ ls
README hello.php
$ git status -s
?? README
?? hello.php

git status 命令用于查看项目的当前状态。
Git基本使用及远程仓库(Github)
添加成功
Git基本使用及远程仓库(Github)
git diff

执行 git diff 来查看执行 git status 的结果的详细信息。
git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。

尚未缓存的改动:git diff
查看已缓存的改动: git diff --cached
查看已缓存的与未缓存的所有改动:git diff HEAD
显示摘要而非整个 diff:git diff --stat

git commit
使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中。
Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以需要配置用户名和邮箱地址。在开始的配置我们已经配置成功了

$ git config --global user.name ‘ccg’
$ git config --global user.email [email protected]

接下来我们写入缓存,并提交对 hello.java 的所有改动。我们使用 -m 选项以在命令行中提供提交注释。

$ git status -s
A README
A hello.java
$ git commit -m ‘第一次版本提交’
Git基本使用及远程仓库(Github)

git rm
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以用以下命令完成此项工作

git rm
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm -f
如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可

git rm --cached
如我们删除 hello.php文件:

$ git rm hello.java
rm ‘hello.java’
$ ls
README

不从工作区中删除文件:
$ git rm --cached README
rm ‘README’
$ ls
README
可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:
git rm –r *
进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录。

git mv
git mv 命令用于移动或重命名一个文件、目录、软连接。
我们先把刚移除的 README 添加回来:

$ git add README
然后对其重名:
$ git mv README README.md
$ ls
README.md

三、Git远程仓库(Github)

1.添加远程仓库

本例以 Github 为例作为远程仓库,如果你没有 Github 可以在官网 https://github.com/注册。
由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:
使用以下命令生成 SSH Key:

$ ssh-****** -t rsa -C “[email protected]

后面的 [email protected] 改为你在 Github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key。
回到 github 上,进入 Account => Settings(账户配置)。
Git基本使用及远程仓库(Github)
Git基本使用及远程仓库(Github)
Git基本使用及远程仓库(Github)
为了验证是否成功,输入以下命令:

$ ssh -T [email protected]
连接成功Git基本使用及远程仓库(Github)

之后登录后点击" New repository " 如下图所示:
Git基本使用及远程仓库(Github)
之后在在Repository name 填入 ccg-git-test(远程仓库名) ,其他保持默认设置,点击"Create repository"按钮,就成功地创建了一个新的Git仓库:
Git基本使用及远程仓库(Github)
Git基本使用及远程仓库(Github)
以上信息告诉我们可以从这个仓库克隆出新的仓库,也可以把本地仓库的内容推送到GitHub仓库。
现在,我们根据 GitHub 的提示,在本地的仓库下运行命令:

$ mkdir ccg-git-test # 创建测试目录
$ cd ccg-git-test/ # 进入测试目录
$ echo “# CCG Git 测试” >> README # 创建 README文件并写入内容
$ ls # 查看目录下的文件
README
$ git init # 初始化
$ git add README # 添加文件
$ git commit -m “添加 README文件” # 提交并备注信息

Git基本使用及远程仓库(Github)
提交到 Github

$ git remote add origin [email protected]:yzcxyccg/ccg-git-test.git
$ git push -u origin master

Git基本使用及远程仓库(Github)
Git基本使用及远程仓库(Github)
提交成功

2.查看当前的远程仓库

要查看当前配置有哪些远程仓库,可以用命令:

git remote
$ git remote
origin
$ git remote -v
origin [email protected]:yzcxyccg/ccg-git-test (fetch)
origin [email protected]:yzcxyccg/ccg-git-test (push)

执行时加上 -v 参数,你可以看到每个别名的实际链接地址。

3.提取远程仓库

(1)从远程仓库下载新分支与数据:
git fetch
该命令执行完后需要执行git merge 远程分支到你所在的分支。
(2)从远端仓库提取数据并尝试合并到当前分支:
git merge
该命令就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支。

接下来我们在 Github 上点击" README.md" 并在线修改它:
Git基本使用及远程仓库(Github)
然后我们在本地更新修改。

git fetch origin //更新
git merge origin/master //合并
Git基本使用及远程仓库(Github)

查看 README文件内容:
Git基本使用及远程仓库(Github)

4.推送到远程仓库

送你的新分支与数据到某个远端仓库命令:

git push [alias] [branch]
以上命令将你的 [branch] 分支推送成为 [alias] 远程仓库上的 [branch] 分支,实例如下。

$ touch ccg-test.txt # 添加文件
$ git add ccg-test.txt
$ git commit -m “添加到远程”

Git基本使用及远程仓库(Github)

$ git push origin master # 推送到 Github

重新回到我们的 Github 仓库,可以看到文件已经提交上来了:
Git基本使用及远程仓库(Github)

5.删除远程仓库

$ git remote -v
origin [email protected]:yzcxyccg/ccg-git-test.git (fetch)
origin [email protected]:yzcxyccg/ccg-git-test.git (push)
添加仓库 origin2
$ git remote add origin2 [email protected]:yzcxyccg/ccg-git-test.git
$ git remote -v
origin [email protected]:yzcxyccg/ccg-git-test.git (fetch)
origin [email protected]:yzcxyccg/ccg-git-test.git (push)
origin2 [email protected]:yzcxyccg/ccg-git-test.git (fetch)
origin2 [email protected]:yzcxyccg/ccg-git-test.git (push)
删除仓库 origin2
$ git remote rm origin2
$ git remote -v
origin [email protected]:yzcxyccg/ccg-git-test.git (fetch)
origin [email protected]:yzcxyccg/ccg-git-test.git (push)

注:
Git基本使用及远程仓库(Github)