Git是如今最流行的版本管理工具, 其实学习的成本挺高的, 不少的入门的教程讲的都很是的坑, 好比尽可能用的rebase代替pull
, 当时我在想, 你说的我都懂, 可是具体应该怎么作呢, 我看了很久终于搞懂了, 我但愿的教程都把看的人当sb同样来看, 该写的命令, 一句不落, 而不是一笔带过, 本文大概分为如下几部分git
这是git的核心工具
官网: git-scm.com
下载: 在官网下载, 若官网不能访问, 点击这里shell
是git的辅助工具, 相似的还有TortoiseGit, 固然我选择SourceTree
官网: www.sourcetreeapp.combash
通常来讲都是项目管理人员新建仓库
(通常都会新建两个保护分支
主分支master和开发分支develop, 既然是保护分支对项目的其余人员都是只读的, 甚至是不可见的) 而后推送到远程仓库
, 项目的其余人员, 从远程仓库clone
, 项目参与人员根据任务的编号创建任务分支
(任务分支通常都是以develop分支为基础创建, 咱们公司是以'#'+任务编号, 来肯定任务分支名称, 如40号任务, 任务分支名称就为"#40"), 任务作好测试以后, 把分支推送到项目仓库, 项目管理人员就把任务分支合并
到develop分支进行整合测试, 肯定没有问题以后合并到master分支, 生产环境直接拉取master分支就好了
固然还有其余的项目人员确定要和远程仓库同步了, 就是从新拉取远程仓库
的内容, 以develop保证内容最新, 减小冲突
服务器
上面的项目流程中,特殊标记的就是经常使用的操做
我工做中基本上就只用到这些, 这些仍是比较熟练的, 上面已经说明了使用的场景需求
远程仓库以osc(git.oschina.net/)为远程仓库app
在osc上面新建一个仓库ssh
右键 > git bash
工具
// 本身在本地新建仓库 git init // 新建项目的说明文件 echo "this is a demo" >> README.md // 把说明文件添加并提交 git add README.md git commit -m "first commit" // 新建master,develop分支 git checkout -b master git checkout -b develop // 添加远程的仓库 git remote add origin https://git.oschina.net/xsu/demo.git // 推送分支到远程, 会弹出验证框让你输入账号和密码 git push origin master git push origin develop
项目开发人员: 从远程仓库克隆, 再操做学习
// 克隆, 须要输入有权限的账号和密码 git clone https://git.oschina.net/xsu/demo.git // 这步是查看clone下来的分支的, 能够看到包含刚才新建的master和develop分支 $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master // 新建任务是以origin/develop为基准, 命令会新建并切换到任务(#40) git checkout origin/develop -b "#40" // 查看本地的分支, 当前分支是新建的分支 $ git branch * #40 master // 就在任务分支上做业 // 添加修改的文件 git add <filename> / git add * // 提交修改, 提交是提交到本地 git commit -m "你的注释" // 而后推送到远程 $ git push origin "#40" Total 0 (delta 0), reused 0 (delta 0) To https://git.oschina.net/xsu/demo.git * [new branch] #40 -> #40
项目管理人员: 合并删除刚才推送上来的分支测试
//合并: rebase和merge均可以完成合并, 区别请参考progit, 合并的时候推荐不推荐用命令行, 使用gui工具更方便 git checkout develop git rebase/merge origin/#40 git push origin develop // 删除, 这语法可能很是扯, 这tmd居然是删除 $ git push origin :#40 To https://git.oschina.net/xsu/demo.git - [deleted] #40
项目开发人员: 从远程更新fetch
// 远程把做业分支合并到develop分支以后, 本地须要更新 $ git fetch -p origin From https://git.oschina.net/xsu/demo x [deleted] (none) -> origin/#40 // 手动删除本身本地的分支 git branch -d "#40"
而后又是新建任务分支, 推送, 合并, 项目就这样推动了
项目管理人员和项目开发均可以是同一我的, 上面的步骤就少了更新的步骤
参考progit
上面的操做中是须要输入账号密码的, 这种方式很是的不方便, 其实能够用密钥代替
打开git bash
cd ~/.ssh ssh-keygen -t rsa -C "999999@163.com"
在红框处输入你想取的名称, 我输入osc
,
而后在个人电脑的地址栏中输入 %userprofile%/.ssh
是否是看到了osc
和osc.pub
两个文件
打开osc.pub
, 全选,复制到我的资料
这里
新建文件,取名为config, 内容以下
# oschina Host oschina HostName git.oschina.net User jaime IdentityFile ~/.ssh/osc
我那里的hostnam是oschine, 之后全部用到git.oschina.net
的地方都改成oschina
. https改成git
成功就是
$ ssh -T git@oschina Welcome to Git@OSC, xsu!
失败以下
$ ssh -T git@oschina Permission denied.
// 添加远程的仓库 git remote add origin https://git.oschina.net:xsu/demo.git 修改成 git remote add origin git@oschina:xsu/demo.git
以前是clone的仓库改成
git clone git@oschina:xsu/demo.git
若是已经克隆, 修改远程仓库地址为
git remote remove origin git remote add origin git@oschina:xsu/demo.git
固然这些的前提是 你要有这个仓库的权限
若是TortoiseGit想使用密钥的话, 必须右键 > TortoiseGit > settings
ssh.exe的地址为 git的安装目录/usr/bin
git init git add <file> git comit -m "<msggggg>" git status git log从最近到最远的提交日志, git log --pretty=oneline 显示到一行 git reset版本回退 git reset --hard HEAD^ 回退到上一个版本,几个^回退到上几个版本 git reset --hard 80fed6a 回退到hash开头为 80fed6a 的那个版本, 版本号不必写全,前几位就能够, 不会保留更改 git reset --soft 80fed6a 回退到hash开头为 80fed6a 的那个版本, 可是保留更改 git diff查看修改的内容, 使用TortoiseGit来查看, 不要使用这个命令查看 git push origin <branch_name> git fetch 获取remote内容 git fetch -p origin 获取的时候删除已经删除的分支 git rebase/merge <branch> 把<branch> 合并/基变 到当前分支, 请使用rebase替代merge git branch <branch> 新建分支 git checkout <branch> 切换到分支 git checkout -b <branch> 新建而且切换到分支, 能够代替上面2条命令
git rebase/merge <branch> # 若是有冲突, 就须要 # 修改冲突, 而后 git add # 提交冲突 git rebase/merge --continue # 继续执行基变或者合并, 直到合并完成或者 # 终止合并 git rebase/merge --abort
# 在本地先回退更改 git reset --hard <版本号> # 而后推到服务器 git push origin <branch> --force # 若是不加force会报错, 提示branch的本地的版本落后于远端的版本
本文不是git的教程, git的基础必定要看啊