目录
- 一、GIT初始化设置:
- 创建密钥
- 添加远程仓库
- 用户名邮箱配置
- Clone远程仓库
- 创建本地仓库
- 代理设置
- 自定义操作
- 二、GIT基本操作
- 添加到暂存区区
- 提交
- 删除
- 版本回退
- 撤销修改
- 三、GIT分支操作
- 创建分支
- 分支合并
- 分支推送
- 分支绑定
- 分支删除
- stash功能
- 四、GIT标签操作
- 本地操作
- 远程操作
- 五、Github同步原作者代码
- 六、GIT多人协作的工作模式
- 七、GIT关联Gitee和GitHub
- 八、Github 解决敏感配置文件上传问题
- 九、.gitignore文件忽略原则
- 忽略文件的原则
- 检查文件忽略情况
- 十、搭建git私服,以ubuntu为例
- 基本使用
- 扩展使用
Git的官方网站:http://git-scm.com
一、GIT初始化设置:
创建密钥
ssh‐keygen ‐t rsa ‐C "xxxx@xxxx.com"
添加远程仓库
添加远程origin库关联
git remote add origin git@github.com:[用户名]/[仓库名].git查看远程仓库
git remote -v删除远程origin库的关联
git remote rm origin
用户名邮箱配置
全局配置
git config --global user.name "xxxx"git config --global user.email "xxxx@xx.com"git config --list
项目单独配置(在项目根目录下)
git config user.name "xxxxx"git config user.email "xxxxx@xxxx.com"git config --list
Clone远程仓库
git clone 项目地址
创建本地仓库
git init
代理设置
查看全局代理设置
git config --global http.proxy设置http,https,socket代理 以`127.0.0.1:1080`为例
git config --global http.proxy 'http://127.0.0.1:1080'
git config --global https.proxy 'http://127.0.0.1:1080'
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'需要代理用户名密码的情况,以http为例
git config http.proxy http://username:password@127.0.0.1:1080忽略SSL证书错误
git config --global http.sslVerify false删除 proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
自定义操作
让Git显示颜色,会让命令输出看起来更醒目
git config ‐‐global color.ui true自定义git命令,以简化"git status"成"git st"为例:
git config ‐‐global alias.st status自定义日志颜色
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 lg
二、GIT基本操作
添加到暂存区区
表示添加所有内容 git add -A表示添加新文件和编辑过的文件不包括删除的文件git add . 表示添加编辑或者删除的文件,不包括新添加的文件git add -u强制添加一个被.gitignore文件忽略的文件的版本库
git add ‐f [文件名]
提交
git commit`
删除
从版本库删除某个文件
git rm [文件名]
版本回退
撤回到某个版本
git reset --hard [提交ID]查看过去的提交历史
git log查看所有的提交历史
git reflog
撤销修改
让file回到最近一次 "git commit" 或 "git add" 时的状态
git checkout -- [文件名]可以把暂存区的file修改撤销掉(unstage),重新放回工作区
git reset HEAD [文件名]
三、GIT分支操作
创建分支
创建一个dev分支并且切换到dev分支
git checkout ‐b dev创建dev分支
git branch dev切换到dev分支
git checkout dev创建远程origin的dev分支到本地
git checkout ‐b dev origin/dev查看分支
git branch
分支命名规范: issue-100 bug修复分支 feature-sms sms功能分支
分支合并
合并dev到当前的分支
git merge dev合并分支,并且禁用 Fast forward
git merge ‐‐no‐ff ‐m "merge with no‐ff" dev
Fast forward模式: Git在merge时生成一个新的commit,以便于从分支历史上就可以看出合并分支信息
分支推送
当前master分支推送到远程
git push ‐u origin master
分支绑定
将本地的dev分支和远程的origin的dev分支绑定
git branch ‐‐set‐upstream dev origin/dev以后就可以直接pull了
git pull
分支删除
删除dev分支
git branch ‐d dev强行删除
git branch ‐D dev
stash功能
把当前的工作状态保存下来,以便于后面恢复,包括index区。
git stash把当前的工作状态保存下来,以便于后面恢复,包括index区。
git stash list恢复statsh内容,但是不删除statsh
git stash apply恢复指定的stash
git stash apply stash@{0}删除stash内容
git stash drop恢复同时删除stash内容
git stash pop
四、GIT标签操作
本地操作
查看分支
git tag给当前分支打标签
git tag 给某个提交打标签
git tag [标签名] [提交ID]创建带有说明的标签,用 -a 指定标签名, -m 指定说明文字
git tag ‐a [标签名] ‐m "第一个正式版本" [提交ID]查看标签说明
git show [标签名]删除标签
git tag -d [标签名]
远程操作
标签推送
git push origin [标签名]推送全部尚未推送到远程的本地标签:
git push origin ‐‐tags删除远程标签
1. 先删除本地标签git tag -d [标签名]
2. 再推送远程git push origin :refs/tags/[标签名]
五、Github同步原作者代码
1. 查看远程状态git remote -v2. 添加原作者的远程仓库到remotegit remote add upstream 原作者远程仓库地址3. 同步forkgit fetch upstream4. 切换到本地主分支git checkout master5. 把 upstream/master 分支合并到本地 mastergit merge upstream/master6. push到远程仓库git push origin master7. 解决冲突
直接编辑冲突文件,然后提交更改重新push即可
六、GIT多人协作的工作模式
1. 首先,试图推送自己的修改git push origin branch-name 2. 如果推送失败,则因为远程分支比你的本地更新,需先试图合并git pull 3. 如果合并有冲突,则解决冲突,并在本地提交4. 没有冲突或者解决掉冲突后,再推送就能成功!git push origin branch-name如果"git pull"提示“no tracking information”,则先命令绑定关系
git branch --set-upstream branch-name origin/branch-name
七、GIT关联Gitee和GitHub
1. 删除已有的默认远程库:git remote rm origin2. 关联码云的远程库 git remote add [远程库别名] git@gitee.com:xxx/xxx.git3. 关联GitHub远程库git remote add [远程库别名] git@github.com:xxx/xxx.git4. 查看远程库信息git remote ‐v5. 分别推送到github和gitee以别名github为例,推送到GitHub,使用命令:git push github master以别名gitee为例,推送到码云,使用命令:git push gitee master至此,我们的本地库就可以同时与多个远程库互相同步
八、Github 解决敏感配置文件上传问题
- 将真正的config文件加入.gitignore,然后推送一个基本的config_example文件
- push 结束后,再把 config_example 添加到 .gitignore 中。
- 经典情景: 别人先clone 你的项目,把 config_example 文件 pull 下来后,复制一份再重命名为config,根据自己的环境稍加修改config文件。然后把两文件都添加到.gitignore 中。以后push 则不会再对远程仓库造成影响。
九、.gitignore文件忽略原则
忽略文件的原则
1. 忽略操作系统自动生成的文件,比如缩略图等;
2. 忽略编译生成的中间文件、可执行文件等;
3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
检查文件忽略情况
git check‐ignore ‐v [文件名]
十、搭建git私服,以ubuntu为例
基本使用
1. 安装git:sudo apt-get install git2. 创建一个git用户,用来运行git服务:sudo adduser git3. 创建证书登录:收集员工公钥`id_rsa.pub`文件,导入到`/home/git/.ssh/authorized_keys`文件里,一行一个。4. 初始化Git仓库:选定目录作为Git仓库,假定是`/srv/sample.git`,在`/srv`目录下输入命令:sudo git init --bare sample.git5. 把owner改为`git`sudo chown -R git:git sample.git6. 禁用shell登录: 编辑`/etc/passwd`文件git:x:1001:1001:,,,:/home/git:/bin/bash改为:git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell7. 克隆远程仓库:git clone git@server:/srv/sample.git
扩展使用
- 管理公钥
Gitosis - 管理权限
Gitolite