认识github
GitHub 是什么,没关系,简单讲就是一个开源社区网站,对于这样一个社区网站,如果只是人人可以把代码开源在上面以让其他人也可以阅读进行学习这样一个单一功能,这也太单一了吧。其实 GitHub 功能很多,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和 Bug 提出评论等。
安装git
网上教程一把一把的,windows上用这个网站https://git-scm.com/downloads
下载安装即可。
基本使用
- 基本信息配置
你的姓名、emai
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
- 创建版本库
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
- 初始化版本库
通过git init命令把这个目录变成Git可以管理的仓库:
git init
- 把文件添加到版本库
现在我们编写一个readme.txt文件,内容如下:
Git is a version control system.
Git is free software.
第一步:添加
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,用命令git commit提交:
$ git commit -m“描述语言”
-
解决密码账户的问题
Windows上设置避免每次git push 都需要账号密码
在 C:\Users\目录下 能看到 [.gitconfig] 这个文件:[user] name = kn**** email = ************.com [credential] helper = store 配置了credential之后就可以存储账号密码,下次不用再输入
-
版本的修改与恢复
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
-
忽略.swp文件
据说是使用vi不正常退出造成的,差点搞死我,我也突然想到为什么我以后编代码要去vim里面修改,所以以后不要再用它了,直接到文件里面去修改,然后git add添加,git commit 提交就是饿了,再也不要用它了。
然后给出大家解决办法,就是…
**打开任务管理器,结束掉vim.exe**这个进程,然后再使用git status ,啥事没有了,回归平静
然后你就可以看到没有红色警告的提示了
-
撤销修改
既然错误发现得很及时,就可以很容易地纠正它。你可以删掉最后一行,手动把文件恢复到上一个版本的状态。如果用git status查看一下:$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: readme.txt no changes added to commit (use "git add" and/or "git commit -a")
你可以发现,Git会告诉你,git checkout – file可以丢弃工作区的修改:
$ git checkout -- readme.txt
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
- 远程仓库
- 使用分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>