GIT学习

(1)初始化仓库

       git init  初始化一个Git仓库

(2)添加文件

   添加文件到Git仓库,分两步add 和 commit:

  1. 使用命令git add filename  (可反复多次使用,添加多个文件)
  2. 使用命令git commit -m "此次提交的说明" 可以先多次add,一次统一提交
  3. 补充:在工作区文件夹内修改了文件,使用add提交到暂存区stage,使用commit将暂存区的内容提交到master分支

(3)查看状态

  1. git status   要随时掌握工作区的状态
  2. git diff   如果git status告诉你有文件被修改过,用git diff可以查看修改内容

(4)版本回退

  1. HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
  2. commit_id 可为:HEAD^(上一个版本),HEAD^^(上上个版本),HEAD~100(回退到上第100个版本)
  3. 穿梭前,可用git log可以查看提交历史,以便确定要回退到哪个版本,查看commit_id
  4. 要重返未来,可用git reflog查看命令历史,以便确定要回到未来的哪个版本,查看commit_id

 (5)撤销修改

  1. git checkout -- filename 把某文件在工作区的修改全部撤销,让这个文件回到最近一次git commitgit add时的状态命令中的“--”很重要,没有“--”,就变成了“切换到另一个分支”的命令。
  2. git reset HEAD filename 把未提交,仍暂存区的修改撤销掉(unstage),重新放回工作区,然后可用 1. 中步骤撤销。HEAD表示最新的版本。
  3. 若已经提交了,可使用(4)中版本回退的功能来撤销操作。

(6) 删除文件

  1. 确实要从版本库中删除该文件,那就用命令git rm filename删掉,并且git commit提交
  2.  若为误删除,可使用 git checkout -- filename 命令还原,但是只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容(修改了重要内容后,)

(7) 分支与合并

(廖老师画的图)

  1. 查看分支:git branch(带* 的为当前分支)
  2. 创建分支:git branch <name>
  3. 切换分支:git checkout <name>(上文提过,没有 -- 即为切换分支的命令)
  4. 创建+切换分支:git checkout -b <name>(一步完成了上两步的操作)
  5. 合并某分支到当前分支:git merge <name>(在落后的master分支里面操作,merge dev 分支,master指针指向dev的当前提交
  6. 删除分支:git branch -d <name>

(8)合并冲突

      当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用带参数的 git log 命令可以看到分支合并图

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

(9)分支管理

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743862006503a1c5bf5a783434581661a3cc2084efa000

(10)bug修复

修复bug时,我们会通过创建新的临时分支进行修复,然后合并,最后删除

  1. master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
  2. 干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
  3. 你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
  4. 合并分支时,加上 --no-ff 参数就可以用普通模式合并( 再加上 -m "提交信息" ),合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

比如说在dev分支工作,当要修复master分支的bug时,手头工作没有完成时,先在dev把工作现场git stash一下,然后去master创建临时分支来修复bug,修复后,再回到dev工作分支,用git stash list 命令可以查看保存的工作现场,回到工作现场有两种方法:

  1. 用 git stash apply 恢复,但是恢复后,stash内容并不删除,需要用 git stash drop 来删除,你可以多次stash,恢复的时候,先用 git stash list 查看,然后用命令恢复指定的stash,
  2. $ git stash apply stash@{0}
    用 git stash pop,恢复的同时把stash内容也删除

(11)多人协作

  1. 首先,试图用git push origin <branch-name>推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;

    如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,

    用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name> 推送就能成功。

  5. 查看远程库信息,使用 git remote -v (使用-v参数可以查看更详细的参数);本地新建的分支如果不推送到远程,对其他人就是不可见的;

(12)rebase 变基(?!)

据说有点难理解,看不进去了,明天再去看

网址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0015266568413773c73cdc8b4ab4f9aa9be10ef3078be3f000

(13)标签(更好记,版本号)

  • 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id,为之前提交的commit打上标签,使用命令 git tag <tagname> <commit id>(commit id 可以用如下命令查看)

    git log --pretty=oneline --abbrev-commit
  • 命令git tag -a <tagname> -m "标签信息说明.."可以指定标签信息;

  • 命令git tag可以查看所有标签。

!注意!:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

对 tag 进行操作:

  • 命令git push origin <tagname>可以推送一个本地标签;

  • 命令git push origin --tags可以推送全部未推送过的本地标签;

  • 命令git tag -d <tagname>可以删除一个本地标签;

  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

(14)github使用

 在GitHub上,利用Git极其强大的克隆和分支功能,广大人民群众可以真正自由参与各种开源项目。

  • 在GitHub上,可以任意Fork开源仓库;

  • 自己拥有Fork后的仓库的读写权限;

  • 可以推送pull request给官方仓库来贡献代码。

(15)自定义配置

配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。

每个仓库的Git配置文件都放在.git/config文件中:

1.颜色显示

2.忽略文件

3.别名定义

(16)git学习就酱结束啦~廖老师说:

国外网友制作的Git Cheat Sheet,建议打印出来备用:Git Cheat Sheet

Git的官方网站:http://git-scm.com,英文自我感觉不错的童鞋,可以经常去官网看看。

 

学习地址:廖雪峰老师博客 -- https://www.liaoxuefeng.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值