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

[经验分享] 妈妈再也不用担心我使用git了

[复制链接]

尚未签到

发表于 2018-1-14 18:12:19 | 显示全部楼层 |阅读模式
安装msysgit
  下载地址:msysgit,安装完成后配置系统环境变量,打开git bash,尽量少用图形化工具git gui,推荐使用命令行。


  你可以在本地操作git,也可以在远程服务器仓库操作git,例如github,这样你就需要配置下ssh key,详情请查看官方文档说明generating-ssh-keys

git操作

1、检出仓库(克隆仓库)
  本地克隆:
  

$ git clone /path/to/repository  

  

  远程克隆:
  

$ git clone <server>  

  

  ssh方式(推荐),例如:
  

$ git clone git@github.com:hcy2367/hcy2367.github.io.git  

  

  https方式,例如:
  

$ git clone https://github.com/hcy2367/hcy2367.github.io.git  

  

2、创建新仓库
  

$ git init  

  

3、添加工作区(working dir)新的或改动的文件到暂存区(Index或stage)
  

$ git add <filename> | --all | -A  

  

  git工作区,暂存区,HEAD区(可以理解为本地仓库master分支的最新版本)关系图:


4、从暂存区删除添加或改动的的文件
  

$ git rm --cached <filename> | *  

  

5、查看当前仓库状态
  执行add、commit操作之前和之后最好都要查看下当前提交的一些状态信息,防止漏添加,错提交
  

$ git status  

  

6、查看和对比修改的内容
  

$ git diff <filename>  

  

7、查看提交的历史记录版本(添加参数:–pretty=oneline,用于输出少量信息)
  

$ git log  

  

8、提交到当前分支master HEAD区
  

$ git commit -m '代码提交信息'  

  

9、版本回退
  HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本HEAD~100,如回退到上一个版本,则命令如下:
  

$ git reset --hard HEAD^  

  

  其中–hard参数表示撤销工作区与暂存区的修改,回退到指定历史版本,可使用如下命令:
  

$ git reset --hard 20038  

  

  其中20038为提交版本的前五位ID号(原始:20038c521d4e81aca8ec8bca9f05d50ebb4fb835),查看时可使用如下命令:
  

$ git reflog  

  

10、撤销修改
  丢弃工作区的修改,已添加到暂存区的文件不受影响,注意:不能少了–参数,命令如下:
  

$ git checkout -- <filename> | *  

  

  把暂存区的修改撤销掉,重新放回工作区,命令如下:
  

$ git reset HEAD <filename> | *  

  

11、删除文件
  删除后再commit到HEAD区,如果误删文件了,可以恢复到该文件的最新版本。
  

$ git rm <filename>  

  

12、推送到远端仓库
  

$ git push -u origin master | <branch>  

  

  -u参数表示初次推送时把本地的master分支和远程的master分支关联起来;
  如果你还没有克隆现有仓库,并欲将你的本地仓库连接到某个远程服务器,你可以使用如下命令添加:
  

$ git remote add origin <server>  

  

  例如这样你就能够将你的改动推送到所添加的服务器上去了:
  

$ git remote add origin git@github.com:hcy2367/hcy2367.github.io.git  

  

13、分支

  创建分支:
  

$ git checkout -b <branch>  

  

  切换回主分支:
  

$ git checkout master  

  

  列出所有分支:
  

$ git branch  

  

  合并指定分支到当前分支(默认使用fast forward方式):
  

$ git merge <branch>  

  

  普通模式合并(禁用fast forward,因为该方式合并后看不到历史提交信息):
  

$ git merge --no-ff -m "merge with no-ff" <branch>  

  

  删除分支:
  

$ git branch -d <branch>  

  

  丢弃一个没有被合并过的分支,可以通过如下命令强行删除:
  

$ git branch -D <branch>  

  

  推送到远端仓库:
  

$ git push origin <branch>  

  

14、更新与合并
  查看远程信息:
  

$ git remote -v  

  

  从远程获取最新版本到本地仓库,并自动merge到本地分支:
  

$ git pull origin master  

  

  从远程获取最新版本到本地仓库,不自动merge到本地分支:
  

$ git fetch  

  

  合并分支前先到另外一个分支更新代码,然后本地合并后提交到远程仓库; 当有冲突时,可使用$ git diff或$ git status命令查看分支的差异,手工解决后,再执行$ git add <filename>命令以将它们标记为合并成功。查看提交记录图形信息:
  

$ git log --graph --pretty=oneline --abbrev-commit  

  

15、标签(可以理解为版本库的快照)
  创建标签:
  

$ git tag <tagname>  

  

  可使用命令如下命令找到历史提交的ID号:
  

$ git log --pretty=oneline --abbrev-commit  

  

  再打标签:
  

$ git tag v1.0 6224937  

  

  还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
  

$ git tag -a v1.1 -m "version 1.1>
  

  查看标签:
  

$ git tag  

  

  查看标签信息:
  

$ git show v1.0  

  

  删除本地标签:
  

$ git tag -d v1.1  

  

  推送标签到远程:
  

$ git push origin <tagname>  

  

  一次性推送全部未推送的标签:
  

$ git push origin --tags  

  

  删除远程标签(先删除本地,再删除对应的远程tag):
  

$ git tag -d v1.1  
$ git push origin :refs/tags/v1.1
  

  

16、丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
  

$ git fetch origin  
$ git reset --hard origin/master
  

  

17、移除所有未跟踪文件(一般会加上参数-df,-d表示包含目录,-f表示强制清除)
  

$ git clean [options]  

  

18、多人协作的工作模式


  • 首先,可以试图用$ git push origin <branch>推送自己的修改;
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用$ git pull试图合并;
  • 如果合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再用$ git push origin <branch>推送就能成功;
  • 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令$ git branch --set-upstream <branch> origin/<branch>解决即可。
19、git工作流程图
  说了这么多,来张工作图,可能更加通俗易懂:


总结
  掌握上面的命令后基本上可以轻松使用git来管理项目和参与团队开发了,当你欣赏到git的过人和可爱之处后,你可能再也不想使用svn来管理代码了,妈妈也不用担心我如何使用git了,熟悉操作后你就可以遨翔于githubgitcafegitlab的天空,为开源生态圈贡献自己的一份力量。不管是forkstarclone,还是pull request,总要尝试下未知的世界。[博客转移了] =》 http://hcy2367.github.io/

  天高任鸟飞,海阔凭鱼跃。


运维网声明 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-435069-1-1.html 上篇帖子: Git本地仓库 下篇帖子: 使用VS2013、TFS2013和Git进行分布式团队协作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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