配置
设置全局用户名和邮箱账号
1 2 3
| git config –global user.name "username"
git config –global user.email "email"
|
生成并配置ssh-key
1
| ssh-keygen -t rsa -C "your_email@example.com"
|
生成的 ssh-key 一般位于C盘用户文件夹下 .ssh文件夹中,若未找到,可能是此文件夹被隐藏,在文件管理器上选择查看选项,勾选隐藏的项目即可显示。
将id_rsa.pub中的内容添加至github或其它代码托管平台的ssh-key配置中。
添加至github后使用以下命令测试是否添加成功。
1 2 3 4 5 6 7
| ssh -T git@github.com
// success Hi ..., You've successfully authenticated....
// error Permission denied ...
|
开始使用
克隆一个已有的仓库到本地
现在我们可以使用 ssh 的项目地址克隆代码仓库了
1
| git clone git@github.com:vuejs/vue.git
|
如果你希望在某个开源项目上贡献代码,由于没有写入的权限,需要使用fork + pull request的形式贡献代码或者向作者请求写入权限,将项目fork到自己的代码库中,然后再clone到本地。
在团队协作的项目中,我们可能需要拉取指定的分支工作,可以使用如下命令克隆指定分支的代码
1
| git clone -b branchName git@github.com:vuejs/vue.git // 克隆指定分支的代码
|
新建和切换分支
新建一个git项目的时候默认的分支是master, 多数情况下我们不会在主分支下进行开发,需要新建一个分支,切换到某个分支工作,确定代码没有问题后再提交到主分支。
1 2 3
| git branch dev // 新建一个 dev 分支 git checkout dev // 切换到 dev 分支 git checkout -b dev // 新建并切换到 dev 分支
|
暂存代码
有时我们在自己的分支上工作,代码还不能提交,却需要解决一个问题,可以储存代码
可以进行多次储存,每次储存都会生成一个唯一名称,恢复代码时可以指定名称恢复,如果未指明,默认使用最近的储存并尝试应用它
1 2 3
| git stash apply <stash@{0}> 或 git stash pop (应用并从存储的堆栈中移出)
|
提交代码
查看文件状态
提交到暂存区
1 2 3
| git add test.js // 提交单个文件 git add -u(--update) // 只提交被修改的文件,不包含新文件 git add . / git add -A(--all) // 提交所有文件(git v2)
|
提交更新
推送到远程仓库
如果是第一次提交代码,会默认在远程分支生成一个与当前分支同名的分支
1 2 3 4 5 6 7 8
| //建立本地分支与远程某分支的关联 git branch --set-upstream-to origin/branchName locaBranchName
// 将本地dev分支推送到远程的dev分支,并将本地分支与远程分支关联 git push -u origin/dev(远程) dev(本地)
相当于执行了 git push origin dev + git branch --set-upstream-to=origin/dev dev
|
关联后可使用 git push 直接推送代码
撤销提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // 撤销工作区的修改 git checkout -- <file>
// 撤销 git add 后并没有commit的修改(暂存区) git reset HEAD <file>
// 撤销已经 commit 但未 push 的提交 git log //查看提交历史 git reset --hard commit_id git reset commit_id
// 撤销已经 push 到远程仓库的提交 1.首先在本地回退到上一个版本 git reset commit_id git push --force
|
git reset –hard 参数表示将本地代码也回退为指定commit 的代码
git reset –soft 或 未使用参数,只是改变了 HEAD 的指向,本地代码并不会发生变化
拉取远程分支的代码
1
| git pull <远程主机名> <远程分支名>:<本地分支名>
|
合并分支
1
| git merge anotherBranch // 将另一个分支合并到当前分支
|
取消合并
如果合并了分支后进行了其它的操作
解决冲突
git add 能用于合并时把有冲突的文件标记为已解决状态