【工具】Git和Github的使用

目录

全局配置

Github部分

clone线上项目

一个git仓库的建立

全局配置

1.配置每次提交你的默认名字和邮箱,若某个项目想改此项则在该项目git中去掉–global即可

1
2
git config --global user.name "Kenway"
git config --global user.email "universeeddy@outlook.com"

2.将color.ui设为auto让命令输出具有更高可读性

1
git config --global color.ui auto

3.查看当前git的全局配置

1
git config --list

Github部分

1.未创建公钥的计算机要输入

1
ssh-keygen -t rsa -C "your_email@example.com"

在出现的提示中分别按回车键和两次输入你的github账户密码

1
2
3
4
5
Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): 按回车键
Enter passphrase (empty for no passphrase): 输入密码
Enter same passphrase again: 再次输入密码

2.查看公钥

1
cat ~/.ssh/id_rsa.pub

会出现

1
ssh-rsa 公钥 universeeddy@outlook.com

3.登录github在ssh设置里添加一个新的ssh,title任意,把“ssh-rsa 公钥 universeeddy@outlook.com”复制粘贴到Key中

4.为一台电脑配置多个ssh:在~/.ssh目录下新建一个config文件,下面是参考内容

1
2
3
4
5
6
7
8
9
10
11
# 第一个ssh账户
Host home.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_home

# 第二个ssh账户
Host company.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company

Host后面填的是你ssh的别称,相当于给他取了个名字,HostName填的是你服务器的地址,PreferredAuthentications选项按照上面那样填就行了,IdentityFile是你密钥的位置

上面一台电脑配置多个ssh的例子中配置了两个github账户的ssh。当远程仓库为git@home.github.com就会以密钥id_rsa_home与服务器github.com建立连接,当远程仓库为git@company.github.com就会以密钥id_rsa_company与服务器github.com建立连接

clone线上项目

1.查看该项目的SSH,在目的文件夹加上git clone

1
git clone git@github.com:csw1997/BGCN_test.git

一个git工作文件夹的建立

1.创建文件夹(Window也可以手动创建然后右键呼出Git Bash)

1
2
3
4
# 在当前工作目录下创建一个名为git-kenway的文件夹
mkdir git-kenway
# 切换工作目录到该文件夹
cd git-kenway

2.初始化该文件夹,会生成一个.git目录存储着管理当前目录内容所需要的仓库数据,称为“附属于该仓库的工作树”

1
git init

3.查看当前仓库状态用

1
git status

其中

  • on brach master:表示当前处在master分支下
  • Untracked files:表示工作目录中未加入暂存区的文件
  • Change to be committed:表示已经在暂存区里的文件

4.向暂存区中添加文件”Readme.md”

1
git add Readme.md

5.将暂存区文件提交到仓库中

1
2
3
git commit -m "xx"

# -m “xx”是对这次提交的简要注释

详细注释用以下命令,会启动类似vim的编辑器

1
git commit

在编辑器中记述提交信息的格式如下。

  • 第一行:用一行文字简述提交的更改内容
  • 第二行:空行
  • 第三行以后:记述更改的原因和详细内容

只要按照上面的格式输入,今后便可以通过确认日志的命令或工具
看到这些记录。
记述完毕后,请保存并关闭编辑器,以#标为注释的行不必删

6.查看提交记录

1
git log
  • 只显示第一行简要注释
    1
    git log --pretty=short
  • 只显示指定目录、文件的提交记录
    1
    git log 目录或文件名
  • 显示文件的改动
    1
    git log -p 目录或文件名

7.查看工作树和暂存区的差别

1
git diff
  • 查看工作树与分支上最新一次提交的区别
    1
    git diff HEAD

分支的操作

1.显示所有分支,*表示当前所在分支

1
git branch

2.创建分支

1
git branch xx

3.切换分支

1
2
3
git checkout  xx

# git checkout -b xx表示创建并切换分支

4.合并分支

1
2
git checkout 主干分支
git merge --no-ff 特性分支

然后再编辑器中退出保存即可(:wq)

5.以图表的方式查看分支(查看时q是退出)

1
git log --graph

回溯版本

1.使用reset –hard将仓库回溯到某时间点

1
git reset --hard

2.查看当前仓库的所有操作日志

1
git reflog

3.修改上一条提交的注释

1
git commit --amend

4.一步执行add和commit操作

1
git commit -am "提交注释"

5.将最新两次提交合并为一个

  • 首先执行下述命令会得出最新两次提交,会打开编辑器
    1
    git rebase -i HEAD~2
    显示以下内容
    1
    2
    pick 倒数第一次提交的哈希值 注释2
    pick 倒数第一次提交的哈希值 注释1
  • 将倒数第一次前的pick改为fixup
    1
    2
    pick 倒数第一次提交的哈希值 注释2
    fixup 倒数第一次提交的哈希值 注释1

推送至远程仓库

1.将本地仓库与空的远程仓库联系起来

1
2
3
git remote add origin git@github.com:用户名/远程仓库名.git

# origin的作用是自动将远程仓库的名字设为标识符

2.将当前仓库内容推送到远程仓库

1
2
3
4
git push -u origin master

# master是表示推送到远程仓库的master主干
# -u是将本次推送作为上游,为下次推送提供便利

3.从远程仓库中下载所有内容到本地空文件夹

1
2
3
git clone git@github.com:用户名/远程仓库名.git

# 默认clone获取的是master主干

获取远程仓库的其它分支,要同时在本地新建一个分支

1
git checkout -b feature-D origin/feature-D

4.更新远程仓库内容

1
2
3
git add .
git commit
git push

更新本地仓库内容

1
2
3
git pull origin feature-D

# 表示用feature-D分支内容来更新本地仓库

5.总结pull Request步骤

  • 在GitHub上进行Fork
  • 将Fork的仓库clone至本地开发环境
  • 在本地环境中创建特性分支
  • 对特性分支进行代码修改并进行提交
  • 将特性分支push到之前Fork的仓库中
  • 在GitHub上对Fork来源仓库发送Pull Request

6.git push -u的-u含义是upstream

  • 使用-u以后就可以直接使用不带别的参数的git pull从之前push到的分支来pull,之后的push也是一样
  • 如果不使用-u,在push之后的pull还需额外指定从哪个分支pull

github功能介绍

1.Explore用于从各个角度介绍GitHub上的热门软件

2.Gist作用相等于一个小型代码备忘录

3.Issues可以查看用户拥有权限的仓库或分配给自己的Issue。当同时进行多个项目时,可以在这里一并查看Issue

4.Wiki是一种比HTML语法更简单的页面描述功能。常用于记录开发者之间应该共享的信息或软件文档。数字表示当前Wiki的页面数量。