zoukankan      html  css  js  c++  java
  • github命令总结

    一、创建版本库

    1、创建一个空目录

    $ mkdir learngit
    $ cd learngit
    $ pwd //pwd命令用于显示当前目录

    2、创建一个版本库(通过git init命令把这个目录变成Git可以管理的仓库)

    $ git init
    

    3、把文件添加到版本库

    (1)在learngit的目录下创建一个learn.txt的文件

    (2)用命令git add告诉Git,把文件添加到仓库

    $ git add learn.txt

    (3)第二步,用命令git commit告诉Git,把文件提交到仓库

    $ git commit -m "learn git"  //-m后面输入的是本次提交的说明

    总结1:

    初始化一个Git仓库,使用git init命令。

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

    • 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;添加全部文件:git add .

    • 第二步,使用命令git commit -m '本次提交说明',完成。

    二、版本回退

    4、git status命令可以查看仓库当前的状态

    $ git status

    5、git status命令是查看文件作了什么修改

    $ git diff

    总结2:

    • 要随时掌握工作区的状态,使用git status命令。

    • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容

    6、git log命令显示从最近到最远的提交日志

    $ git log

    7、git reset命令回退到上一个版本 (比如:从2017回到2016)

    $ git reset --hard HEAD^

    上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    8、cat learn.txt 命令查看这个文件的内容

    $ cat learn.txt

    9、如果我后悔了,想回到2017年。

    $ git reset --hard 2017年的版本号

    10、2017年版本号怎么找?

    git reflog用来记录你的每一次命令

    $ git reflog

    总结3 :

    • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

    • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    三、撤销修改

    11、 git checkout -- file 命令可以丢弃工作区的修改 

    $ git checkout -- learn.txt  //把learn.txt文件在工作区的修改全部撤销 

    这里有两种情况:

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commitgit add时的状态。

    12、git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

    $ git reset HEAD learn.txt

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本

    总结4:

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

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

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考总结3一节,不过前提是没有推送到远程库。

    四、删除文件

    13、前提條件

    $ git add test.txt
    $ git commit -m "add test.txt"
    $ rm test.txt

    这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了
    现在你有两个选择,
    一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
    $ git rm test.txt
    
    $ git commit -m "remove test.txt"

       现在,文件就从版本库中被删除了。

    另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

    $ git checkout -- test.txt  //git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
    总结5:
    命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

    五、本地库与远程库关联

    1、git remote add origin git@server-name:path/repo-name.git 命令关联一个远程库

    $ git remote add origin git@github.com:QiuAnn/learngit.git
    $ git remote add origin https://github.com/QiuAnn/github.git   //这个也是可用的

    2、git push -u origin master  命令 把第一次推送master分支的所有内容

    $ git push -u origin master

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

    $ git push origin master

    六、从远程库克隆

    $ git clone https://github.com/QiuAnn/gitskills.git
    
    $ git clone git@github.com:QiuAnn/gitskills.git

    Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

    七、分支管理

    (一)创建与合并分支

    查看分支:git branch

    创建分支:git branch <分支name>

    切换分支:git checkout <分支name>

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

    合并某分支到当前分支:git merge <分支name>

    删除分支:git branch -d <分支name>

    强行删除没有合并的分支:git branch -D <分支 name>

    (二)解决冲突

    当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

    git log --graph命令可以看到分支合并图。

    八、Bug分支

    $ git stash   // 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
    $git stash list //查看剛剛‘儲藏’的工作区
    $git stash apply //恢复,但是恢复后,stash内容并不删除
    $git stash drop  //删除;
    $git stash pop  //恢复的同时把stash内容也删了

    九、标签管理

    (一)创建标签

    • git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;默认标签是打在最新提交的commit上的

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

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

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

    • git show <tagname>查看标签信息

    (二)操作标签

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

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

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

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

  • 相关阅读:
    组装query,query汇总,query字段
    POJ 1276, Cash Machine
    POJ 1129, Channel Allocation
    POJ 2531, Network Saboteur
    POJ 1837, Balance
    POJ 3278, Catch That Cow
    POJ 2676, Sudoku
    POJ 3126, Prime Path
    POJ 3414, Pots
    POJ 1426, Find The Multiple
  • 原文地址:https://www.cnblogs.com/qiu-Ann/p/7873229.html
Copyright © 2011-2022 走看看