设为首页 收藏本站
查看: 1089|回复: 0

[经验分享] git使用教程及github远程仓库管理

[复制链接]

尚未签到

发表于 2018-1-13 23:49:45 | 显示全部楼层 |阅读模式
  git使用教程步骤
  1.安装git
  安装完后,在开始菜单里找到“git”->“Git Bash”,蹦出一个类似命令行窗口,说明安装成功。
  2 注册git
  在打开的Git Bash里输入命令行:
  $ git config --global user.name "Your Name"
  $ git config --global user.email "email@example.com"
  3 创建版本库
  在合适的地方新建一个空目录(文件夹),运行git init命令把这个目录变成Git可以管理的仓库
  4 提交版本或文件
  运行命令 $ git add . 提交文件
  运行命令 $ git commit -m “by name git”
  5.版本查看
  运行命令 $ git status 命令可以让我们时刻掌握仓库当前的状态
  运行命令 $ git diff 命令可以看到我们修改了哪里
  6 版本回退
  运行命令 $ git log 命令可以看到版本历史记录
  运行命令 $ git log --pretty=oneline 可以省略不必要的信息
  用HEAD表示当前版本,上一个版本就是HEAD^,
  上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来 所以写成HEAD~100。
  运行命令 $ git reset --hard HEAD^ 回到上一个版本
  运行命令 $ git reset --hard 3628164 可以跳回到特定的版本。
  7 工作区和暂缓区
  因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现    在,git commit就是往master分支上提交更改。
  你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存    区的所有修改。
  8.管理修改
  第一次修改 -> git add -> 第二次修改 -> git add -> git commit
  9 撤销修改
  运行命令 $ git checkout -- readme.txt 意思就是,把readme.txt文件在工作区的修改全部撤销
  命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
  运行命令 $ git reset HEAD readme.txt 可以把暂存区的修改撤销掉(unstage),重新放回工作区
  10 删除文件
  运行命令 $ rm test.txt 删除版本库里的文件,记得提交修改后的文本。
  运行命令 $ git checkout -- test.txt 撤销删除的文件,记得提交撤销后的版本。
  11 远程仓库
  注册一个github账号
  12 添加远程库
  运行命令 $ git remote add origin git@github.com:michaelliao/learngit.git
  本地与远程库关联起来
  运行命令 $ git push -u origin master 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
  由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
  运行命令 $ git push origin master 把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!
  13 从远程库克隆
  运行命令 $ git clone git@github.com:michaelliao/gitskills.git 从远程库克隆一份版本到本地库。
  14 分支管理
  (1)创建分支与合并分支
  运行命令 $ git checkout -b dev   git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
  $ git branch dev
  $ git checkout dev
  运行命令 $ git branch 命令查看当前分支 git branch命令会列出所有分支,当前分支前面会标一个*号。
  运行命令 $ git checkout master 切换回master分支
  运行命令 $ git merge dev 把dev分支的工作成果合并到master分支上
  运行命令 $ git branch -d dev 删除dev分支
  运行命令 $ git branch 查看branch,就只剩下master分支了
  (2) 解决合并冲突
  运行命令 $ git log --graph --pretty=oneline --abbrev-commit
  可以看到和合并分支图
  (3)分支管理策略
  运行命令 $ git merge --no-ff -m "merge with no-ff" dev 请注意--no-ff参数,表示禁用Fast forward 因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
  (bug分支)
  当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?
  幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
  运行命令 $ git checkout master 切换到master分支上,新建bug分支
  运行命令 $ git checkout -b issue-101 bug分支
  修复完bug后需要提交代码并删除bug分支,继续之前分支的工作
  运行命令 $ git add readme.txt
  运行命令 $ git commit -m "fix bug 101"
  修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:
  运行命令 $ git checkout master
  运行命令 $ git merge --no-ff -m "merged bug fix 101" issue-101合并分支
  运行命令 $ git branch -d issue-101 删除分支
  太棒了,原计划两个小时的bug修复只花了5分钟!现在,是时候接着回到dev分支干活了!
  运行命令 $ git checkout dev 切换到dev分支继续分支工作
  运行命令 $ git status 查看分支状态
  运行命令 $ git stash list 查看之前的工作现场
  运行命令 $ git stash pop 回到之前工作的现场
  15  Feature分支
  添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
  运行命令 $ git checkout -b feature-vulcan 创建新功能分支
  运行命令 $ git add vulcan.py
  运行命令 $ git status
  运行命令 $ git checkout dev 切换回到分支dev继续开发
  一切顺利的话,feature分支和bug分支是类似的,合并,然后删除。
  但是,就在此时,接到上级命令,因经费不足,新功能必须取消!
  虽然白干了,但是这个分支还是必须就地销毁:
  运行命令 $ git branch -D feature-vulcan 强行删除功能分支
  16 多人协作
  运行命令 $ git remote -v 显示更详细的信息
  你的小伙伴已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送:
  推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:
  git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:
  运行命令 $ git branch
  运行命令 $ git pull

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-434864-1-1.html 上篇帖子: 版本管理工具使用总结(git,svn,hg) 下篇帖子: Joyfulmath---A Software Designer
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表