-
Git安装配置及常用命令
0-
Git本地分支管理
1 -
Git远程分支管理
2 -
Git Tag标签管理
3 -
Git Log日志
4 -
其它高级命令
5
-
Git本地分支管理
-
常规使用及介绍
6-
角色权限
7 -
分支定义
8 -
一般使用方法
9 -
1. 克隆
10 -
2. 查看所有分支
11 -
3. 切换到dev分支
12 -
" style="text-decoration: none; vertical-align: baseline;color: rgb(50, 105, 160);">4. 基于dev分支创建自己的分支<分支名称>
13 -
,然后愉快的coding" style="text-decoration: none; vertical-align: baseline;color: rgb(50, 105, 160);">5. 切换到<分支名称>,然后愉快的coding
14 -
6. 加到暂存区
15 -
7. 可随时检查工作区状态
16 -
8. 提交到本地仓库
17 -
9. 推送到服务器仓库
18 -
10. 合并到dev分支(例)
19 -
分支(不能删除当前分支)" style="text-decoration: none; vertical-align: baseline;color: rgb(50, 105, 160);">11. 删除分支,切换到master分支然后删除<分支名称>分支(不能删除当前分支)
22 -
12. 删除远程,危险,切记只删除自己建立的分支,不要删除公共分支,例如dev、release等
23
-
角色权限
-
GitLab介绍及常规使用
24-
命名规则
25 -
主要分支(保护分支)
26
-
命名规则
-
区别git与svn
30-
开发者的本地?
31 -
在没有网络的情况下, 开发还能不能进行版本控制
32 -
最常用命令:
33
-
开发者的本地?
-
git/github的常用操作
34-
全局配置github用户名和邮箱
35 -
生成一个本地仓库
36 -
添加文件并提交
37 -
git在本地维护了3个区域
38 -
push推送: 将本地仓库中的更新提交到远程仓库
39 -
pull拉取
40 -
git管理真实项目
41 -
公司多人协同
42 -
开源项目多人协同
43
-
全局配置github用户名和邮箱
-
git/github其它操作
44-
fetch拉取
45 -
其它的命令:
46 -
在webstorm中使用git
47 -
使用TortoiseGit
48
-
fetch拉取
-
Git安装配置及常用命令
Git安装配置及常用命令
- 从官网下载安装包,手动完成安装。
- 打开
Git Bash
命令行工具,执行命令ssh-keygen -t rsa -C Email-Addresss
生成一个密钥对。 - 登录到GitLab,点击右上角你的用户头像,点击
Edit Profile settings
,点击SSH Keys
,点击Add SSH Key
,填写Title
栏,复制用户目录下.ssh/id_rsa.pub
文件的内容到Key
,点击Add Key
。 - 点击右上角的
New project
,填写完成后点击Create project
新建一个仓库,点击Activity
,点击SSH
后复制SSH
边上栏里的地址。 - 打开
Git Bash
命令行工具,切换到一个合适的目录,使用命令git clone '刚才复制的URL'
克隆创建的仓库。 - 进入目录
cd 仓库名
,执行命令git config --global user.email your-email
,设置你的邮箱git config --global user.name your-name
,设置你的姓名。 - 执行命令:
echo "# Description" > README.md
,添加一个文件git status
,查看当前状态,发现有未跟踪文件git add .
,当前目录所有文件添加到暂存区git diff
,比较当前工作区和暂存区有何不同git status
,查看当前状态,发现有文件未提交git commit -m "注释"
,把暂存区内容提交到本地仓库git push -u origin master
,把本地仓库的提交推送到远程仓库git log
,查看提交日志 - 模拟远程更新
登录到GitLab
,点击Files
标签,点击README.md
文件,点击Edit
按钮修改文件内容,添加新行:”* 远程修改文件记录”,可以点击Preview
预览,也可以填写注释后直接保存。 - 执行命令:
git pull
,拉取远程仓库的更新提交,并做自动合并,可能会出现冲突git fetch
,获得远程仓库的更新提交,不做自动合并,需要手动合并git merge origin/master
,把远程更新提交手动合并到本地master分支 - 配置命令别名
git config --global alias.co checkout
,配置检出命令别名git config --global alias.br branch
,配置分支命令别名git config --global alias.ci commit
,配置提交命令别名git config --global alias.st status
,配置当前状态命令别名git config --global alias.df diff
,配置比较命令别名git config --global alias.pl pull
,配置拉取命令别名git config --global alias.pu push
,配置推送命令别名git config --list
,查看配置列表git config --global credential.helper store
,配置记住密码,以HTTPS使用时 - 其它命令
git clean -f
,清空未跟踪文件git checkout .
,清空工作区改动git checkout some-branch-name file-name.js
,检出指定分支的指定文件git checkout {{some-commit-hash}} file-name.js
,检出指定提交的指定文件 - 其它
- Git管理大项目一段时间后会比较慢,可以使用
git gc
命令清理一下- Git不管理空目录,如果本地有空目录,则始终不会提交到仓库中
- Git会根据文件的相似性自动识别重命令名操作,底层其实也是先delete后add
- 可在.git同级目录添加.gitignore文件,文件中可写入忽略文件信息,查看状态和提交时均会自动忽略
- 1.7版好像支持了像svn那样只检出部分目录的功能,详细请移步官网文档,另附Git稀疏检出教程一例
- 推荐官方书籍:Pro Git
- 官方手册地址请戳我,注:
git help 'command'
显示的就是官方手册Manual Page.- 还有一些其它功能,比如:rebase, rm, reset, remote, blame, cherry-pick, mergetool, difftool等本教程还没涉及,以后会逐步更新
Git本地分支管理
- 分支的创建、合并、删除、比较
git branch
,显示所有分支git branch b1
,从当前分支创建一个叫b1的分支git checkout b1
,切换到b1分支git checkout -b b1
,相当于以上两条命令的组合git checkout master
,切换到master主分支git merge b1
,把b1分支的代码合并到master上git branch -d b1
,删除b1分支,不能在被删除分支上执行git diff branch-1 branch-2
,比较两个分支的不同git diff --name-only branch-1 branch-2
,只显示两分支不同的文件的名称git diff some-branch some-filename.js
,比较当前分支与另一分支指定文件
Git远程分支管理
- 远程分支的创建、合并、删除
git push origin dev
,将本地分支dev推送到origin远程仓库git pull origin dev
,拉取远程仓库origin的dev分支并自动合并git push orgin :dev
,删除远程仓库origin上的远程分支git push origin --delete dev
,1.7版之后可以使用这个命令。git remote prune origin
,清理本地的跟踪分支,可加—dry-run参数假执行一下git pull --rebase
,以变基的形式拉取更新
Tips : tag的远程管理类似远程分支管理
Git Tag标签管理
- 标签的创建、删除
git tag t1
,从当前分支创建一个名为t1的标签git tag -m '注释' t1
,创建一个带有注释的标签git tag -d t1
,删除名为t1的标签
Git Log日志
git log
,查看历史日志git log --graph
,以基于文本的图形显示合并轨迹git log --pretty=oneline
,一行显示日志简要信息git log --pretty=format:"%h - %an, %ar : %s"
,以指定格式查看日志,format参数请移步官方手册git log --pretty="%h - %s" --author=gitster --since="2008-10-01" --before="2008-11-01" --no-merges
,以指定格式显示指定日期区间和指定提交者的日志,不含合并提交git log -p -2 --stat
,-p显示文件差异,-2显示最近两次提交,—stat显示修改行数统计信息git log -p filename
,查看文件的详细变更,包括文件的实际修改内容git log -L 1,1:some-file.txt
,查看文件中指定位置的变更git log --no-merges master..
,查看尚未合并到master分支的变更
其它高级命令
git show --no-merges master..
,功能同上git show some-branch:some-file.js
,查看其它分支的文件,无需切换分支
常规使用及介绍
角色权限
角色 | 权限 | 备注 |
---|---|---|
Owner | 项目所有者,拥有所有的操作权限 | 最高权限 |
Master | 项目的管理者,除更改、删除项目元信息外其它操作均可 | 负责master等受保护分支的merge工作等 |
Developer | 项目的开发人员,做一些开发工作,对受保护内容无权限 | 可以创建远程分支,创建merge请求, 接受merge请求? |
Reporter | 项目的报告者,只有项目的读权限,可以创建代码片断 | 不能创建远程分支, 创建merge请求? |
Guest | 项目的游客,只能提交问题和评论内容 | 只能issue等 |
具体请看官方文档:https://docs.gitlab.com/ee/user/permissions.html
分支定义
分支名称 | 定义 | 人员 | 环境 | 保护分支 | 稳定分支 |
---|---|---|---|---|---|
master | 主分支 | *负责人Master | 生产环境 | 是 | 是 |
r-预发布版本号 | 预发布分支 | *负责人Master | 预发布环境 | 是 | |
dev | 开发分支 | 项目负责人Master | 测试环境 | 是 | 是 |
b-BUG编号 | Bug修复分支 | 开发者Developer | 测试环境 | ||
f-特性名称 | 特性分支 | 开发者Developer | 开发环境 | ||
f-特性名称-coder | 特性分支-开发者 | 开发者Developer | 开发环境 | ||
t-发布版本号 | 发布版本标签 | all | all | 是 |
一般使用方法
1. 克隆
git clone <仓库地址>
2. 查看所有分支
git branch -a
# 查看是否有origin/dev分支,服务器默认已建立dev分支,如果没有,则请Master角色先建立该分支:
# 方法1:clone版本哭,新建本地dev分支并push到服务器:git clone ; git branch dev ; git checkout dev ; git push。
# 方法2:直接在gilab上建立dev分支
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git branch -a
# 查看是否有origin/dev分支,服务器默认已建立dev分支,如果没有,则请Master角色先建立该分支:
# 方法1:clone版本哭,新建本地dev分支并push到服务器:git clone ; git branch dev ; git checkout dev ; git push。
# 方法2:直接在gilab上建立dev分支
3. 切换到dev分支
git checkout dev #--- 可能是git checkout -b dev origin/dev,建立进入分支,并关联
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git checkout dev #--- 可能是git checkout -b dev origin/dev,建立进入分支,并关联
4. 基于dev分支创建自己的分支<分支名称>
git checkout dev
git branch <分支名称>
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git checkout dev
git branch <分支名称>
5. 切换到<分支名称>,然后愉快的coding
git checkout <分支名称>
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git checkout <分支名称>
6. 加到暂存区
git add ./
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git add ./
7. 可随时检查工作区状态
# 查看当前分支工作区是否有未跟踪的文件(即是否有未添加到暂存区的文件)
git status
# 查看当前分支工作区的文件与暂存区文件的差异
git diff
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;"># 查看当前分支工作区是否有未跟踪的文件(即是否有未添加到暂存区的文件)
git status
# 查看当前分支工作区的文件与暂存区文件的差异
git diff
8. 提交到本地仓库
git commit -m "说明"
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git commit -m "说明"
9. 推送到服务器仓库
也可以不推送到服务器,只放在本地仓库,例如仅本人使用的临时分支
git push --set-upstream origin <分支名称> #--- 设置关联,也会顺便推送,仅在第一次时用
git push origin
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git push --set-upstream origin <分支名称> #--- 设置关联,也会顺便推送,仅在第一次时用
git push origin
10. 合并到dev分支(例)
A. Developer在网页上请求合并(推荐)
网页上请求合并还可以顺便进行代码审查,里程碑设置等
参考:
gitlab如何实现代码评审机制(通过角色管理控制): http://www.jianshu.com/p/adb598c52e84
如果出现冲突,开发人员将服务器最新的版本pull下来,然后将dev分支合并到自己的分支
git pull
git checkout <分支名称>
git merge --no-ff dev
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git pull
git checkout <分支名称>
git merge --no-ff dev
如果有冲突,则参照上面的参考链接解决,或直接按【B. Master角色直接本地合并】中的方法解决
B. Master角色直接本地合并
dev是保护分支,只有Master角色(例,看设置的分支保护权限)才有权限进行合并
将本地分支<分支名称>合并到本地dev分支,必须先从服务器pull最新代码,并切换到dev分支,然后再合并:
git pull <仓库地址>
git checkout dev
git merge --no-ff <分支名称>
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git pull <仓库地址>
git checkout dev
git merge --no-ff <分支名称>
运行merge命令之后,如果有冲突,则需要手动解决冲突,打开冲突文件,你可以看到类似:
。。。
111
<<<<<<< HEAD
222 master do it
=======
222 source do it
333 source jjj
>>>>>>> <分支名称>
。。。
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">。。。
111
<<<<<<< HEAD
222 master do it
=======
222 source do it
333 source jjj
>>>>>>> <分支名称>
。。。
将正确的留下,错误的删除即可,保存退出,然后重新(git add . ; git commit ; git merge ):
git add .
git commit -m "for merge说明"
git merge --no-ff <分支名称>
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git add .
git commit -m "for merge说明"
git merge --no-ff <分支名称>
冲突时,也可以撤销合并:
git merge --abort
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git merge --abort
11. 删除分支,切换到master分支然后删除<分支名称>分支(不能删除当前分支)
git checkout master
git branch -d <分支名称>
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git checkout master
git branch -d <分支名称>
12. 删除远程,危险,切记只删除自己建立的分支,不要删除公共分支,例如dev、release等
git push origin :<分支名称>
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git push origin :<分支名称>
GitLab介绍及常规使用
GitLib有五种身份权限,分别是:
- Owner 项目所有者,拥有所有的操作权限
- Master 项目的管理者,除更改、删除项目元信息外其它操作均可
- Developer 项目的开发人员,做一些开发工作,对受保护内容无权限
- Reporter 项目的报告者,只有项目的读权限,可以创建代码片断
- Guest 项目的游客,只能提交问题和评论内容
具体参见GitLab权限,为项目添加成员时可指定成员的身份权限。
命名规则
- 每次提交必须写明注释,如果是修复Bug,请加上Bug号
- 创建特性分支,名称要以
f-
开头,加上特性名- 创建发布分支,名称要以
r-
开头,加上预发布版本号- 创建Bug修复分支,名称要以
b-
开头,加上Bug号- 创建标签,名称要以
t-
开头,加上发布版本号- 合并分支时必须使用
--no-ff
参数(禁止以快进方式合并),以保留合并历史轨迹
主要分支(保护分支)
- master 主分支,稳定代码,为生产环境做准备的
- develop 开发分支,为开发服务
特性分支
从develop分支创建,用于特性开发,完成后要合并回develop分支。
操作过程:git checkout -b newfeature develop
,从develop分支创建newfeature特性分支git checkout develop
,开发完成后,需要合并回develop分支,先切换到develop分支git merge --no-ff newfeature
,合并回develop分支,必须加--no-ff
参数git branch -d newfeature
,删除特性分支git push origin develop
,把合并后的develop分支推送到远程仓库
发布分支
从develop分支创建,用于预发布版本,允许小bug修复,完成后要合并回develop和master。
操作过程:git checkou -b release-1.2 develop
,创建一个发布分支git checkout master
,切换到master分支,准备合并git merge --no-ff release-1.2
,把release-1.2分支合并到master分支git tag 1.2
,从master分支打一个标签git checkou develop
,切换到develop分支,准备合并git merge --no-ff release-1.2
,把release-1.2分支合并到develop分支git branch -d release-1.2
,删除这个发布分支
修复分支
从master分支创建,用于生产环境上的Bug修复,完成后要合并回develop和master。
操作过程:git checkout -b hotfix-1.2.1 master
,从master分支创建一个Bug修复分支git checkout master
,切换到master分支,准备合并git merge --no-ff hotfix-1.2.1
,合并到master分支git tag 1.2.1
,为master分支创建一个标签git checkout develop
,切换到develop分支,准备合并git merge --no-ff hotfix-1.2.1
,合并到develop分支git branch -d hotfix-1.2.1
,删除hotfix-1.2.1分支
区别git与svn
开发者的本地?
svn: 只有一个版本的代码
git: 整个仓库的所有版本
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">svn: 只有一个版本的代码
git: 整个仓库的所有版本
在没有网络的情况下, 开发还能不能进行版本控制
svn: 不可以, svn没有自我版本控制的能力
git: 可以的, git在本地就有一个仓库, 本地的版本控制
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">svn: 不可以, svn没有自我版本控制的能力
git: 可以的, git在本地就有一个仓库, 本地的版本控制
最常用命令:
svn: checkout/commit/update
git: clone/add/commit/push/pull
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">svn: checkout/commit/update
git: clone/add/commit/push/pull
git/github的常用操作
全局配置github用户名和邮箱
git config --global user.name "用户名" //配置用户名
git config --global user.email "你的邮箱" //配置邮箱
git config --list //查看配置列表
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git config --global user.name "用户名" //配置用户名
git config --global user.email "你的邮箱" //配置邮箱
git config --list //查看配置列表
生成一个本地仓库
git init //初始一个本地创建
git clone url //从远程克隆仓库到本地
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git init //初始一个本地创建
git clone url //从远程克隆仓库到本地
添加文件并提交
git add * //将工作区的变化添加到缓存区
git commit -m "说明信息" //将缓存区的变化提交到版本区
git status // 查看状态
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git add * //将工作区的变化添加到缓存区
git commit -m "说明信息" //将缓存区的变化提交到版本区
git status // 查看状态
git在本地维护了3个区域
工作区(working dir)
缓存/暂存区(Index/Stage)
版本区(HEAD)
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">工作区(working dir)
缓存/暂存区(Index/Stage)
版本区(HEAD)
push推送: 将本地仓库中的更新提交到远程仓库
git remote add origin url //关联本地仓库与远程仓库(1次)
git push origin master //将本地仓库的更新推送到远程仓库
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git remote add origin url //关联本地仓库与远程仓库(1次)
git push origin master //将本地仓库的更新推送到远程仓库
pull拉取
git pull origin master //拉取远程仓库的更新到本地仓库
注意: 自动合并
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git pull origin master //拉取远程仓库的更新到本地仓库
注意: 自动合并
git管理真实项目
1.添加忽略
创建.gitignore文件
vim .gitignore //通过vim命令创建文件
i //进入编辑模式
按esc //进入查看模式
ZZ //保存并退出
指定需要忽略的文件或文件夹
/.idea ##忽略当前目录下的此文件(夹)
node_modules ## 忽略任意目录下的此文件(夹)
2.本地版本控制
git add *
git commit -m "xxx"
3.创建github(远程)仓库
New Repository
VueSource
4.推送到远程仓库
git remote add origin https://github.com/zxfjd3g/VueSource.git
git push origin master
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">1.添加忽略
创建.gitignore文件
vim .gitignore //通过vim命令创建文件
i //进入编辑模式
按esc //进入查看模式
ZZ //保存并退出
指定需要忽略的文件或文件夹
/.idea ##忽略当前目录下的此文件(夹)
node_modules ## 忽略任意目录下的此文件(夹)
2.本地版本控制
git add *
git commit -m "xxx"
3.创建github(远程)仓库
New Repository
VueSource
4.推送到远程仓库
git remote add origin https://github.com/zxfjd3g/VueSource.git
git push origin master
公司多人协同
new organization
查找小伙伴账号, 并添加
修改组织成员的访问权限为: write
向小伙伴发送organization名称/地址
小伙伴登陆后访问organization的地址, 同意协作请求
在组织下创建仓库, 所有小伙伴都可以对仓库进行clone/pull/push了
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">new organization
查找小伙伴账号, 并添加
修改组织成员的访问权限为: write
向小伙伴发送organization名称/地址
小伙伴登陆后访问organization的地址, 同意协作请求
在组织下创建仓库, 所有小伙伴都可以对仓库进行clone/pull/push了
开源项目多人协同
用户A: 项目xxx
用户B: 用户A的下一级或朋友, 没有权限直接向仓库xxx push代码
B: 访问xxx主页, fork一个分支到B账户下
B: clone=>修改代码==>commit==>push
B: pull request: 向A提交一个pull的请求
A: 接收到消息, 查看/diff/merge
AB: 可以进行发信息交流
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">用户A: 项目xxx
用户B: 用户A的下一级或朋友, 没有权限直接向仓库xxx push代码
B: 访问xxx主页, fork一个分支到B账户下
B: clone=>修改代码==>commit==>push
B: pull request: 向A提交一个pull的请求
A: 接收到消息, 查看/diff/merge
AB: 可以进行发信息交流
git/github其它操作
fetch拉取
git fetch origin master:tmp
git diff tmp
git merge tmp : 将tmp分支合并到当前分支
需要手动合并后提交
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git fetch origin master:tmp
git diff tmp
git merge tmp : 将tmp分支合并到当前分支
需要手动合并后提交
其它的命令:
git log/reflog
git checkout commit_id <file.name> : 将指定文件回到指定版本
git reset --hard HEAD : 将整个工作区回到最新版本
git reset --hard HEAD^ : 回到上一个版本
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">git log/reflog
git checkout commit_id <file.name> : 将指定文件回到指定版本
git reset --hard HEAD : 将整个工作区回到最新版本
git reset --hard HEAD^ : 回到上一个版本
在webstorm中使用git
在settings中配置关联上git.exe
使用git命令初始化本地仓库并与远程仓库关联
通过version control视窗直接进行版本控制操作
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">在settings中配置关联上git.exe
使用git命令初始化本地仓库并与远程仓库关联
通过version control视窗直接进行版本控制操作
使用TortoiseGit
安装TortoiseGit
通过菜单进行git版本控制(不使用命令)
使用git SSH
利用TortoiseGit的PuTTY工具生成public Key, 并配置到github上
生成private key并保存为一个ppk文件
通过远程仓库的ssh地址clone, 并指定本地的ppk文件
" style="border: 0px; display: block;font-family: Consolas, Inconsolata, Courier, monospace; font-weight: bold; white-space: pre; margin: 0px;border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); padding: 0px 5px; margin: 0px 2px;font-size: 1em; letter-spacing: -1px; font-weight: bold;">安装TortoiseGit
通过菜单进行git版本控制(不使用命令)
使用git SSH
利用TortoiseGit的PuTTY工具生成public Key, 并配置到github上
生成private key并保存为一个ppk文件
通过远程仓库的ssh地址clone, 并指定本地的ppk文件
Git常规命令参考自:http://www.07net01.com/2015/04/827369.html
结合 haroopad 玩 markdown模式编写 也不想象中的那么简单啊 …