github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。
github由Chris Wanstrath, PJ Hyett 与Tom Preston-Werner三位开发者在2008年4月创办。迄今拥有59名全职员工,主要提供基于git的
版本托管
服务。
1、注册账号和创建仓库
要想使用github第一步当然是注册github账号了, github官网地址:https://github.com/。 之后就可以创建仓库了(免费用户只能建公共仓库),点击右上角头像,再点击
Your profile
,进入Repository
,点击New
,之后会出现一些仓库的配置信息:之后会进入配置界面,依次填写仓库的基本信息,然后点击
Creat Repository
,正式创建一个代码仓库:配置完成之后,会进入到仓库里面,让我们一探究竟吧:
基本创建工作完成,后面就是用ssh链接到我们的仓库啦,这时我们就会用到
git-bash
这个工具啦,继续往下看。
2、git
下载安装
Git
:
- 下载 git OSX 版
- 下载 git Windows 版
- 下载 git Linux 版
- 或者可以进入 GIT 官网 下载适合自己的版本
配置
Git
:
首先在本地创建
ssh key
,运行命令:1
2# 这里填写你的邮箱地址
$ ssh-keygen -t rsa -C "your_email@youremail.com"后面的your_email@youremail.com改为你在github上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。
回到github上,进入 Settings(账户配置),左边选择SSH and GPG keys,点击New SSH Key,title随便填,粘贴在你电脑上生成的key。
为了验证是否成功,在git bash下输入:
1
$ ssh -T git@github.com
如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。
接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们:
1
2$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"进入要上传的仓库,右键git bash here,添加远程地址:
1
2# git remote add origin git@github.com:yushengyuan1993/test.git
$ git remote add origin git@github.com:yourName/yourRepo.git后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。
创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库。
3、克隆仓库
执行如下命令以创建一个本地仓库的克隆版本:
1
$ git clone /path/to/repository
如果是远程服务器上的仓库,你的命令会是这个样子:
1
$ git clone username@host:/path/to/repository
4、Git命令
你的本地仓库由 git 维护的三棵”树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。
工作流:
- 你可以提出更改(把它们添加到暂存区),使用如下命令:
1
2$ git add <filename>
git add * - 这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。
1
$ git commit -m "代码提交信息"
- 你可以提出更改(把它们添加到暂存区),使用如下命令:
推送改动:
你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:
1
2
3# 推送改动到 master 分支,实际开发中很少会直接推送到master上,
# 一般都是推到开发分支,再由leader推到master
$ git push origin master可以把 master 换成你想要推送的任何分支。
如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
1
$ git remote add origin <server>
如此你就能够将你的改动推送到所添加的服务器上去了。
分支:
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是”默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。
创建一个叫做”feature_x”的分支,并切换过去:
1
$ git checkout -b feature_x
- 切换回主分支:
1
$ git checkout master
- 再把新建的分支删掉:
1
$ git branch -d feature_x
- 除非你将分支推送到远端仓库,不然该分支就是不为他人所见的:
1
$ git push origin <branch>
更新与合并:
- 要更新你的本地仓库至最新改动,执行:
1
$ git pull
- 以在你的工作目录中
获取(fetch)
并合并(merge)
远端的改动。 - 要合并其他分支到你的当前分支(例如 master),执行:
1
$ git merge <branch>
- 在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:
1
$ git add <filename>
- 在合并改动之前,你可以使用如下命令预览差异:
1
$ git diff <source_branch> <target_branch>
- 要更新你的本地仓库至最新改动,执行:
标签:
- 为软件发布创建标签是推荐的。这个概念早已存在,在
SVN
中也有。你可以执行如下命令创建一个叫做1.0.0
的标签:1
$ git tag 1.0.0 1b2e1d63ff
1b2e1d63ff
是你想要标记的提交ID
的前10
位字符。可以使用下列命令获取提交ID
:1
$ git log
- 你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。
- 为软件发布创建标签是推荐的。这个概念早已存在,在
替换本地改动:
- 假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:
1
$ git checkout -- <filename>
- 此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。
- 假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
1
2$ git fetch origin
$ git reset --hard origin/master
- 假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:
实用小贴士:
- 内建的图形化
git
:1
$ gitk
- 彩色的
git
输出:1
$ git config color.ui true
- 显示历史记录时,每个提交的信息只显示一行:
1
$ git config format.pretty oneline
- 交互式添加文件到暂存区:
1
$ git add -i
- 设置
git
命令别名:1
2
3
4
5$ git config --global alias.st status # 把status 别名设置为 st
$ git config --global alias.cm commit # 把commit 别名设置为 cm
$ git config --global alias.br branch # 把branch 别名设置为 br
$ git config --global alias.co checkout # 把checkout 别名设置为 co
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" # 设置结构化的git log tree git show
命令:1
2
3$ git show commitId # 查看这次提交具体修改的内容
$ git show stashId # 查看stash的一些基本信息
$ git show commitId fileName # 查看某一个文件在某一次提交中的修改git stash
命令:1
2
3
4
5
6$ git stash # 隐藏当前正在进行的工作
$ git stash list # 列出所有stash
$ git stash apply stashId # 拉取某次的stash
$ git stash drop stashId # 移除某个stash
$ git stash pop # 抽取上一次的stash到工作空间
$ git stash clear # 清除所有的stash把本地代码推送到远程仓库:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 1、初始化版本库
$ git init
# 添加文件到版本库(只是添加到缓存区),.代表添加文件夹下所有文件
$ git add .
# 把添加的文件提交到版本库,并填写提交备注
$ git commit -m "first commit"
# 2、到目前为止,我们完成了代码库的初始化,但代码是在本地,还没有提交到远程服务器,所以关键的来了,
# 要提交到就远程代码服务器,进行以下两步:
$ git remote add origin `remote repository` # 把本地库与远程库关联
$ git push -u origin master # 第一次推送时
$ git push origin master # 第一次推送后,直接使用该命令即可推送修改
- 内建的图形化
把 main 修改为 master
1
2
3
4
5
6
7
8
9The default branch has been renamed!
main is now named master
If you have a local clone, you can update it by running:
git branch -m main master
git fetch origin
git branch -u origin/master master
git remote set-head origin -a
参考文档
git-scm