Github使用教程

  • github使用指南
    • git基本操作
      • 1 创建版本库
      • 2 将文件添加到仓库
      • 3 将文件提交到仓库
      • 4 查看仓库当前状态
      • 5 查看文件做了哪些修改
      • 6 提交日志
    • 版本回退
      • 1 列出每一次更新库的命令及对应的commit id
      • 2 回退
      • 3 撤销修改
    • 删除文件
    • 远程仓库
      • 1 配置远程仓库
      • 2 添加远程仓库
      • 3 从远处库克隆
  • 分支管理
    • 1 创建分支
    • 2 查看当前分支
    • 3合并分支
    • 4删除分支

github使用指南

1 git基本操作

1.1 创建版本库

git init

1.2 将文件添加到仓库

git add readme.txt

git add file2.txt file3.txt  //也可以同时提交多个文件

1.3 将文件提交到仓库

git commit -m "write a readme file"

1.4 查看仓库当前状态

git status

1.5 查看文件做了哪些修改

git diff readme.txt  // 修改之后还没有暂存起来的变化内容(没Add之前使用)
git diff --cached    // 查看已经add但是还没有commit的改动
git diff HEAD -- readme.txt      // 查看工作版本和HEAD的差别
git diff 版本号1 版本号2            // 比较两个版本下文件的所有差异

1.6 提交日志

1.从上到下依次显示最近到最远的提交日志
2.常用来获取commit id,便于版本回退

git log

2 版本回退

在Git中:
HEAD 表示当前版本
HEAD^ 表示上一个版本
HEAD^^ 表示上上一个版本
HEAD~3 表示往上第三个版本
另外:
可以根据 commit id 确定想要回退的版本

2.1 列出每一次更新库的命令及对应的commit id

git reflog

2.2 回退

git reset --hard HEAD^
git reset --hard 3628164 // commit id 回退

2.3 撤销修改

git checkout -- readme.txt //就是让这个文件回到最近一次git commit或git add时的状态。

/* git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令 */

git reset HEAD readme.txt  // 把暂存区的修改回退到工作区

3 删除文件

在本地删除不需要的文件之后,因为工作区和版本库不一致了,执行git status命令会立刻告诉你哪些文件被删除了:

$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#       deleted:    test.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

这时候你有两个选择:
(1)确实要从版本库中删除该文件:

git rm test.txt
git commit -m "remove test.txt"

(2)删错了,从版本库中恢复:

git checkout -- test.txt

4 远程仓库

4.1 配置远程仓库

第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "[email protected]"

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,最后点“Add Key”,你就应该看到已经添加的Key:

4.2 添加远程仓库

(1)首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。
然后在Repository name填入你的仓库名(与本地仓库名一致),其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库。

(2)目前仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

$ git remote add origin git@github.com:Happy-zyy/UCAS-CDSelector.git
/*
Happy-zyy : Github账户名
UCAS-CDSelector :仓库名

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
下一步,就可以把本地库的所有内容推送到远程库上

$ git push -u origin master

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

SSH警告

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。

4.3 从远处库克隆

$ git clone git@github.com:Happy-zyy/RepoName.git

//RepoName : 远程仓库名

PS:
GitHub给出的地址不止一个,还可以用https://github.com/Happy-zyy/The_one这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

5 分支管理


  • HEAD指向当前分支
  • master指向提交

一开始的时候master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。

5.1 创建分支

git checkout -b dev // 创建dev分支,然后切换到dev分支

等价于

git branch dev    //创建
git checkout dev  //切换

5.2 查看当前分支

$ git branch
* dev
  master

git branch命令会列出所有分支,当前分支前面会标一个*号。

5.3合并分支

git merge dev  // 我们把dev分支到当前分支(HEAD)

5.4删除分支

git branch -d dev  //删除dev分支

你可能感兴趣的:(工具教程)