Git 基本命令
admin
2023-08-01 13:42:51
0

Git 是一种分布式版本控制系统



创建版本库
    mkdir  dirname 新建目录
    cd dirname    
    git init   把该目录变成 Git 仓库

    该目录下有个 .git 隐藏目录,不要去改这个目录里的文件



添加文件
    git add filename.txt


    
把文件提交给仓库
    git commit -m "xxx"          -m后面输入的是本次提交的说明



查看仓库当前状态
    git status



比较修改了什么内容
    git diff filename.txt



查看提交的历史
    git log   命令显示从最近到最远的提交日志

    git log --pretty=oneline        每个版本只输出一行(commit id  和 提交说明)

查看提交的命令历史
    git reflog

你看到的一大串字符是commit id(版本号)




在Git中,用HEAD表示当前版本,上一个版本是HEAD^,上上版本是HEAD^,往上前 n 个版本是 HEAD~n


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


git reset --hard 版本号  到该commit id 号对应的版本  commit id 可以不写全,但一定要写到 Git可以区分的程度




工作区和暂存区的概念

dirname 就是一个工作区

工作区里的隐藏目录 .git ,不算工作区,是 Git 的版本库


Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,
还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

Git 管理的是修改。你第一次修改 filename.txt  并执行 git add ,把它提交到暂存区,第二次修改 filename.txt 不添加,执行 git commit

你会发现只有第一次的修改被提交了,第二次没有被提交。       git commit 只负责暂存区中的内容

每次修改,如果不add到暂存区,那就不会加入到commit中


撤销修改
    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- filename

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD filename(HEAD表示最新版本),就回到了场景1,
    第二步按场景1操作。

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,回退一个版本。




删除文件

    rm filename
    
    Git 会记录下来,使用 git status 会告诉你哪些文件被删除了

    如果确实要从版本库中删除,用 git rm 删掉,并且要用 git commit

    如果误删  用 git checkout -- filename   git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。



要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

克隆一个仓库,git clone 仓库的地址





查看分支:git branch

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d



用git log --graph命令可以看到分支合并图。
git log --graph --pretty=oneline --abbrev-commit



分支策略
     git merge --no-ff -m "merge with no-ff" dev   
     合并分支  加 --no--ff 表示以普通模式合并,-m 说明,合并后的历史有分支,能看出来曾经做过合并,
     通常,合并分支时,如果可能,Git 会使用Fast forward模式,而这种模式合并后看不出曾经做过合并。


git stash   
    把当前工作现场储存起来,以后可以恢复现场继续工作,像快照
    
git stash list 查看存的工作现场

恢复工作现场
    git stash apply 恢复,恢复后 stash 内容不会删除,需要用 git stash drop 来删除
    
    git stash pop ,恢复的同时把 stash 内容也删除


强制删除一个没有被合并过的分支
    git branch -D


查看远程库信息,使用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;

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突



创建标签


    命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;

    git tag -a -m "blablabla..."可以指定标签信息;

    git tag -s -m "blablabla..."可以用PGP签名标签;

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



管理标签


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

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

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

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

相关内容

热门资讯

福建起火鞋厂救援细节:楼道堆积... 今天,福建晋江一鞋厂发生火灾,造成重大人员伤亡。记者在现场了解到,当地消防救援队伍调派183人、35...
特朗普骂遍全场,最荒诞的北约峰... 作者 | 子期黑天鹅一个接着一个。77年来最荒诞的北约峰会,出现了。7月7日,北约第36届首脑峰会在...
伊朗国葬期间美伊战火再起,民众... 哈梅内伊葬礼期间,美伊战火再起。美军连续两天对伊朗发动打击,以回应伊朗对三艘穿行霍尔木兹海峡商船的袭...
特朗普“降本增效”压榨北约,谁... 【文/观察者网 熊超然】7月7日至8日,土耳其首都安卡拉迎来了又一场北约峰会。几十年来,美国一直承担...
美国休斯敦民众抗议墨西哥移民遭... 当地时间8日,美国得克萨斯州休斯敦市爆发大规模抗议,上千名示威者走上街头,谴责美国移民与海关执法局特...
涉美伊,联合国秘书长:感到震惊 据凤凰卫视报道,美国和伊朗再度爆发军事对抗,引发联合国高度关切。联合国秘书长古特雷斯7月8日表示,他...
猝死程序员妻子被网暴?对受害者... 波伏娃说女性是一种境遇,女性经常被物化为客体,成为被观看、被评判的对象。那些网暴者对两位女性外表的攻...
世界杯最大冷门是国际足联 “双... 世界杯最大冷门是国际足联  【世界杯最大冷门是国际足联】2026年美加墨世界杯的赛场上,冷门与逆转固...
伊朗革命卫队指挥官:美以图谋在... 当地时间9日,伊朗伊斯兰革命卫队地面部队指挥官表示,美以此前曾在不同阶段计划在伊朗东南部和西北部建立...
为什么美国和伊朗陷入了针锋相对... 澎湃新闻记者 李怡彬停泊在霍尔木兹海峡附近的船只。视觉中国 图6月12日,美国和伊朗终于达成一项谅解...