Git与Github操作指南(入门)
1.Git的操作
参考:
廖雪峰的Git教程
git Fast-forward与no-ff的区别
Git 官方文档
1.创建版本库
1.1 寻找一个适合的地方
$ mkdir version_nam
1.2 windows系统中确保目录不含中文名。(使用pwd查看绝对路径)
2.初始化版本库
$ git init
2.1 初始化成功后会显示
Initialized empty Git repository in D:/Git/.git/
3.把文件添加到版本库
3.1 添加到暂存区:
$ git add readme.txt
这里假设我新建的是一个readme.txt文档 。你的文档则修改readme.txt即可。
3.2 提交到当前分支:
$ git commit -m djdjd
参数解释:
- -m的意思是关于这个提交的描述。通常是默认必须跟一个描述,作用是便于自己和其他人了解你提交的内容。
note:git commit命令可以一次提交多个相同文件夹的内容。
4.查看当前状态
4.1 加入我对上面的readme.txt的内容进行了修改
$ git status
4.2 查看修改的内容
$ git diff
5.版本回退
5.1 查看历史版本
$ git log
5.2 回车键之后
$ git log
commit c7684d70618939337449649ecaf0f03a6b437bec
Author: Eternaldeath <222@qq.com>
Date: Sun Jan 14 18:03:26 2018 +0800
noword
commit 63f5ff1d9de011f577454388beda0cf41eedf66f
Author: Eternaldeath <222@qq.com>
Date: Sun Jan 14 18:02:11 2018 +0800
noword
commit acf45e68454cd873ecf687d838d0c3b95dc4ea56
Author: Eternaldeath <222@qq.com>
Date: Sat Jan 13 19:27:12 2018 +0800
no
参数解释:
- commit:这里是版本号
- Author:你的用户名和邮箱
- Date:版本更新的时间
- 下面的“noword”是你提交git commit -m输入的描述。
5.3 版本回退
$ git reset --hard HEAD^
参数解释:
- HEAD^:表示回退的版本。如果后面接一个 ^ ,表示上一个版本。若是两个 ^^
,就表示上上的版本。如果是10个,就表示成HEAD~10.
5.4 查看命令历史
$ git reflog
6.撤销修改
撤销工作区的修改:
$ git checkout -- <你的文件名>
ex:$ git checkout -- readme.txt
7.删除操作
$ rm <你的文件>
ex: rm readme.txt
7.1 使用 git status 用来查看删除的命令
8.远程仓库
8.1 本地库关联 Github 上的远程库
$ git remote add origin git@github.com:Eternaldeath/Font-end-Ggame.git
参数解释:
- Eternaldeath 这是你的 Github 账户名称,填写自己的。
- Font-end-Ggame 这是你的 Github 上的仓库的名称。
8.2 推送本地库到远程库中
$ git push -u origin master
参数解释:
- -u:推送加关联本地库和远程库。
此时查看 Github 上的内容,内容就和本地库一样了。
同时,只要现在使用该命令就可以同步到远程库(网页的 Github)中。
8.3 克隆远程库到本地库
比如你在网页的 Github 上有一个不错的仓库,但是你的本地主机上没有,那么你就可以通过下面这个命令创建一个本地的仓库。
$ git clone git@github.com:Eternaldeath:Personal-Resume.git
参数解释:
- Eternaldeath:这是你的账户名称。(Eternaldeath是我的)。
- Personal-Resume:这是你的仓库名称。(其实仓库就可以理解为一个文件夹)。
完成后查看你的主机,就会发现多了克隆的文件夹。
9.分支管理
9.1 创建并切换分支
$ git checkout -b aaa
参数解释:
- -b:b就是branch的缩写。 如果没有 -b 就是直接切换分支。
9.2 查看当前分支
$ git branch
回车键后显示
$ git branch
* aaa
master
你会看到两个分支,aaa 和 master(这是默认的分支),aaa 前面有一个 * ,这就是指针的意思,意思是现在指向 aaa 这个分支。
9.3 合并分支
假如我们切换回分支 master 了。
现在合并两个分支。
$ git merge aaa
合并完成后显示
$ git merge aaa
Updating 27e69f2..72c2a05
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
参数解释:
- Fast-forward:一种合并的模式:快进合并(合并的速度非常快)。
9.4 删除分支
$ git branch -d aaa
参数解释:
- -d:就是 delet 的缩写。
10.解决冲突
10.1 查看分支合并情况
$ git log --graph
类似下图
$ git log --graph
* commit 8e855d0b14adbf964c9b070173796c59ee19413e
|\ Merge: a9d6680 98312b7
| | Author: Eternaldeath <xxxx@qq.com>
| | Date: Mon Jan 15 11:18:56 2018 +0800
| |
| | branch-in-master
| |
| * commit 98312b78c0d925e4d208c8f56e7e6d1dc33f1d96
| | Author: Eternaldeath <xxxx@qq.com>
| | Date: Mon Jan 15 11:14:55 2018 +0800
| |
| | branch-in-new-branch
| |
* | commit a9d668067aaf59acdbcba3060bdca3b37f936b05
|/ Author: Eternaldeath <xxxx@qq.com>
| Date: Mon Jan 15 11:17:15 2018 +0800
|
| branch-in-master
|
11.分支策略
11.1 使用 –no-ff 策略执行分支
我们假设除了 master 的另一个分支是 dev
$ git merge --no-ff -m use-no-ff dev
参数解释:
- no-ff 和 Fast-forward 的区别:前者会保留一个 commit 的记录。
12.Bug分支
预设场景:假设一个这样的背景环境,当你在使用git进行工作A的时候,突然需要进行紧急工作B,而工作A无法立刻提交,这种情况应该怎么办呢?
$ git stash
参数解释:
- stash:藏匿。就是把当前的工作A隐匿起来,先在工作区执行紧急工作B。
12.1 查看隐匿的工作内容
$ git stash list
12.2 恢复隐匿的工作内容
$ git stash pop
语法解释:恢复隐匿的工作内容,并且删除 stash 区域。
当然还有一种方式,就是把恢复和删除分成两步。
$ git stash apply //恢复
$ git stash drop //删除
13.feature 分支
特点:feature 分支的特点应该是“特性”,就是如果你的产品每添加一个新的功能,而你又不想打乱主代码的布置,就可以使用feature。(个人理解)
14.多人协作
14.1 查看远程库信息
$ git remote -v
参数解释:
- -v :是查看详情信息。如果不查看详情信息就不用 -v
14.2 推送分支
$ git push origin master
参数解释:
- origin:远程库的名字,这就是你创建本地库和远程库关联的时候的名字。
- master:这是你要推送的分支。也可以其他分支,比如之前提到的 bug,feature等。
15.标签管理
标签是版本库的快照
本质上是一个指针
与分支的区别在于标签作为指针是不能移动的
需要标签的原因是,我们之前看到分支的commit号都是很长的一串数字和字符组成,而使用标签就只需要一个类似:v1.2的形式
15.1 标记标签
$ git tag v1.0
参数解释:
- v1.0:就是你要打标签的内容。
15.2 查看标签
$ git tag
15.3 标记以往的标签
如果你忘记给上一次打标签了,那么可以通过查找上一次的 commit 号来标记标签。
$ git tag v1.1 1234567
参数解释:
- 1234567:这个就是你的上一次的 commit 号
15.4 查看标签信息
$ git show <tagname>
15.5 删除标签
$ git tag -d <tagname>
15.6 推送标签
推送某一个
$ git push origin <tagname>
推送所有
$ git push origin --tags
15.7 删除远程标签
先删除本地的。
然后删除远程库的
$ git push origin :refs/tags/<tagname>
16.DIY你的Git的功能
增加Git代码的颜色
$ git config --global color.ui true
2.Github 的补充
参考:Github 帮助
对于 Github 的教程很多,这里不赘述。只作为简单的补充。
1.单词解释
fork:fork就是把对方的仓库克隆在自己的远程库里。比如,你在 Github 上看见一个不错的开源仓库,你想要 clone 下来,但是 clone 是 clone 到本地主机,以后想推送自己的修改是不能的,所以可以先 fork 到自己的远程库在 clone 下来。
pull request:接着上面的 fork 。现在你做了一些对项目的修改,你想让开源项目的负责人看见,你就需要 pull request 给他,如果他觉得不错,他就会 merge (合并)你的分支。
2.界面解释
这里只列出了常用的一些页面,其他的Github的使用参考Github官方帮助文档。