美文网首页
分布式版本控制系统GIT

分布式版本控制系统GIT

作者: Viaphlyn | 来源:发表于2017-03-26 10:29 被阅读21次

    分布式版本控制系统与集中式版本控制系统的不同:


    clipboard.png

    首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库
    多个人如何协作:比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
    布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

    clipboard2.png clipboard3.png

    1、创建一个版本库

    • $mkdir file
    • $cd file
    • $pwd(用于显示当前目录)

    2、初始化GIT仓库

    • git init

    3、添加文件到GIT仓库

    • git add file(可反复使用添加多个文件)
    • git commit-m "wrote a readme file xxx"提交完成

    4.修改

    • git status(查看当前工作区状态)
    • git diff xxx(查看修改内容)

    5、版本回退

    • HEAD(当前版本)
    • HEAD^(上一个版本)
    • HEAD^^(上上个版本)
    • HEAD~100(往上100个版本)
    • git log(查看历史记录,以便确定要回退到哪个版本)
    • git log --pretty=oneline(简略看历史记录)
      *git reflog(查看每一次命令历史,以便确定要回到未来的哪个版本)
    • git reset --hard commit id(HEAD..)(回到某个版本)

    6、删除修改

    • git checkout -- file(丢弃工作区的修改,注意两空格,还未git add 到工作区)
    • git reset HEAD file(丢弃暂态区的修改,然后在用git checkout -- file丢弃工作区)
    • git reset -- hard commit id(丢弃已经提交的,但前提是没有推送到远程库)

    7、删除文件和恢复

    • rm file(删除工作区的文件,此时还存在版本库里)
    • git rm file \ git commit -m"file"(删除版本库里的并提交)
    • git checkout -- file(误删,恢复到最新版本,但是会丢失最近一次提交后你修改的内容)

    8、添加远程库

    • git remote add origin git@server-name:path/repo-name.git(关联远程库)
    • git push -u origin master(第一次推送master分支的所有内容)
    • git push origin master(以后每次本地提交之后,有必要时可以直接使用此推送最新修改)
      ps:要注意路径是否正确,是否提交了

    9、克隆远程库

    • git clone git@...(仓库的地址)

    10、创建和合并分支

    • git banch(查看分支)
    • git banch name(创建分支)
    • git checkout name(切换分支)
    • git checkout -b name(创建+切换分支)
    • git merge name(合并某分支到当前分支)//fast forward这次合并是快进模式
    • git branch -d name(删除分支)
    • $ git log --graph --pretty=oneline --abbrev-commit(看分支合并图)
      *git merge --no-ff -m "merge with no-ff"dev(用--no-ff参数合并分支,禁用Fast forward)
      //合并分支时,加上--no-ff参数可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并

    11、解决冲突

    • 即在一个分支上的修改和主支上的修改不同步,即保留一个版本或者再改然后再添加提交

    12、分支管理

    • 小伙伴们平时都在分支工作,时不时合并一下,master分支应该很稳定,只用来发布新版本
    clipboard4.png

    13、bug分支

    修复分支时通过创建新的分支进行修复然后合并最后删除
    当手头工作没有完成时,先把现场工作git stash一下,然后去修的bug,修复后再git stash pop(=git stash apply恢复+git stash drop删除)回到工作现场

    • git stash
    • git stash list(查看)
    • git stash pop

    (git stash apply、git stash drop)

    14、feature分支

    • 开发一个新feature,最好新建一个分支
    • 如果要丢弃一个没有被合并过的分支,可以通过
    • git bran -D branch-name(强行删除)
    clipboard5.png

    15、多人协作

    • git remote(查看远程消息)
    • git remote -v(更详细的查看)
    • git push origin branch-name(从本地推送分支)
    • git pull(如果推送失败,先抓取远程的新提交,但如果有冲突,要先解决冲突,//有可能要 建立本地分支和远程分支的关联)
    • git checkout -b branch-name origin/branch-name (本地和远程分支的名称一样最好)
    • git branch --set-upstream branch-name origin/branch-name(建立本地分支和远程分支的关联)

    16、标签管理

    • git tag <name>(新建标签,默认为HEAD,也可以指定一个commit
    • id(通过git log --graph --pretty=oneline --abbrev-commit找))
    • git tag -a <tagname> -m"balabala"(指定标签信息)
    • git tag -s <tagname> -m "balabala"(用PGP签名标签)
    • git tag( 查看所有标签)
    • git show <tagname>(查看标签信息)
    • git push origin <tagname>(推送一个本地标签)
    • git push origin --tags(推送全部未推送过的本地标签)
    • git tag -d <tagname>(可以删除一个本地标签)
    • git push origin :refs/tags/<tagname>(删除远程标签(已推送到远程的要先删除本地再删除远程))

    17、GITHUB

    clipboard6.png

    git clone git@github.com:Viaphlyn/bootstrap.git

    clipboard7.png

    18、自定义git

    让git适当显示颜色

    • git config --global color.ui true

    19、忽略特殊文件

    clipboard8.png clipboard9.png

    20、配置别名

    • git config --global alias. y your
    clipboard10.png

    相关文章

      网友评论

          本文标题:分布式版本控制系统GIT

          本文链接:https://www.haomeiwen.com/subject/gneqottx.html