zoukankan      html  css  js  c++  java
  • Git的基本用法

    GIT原理
    工作区:git init的目录

    版本库:git init文件夹下有个.git文件夹,此即版本库,其中存储了stage(或叫做index)的暂存区,这是git add后文件修改添加的地方与git为我们创建的第一个分支master,也就是说,git commit后实际是将stage中的内容提交到当前分支以及指向master的指针HEAD

    版本控制原理:git内部有个HEAD指针,你所做的回退版本只是将HEAD指针指向了相应的commit,然后顺带更新了你的工作区,也就是说HEAD指向哪个commit id,版本就定位在哪里

    创建本地仓库
    切换至某目录(可非空)后执行

    # git init

    将文件纳入GIT仓库管理
    # git add $filename1, $filename2

    递归添加本目录下所有文件

    # git add .

    或使用

    # git add -A

    将文件提交到本地仓库
    可以多次add后统一commit

    # git commit -m "本次提交的信息"

    查看仓库当前状态
    # git status

    查看已修改的文件与仓库中的不同
    # git diff $filename

    查看COMMIT历史
    # git log

    加上参数--pretty = oneline则可以看到每次commit的历史,每次commit都对应一个commit id (即版本号,是一个sha1序列)

    回退到上一个版本
    # git reset --hard HEAD^

    将版本回退或前进(已COMMIT但回退了)到制定COMMIT
    # git reset --hard $commitId

    其中的commitId不需要整个序列,只需要可以和其他序列区分开的前几位就行了

    查看之前的操作
    # git reflog

    查看工作区与版本库中最新版的区别
    # git diff HEAD -- filename

    如果省略了filename则比较所有文件

    撤销工作区的修改,回到最近一次的ADD或COMMIT
    # git checkout -- $filename

    撤销暂存区的修改

    #git reset HEAD $filename

    删除版本库中的文件
    # git rm $filename

    执行删除后也是需要commit的

    本地与远程GITHUB仓库互连
    在github中新建仓库并添加本机Key

    将本地库中的内容推送至远程库
    # git push origin master

    本地仓库为第一次推送的话,需要在push后加上-u参数

    更新本地库至与远程库一致
    # git pull origin master

    查看远程仓库
    # git remote

    -v参数可用来显示详细信息

    克隆远程库
    # git clone $URL

    默认克隆远程仓库origin,且克隆后本地master自动与远程master分支相对应起来

    创建与切换分支
    切换分支之前一定要记得先将改动提交!否则会将改动带到切换后的分支

    创建并切换至该分支:

    # git checkout -b $branchName

    创建分支:

    # git branch $branchName

    切换分支:

    # git checkout $branchName

    查看分支
    # git branch

    当前分支前会有一个 *

    对当前分支的修改不会直接影响到其他分支

    合并分支
    # git merge $branchName

    当前分支内容会更新为branchName的

    查看分支合并图:

    # git log --graph

    合并冲突
    当两个分支都有新的提交时合并就会造成冲突,需要解决冲突(删一个留一个)后重新合并

    禁用FAST FORWORD模式
    Fast Forword模式会在合并分支并删除分支后丢掉分支信息,–no-ff参数可禁用此模式

    # git merge --no-ff -m "分支信息" $branchName

    该命令会在merge时生成一个commit,从而查看出分支信息

    保存当前分支(不提交)
    # git stash

    查看当前状态:

    # git stash list

    恢复当前分支
    恢复后不删除stash

    # git stash apply

    手动删除stash:

    # git stash drop

    恢复并删除stash:

    # git stash pop

    强制删除分支(COMMIT后未MERGE)
    # git branch -D $branchName

    抓取分支
    默认抓取的是master分支,如果想要抓取其他分支,则在

    # git clone $URL

    后再执行:

    # git checkout -b $branchName origin/$branchName

    推送时:

    # git push origin $branchName

    标签
    标签,相当于版本库中的快照,实际上是指向某commit的指针,但标签是不可移动的,tag是一个有意义的名称,与某个commit绑定在一起,创建标签后只会先存储在本地,不会自动推送到远程

    在当前位置打标签:

    # git tag $tagName

    查看所有标签:

    # git tag

    打标签至某个commit:

    # git tag $tagName $commitId

    创建含有说明的标签:

    # git tag -a $tagName -m "标签说明" $commitId

    查看标签信息:

    # git show $tagName

    删除一个标签:

    # git tag -d $tagName

    推送某标签到远程:

    # git push origin $tagName

    推送全部标签到远程:

    # git push origin --tags

    删除某个远程标签,第一步,删除本地标签,第二步,删除远程标签

    # git push origin :fefs/tags/$tagName

    多人合作
    首先,试图用

    # git push origin $branchName

    推送自己的分支,若推送失败,则说明远程库比本地库新,先用

    # git pull

    试图合并,若和并有冲突,解决冲突后再本地提交,若无冲突或解决冲突后,再次执行第一步

    其他一些需要注意的:
    clone的仓库要是自己github中的才有权推送,GitHub上可以fork任意仓库,fork后自己就有了该仓库的读写权限

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

    忽略git目录下的某些文件有以下办法:不add也不commit该文件,配置.gitignore,gitignore文件中写入要忽略的目录名即可,以.git所在目录为根目录,比如,加入/build即可忽略buile目录

    设置别名,如:

    # git config --global alias.st status

    后,则可以使用

    # git st

    来代替

    # git status

    –global为全局参数,即这台电脑上该用户的所有git仓库中都可用,不加–global则只对当前仓库起作用

    添加 remote 出错后需要修改

    # git remote rm origin
    # git remote add origin ssh://git@seliote.com:22/home/git/project.git
    

    配置

    ssh-keygen -t rsa -C "seliote@email.com"
    git config --global user.name "seliote"
    git config --global user.email "seliote@email.com"
    
  • 相关阅读:
    JavaScript 简介
    HTML 标签列表
    HTML5 是什么
    初识HTML5
    Conda 环境增删改查导出导入
    Windows 下安装 CGAL 并验证安装
    3D 点云数据集整理分析
    内网穿透
    SSH 免密登录
    串口、COM口、TTL、RS-232、RS-485区别详解
  • 原文地址:https://www.cnblogs.com/seliote/p/9313162.html
Copyright © 2011-2022 走看看