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

[经验分享] Git简易教程

[复制链接]

尚未签到

发表于 2018-9-17 11:59:57 | 显示全部楼层 |阅读模式
  参考博客:
  http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256916071d599b3aed534aaab22a0db6c4e07fd0000
  1. 初始化一个Git仓库,使用git init命令。
  2. 添加文件到Git仓库,分两步:
  第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
  第二步,使用命令git commit,完成。
  3. 使用git status命令, 掌握工作区的状态。
  4. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
  5. git log命令查看历史记录。
  git log --pretty=oneline
  6. 版本回退
  git reset --hard HEAD^    // HEAD指向的版本就是当前版本。
  git reset --hard commit_id
  commit_id是版本号,用git log查看。即Git允许我们在版本的历史之间穿梭前,
  用git log可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用git log
  查看命令历史,以便确定要回到未来的哪个版本。
  7. 工作区和暂存区
  工作区:使用git init命令初始化的目录。
  版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
  git add命令把要提交的所有修改放到暂存区(Stage)
  git commit可一次性把暂存区的所有修改提交到分支(master)
  管理修改:每次修改,如果不add到暂存区,那就不会加入到commit中。
  撤销修改:
  1.当改乱工作区某个文件的内容后想直接丢弃工作区的修改时,用命令git checkout -- file
  2.当不但改乱工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,
  第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
  3.已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,
  不过前提是没有推送到远程库。
  删除文件:rm test.txt    // 删除工作区的文件
   git rm test.txt    // 从版本库中删除该文件
  git commit -m "remove test.txt"    // 提交到版本库
   git checkout -- test.txt    // 用版本库的版本替换工作区的版本
  8. 远程仓库GitHub
  (1)创建SSH Key。ssh-keygen -t rsa -C "youremail@example.com",在用户主目录下,会
  生成.ssh目录,这个目录下生成id_rsa和id_rsa.pub这两个文件。
  (2)在GitHub上Add SSH Key。
  (3)在GitHub上 Create a new repository。
  (4)把本地仓库的内容推送到GitHub仓库,在本地的learngit仓库下运行命令:
  git remote add origin git@github.com:scarliyang/learngit.git
  错误:提示出错信息:fatal: remote origin already exists.
  解决办法如下:
  1、先输入$ git remote rm origin
  2、再输入$ git remote add origin git@github.com:oscarliyang/gitdemo.git
  (5)把本地库的所有内容推送到远程库上
  git push -u origin master  // 第一次推送master分支的所有内容时加上了-u参数
  git push origin master     // 之后提交只需要这样
  (6)从远程库克隆
  先创建远程库:创建一个新的仓库,勾选Initialize this repository with a README,
  这样GitHub会自动为我们创建一个README.md文件
  再从远程库克隆:git clone git@github.com:oscarliyang/gitdemo.git
  注:Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
  9. 分支管理
  在Git里,主分支即master分支。HEAD严格来说不是指向提交,而是指向master,master才是
  指向提交的,所以,HEAD指向的就是当前分支。
  (1)创建与合并分支
  首先,我们创建dev分支,然后切换到dev分支:
  git checkout -b dev    // git checkout命令加上-b参数表示创建并切换,
  相当于以下两条命令:  git branch dev  和  git checkout dev
  然后,用git branch命令查看当前分支:
  git branch// git branch命令会列出所有分支,当前分支前面会标一个*号。
  提交:git add readme.txt
  git commit -m "branch test"
  切换回master分支:git checkout master
  把dev分支的工作成果合并到master分支上:
  git merge dev//用于合并指定分支到当前分支
  删除dev分支:git branch -d dev
  (2)解决冲突
  即分支和master都修改了同一个文件,导致冲突。则在提交到master分支时,先需要修改
  冲突内容,再add/commit。看到分支的合并情况:
  git log --graph --pretty=oneline --abbrev-commit
  最后删除分支。
  (3)分支管理策略
  --no-ff参数,表示禁用Fast forward:git merge --no-ff -m "merge with no-ff" dev
  在实际开发中,我们应该按照几个基本原则进行分支管理:首先,master分支应该是非常
  稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在dev分
  支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合
  并到master上,在master分支发布1.0版本;你和你的小伙伴们每个人都在dev分支上干活,
  每个人都有自己的分支,时不时地往dev分支上合并就可以了。
  注:合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经
  做过合并,而fast forward合并就看不出来曾经做过合并。
  (4)Bug分支
  修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
  当手头工作没有完成时,先把工作现场git stash储藏一下,然后去修复bug,修复后,
  再git stash pop,回到工作现场。
  (5)Feature分支
  开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过
  git branch -D 强行删除。
  (6)多人协作
  当从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,
  并且,远程仓库的默认名称是origin。
  查看远程库的信息,用git remote
  查看远程库详细信息,用git remote -v
  多人协作的工作模式通常是这样:
  首先,可以试图用git push origin branch-name推送自己的修改;
  如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  如果合并有冲突,则解决冲突,并在本地提交;
  没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
  注:如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有
  创建,用命令 git branch --set-upstream branch-name origin/branch-name
  抓取分支:在本地创建和远程分支对应的分支(本地和远程分支的名称最好一致),使用
  git checkout -b branch-name origin/branch-name
  10.标签管理
  发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。
  将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,
  标签也是版本库的一个快照。Git的标签虽然是版本库的快照,但其实它就是指向某个commit的
  指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是
  瞬间完成的。
  (1)创建标签
  首先,切换到需要打标签的分支上。
  然后,敲命令git tag 就可以打一个新标签。
  命令git tag查看所有标签。
  默认标签是打在最新提交的commit上的,git tag v0.9 commitid 对指定commitid打标签
  标签不是按时间顺序列出,而是按字母排序的。可以用git show 查看标签信息
  创建带有说明的标签,用-a指定标签名,-m指定说明文字:

  git tag -a v0.1 -m "version 0.1>  还可以通过-s用私钥签名一个标签:

  git tag -s v0.2 -m "signed version 0.2>  (2)操作标签
  删除标签:git tag -d v0.1   //创建的标签都只存储在本地,不会自动推送到远程
  推送某个标签到远程:git push origin
  一次性推送全部尚未推送到远程的本地标签:git push origin --tags
  删除推送到远程的标签:
  git tag -d v0.9    //先从本地删除
  git push origin :refs/tags/v0.9    //然后从远程删除
  11.使用GitHub
  参与一个开源项目:点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号
  下 clone:git clone git@github.com:michaelliao/bootstrap.git。一定要从自己的账号下clone仓库,
  这样你才能推送修改。如果从开源库的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,
  因为没有权限,你将不能推送修改。可以在GitHub上发起一个pull request,向开源项目的官方库
  提交你的修改。即:
  在GitHub上,可以任意Fork开源仓库;
  自己拥有Fork后的仓库的读写权限;
  可以推送pull request给官方仓库来贡献代码。


运维网声明 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-588397-1-1.html 上篇帖子: 随笔记---git中的glob模式 下篇帖子: git github gitlab
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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