git命令

作者: 亮亮同学 | 来源:发表于2019-02-12 20:06 被阅读2次

    1,设置本机参数,所有仓库都使用本参数

    git config  --global user.name "your name"
    git config --global user.email "your email"
    

    2,创建目录

    mkdir learngit 
    

    3,查看当前路径

    pwd 
    

    4,进入learngit目录,通过git init命令把这个目录变成Git可以管理的仓库:

    git init
    

    5,查看隐藏的文件

    ls -ah
    

    6,添加指定的文件到git 例如添加 addme.txt

    git add  addme.txt
    

    7,用命令git commit告诉Git,把文件提交到仓库,-m后面是 本次提交的描述

    git commit -m " add a addme file "
    

    git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)。
    为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

    git add file1.txt git add file2.txt file3.txt
    $ git commit -m "add 3 files."
    8,查看日志,日志 以堆栈的形式显示 最上面的是最新的

    git log  
    

    如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:b24a10e6bdaf37c801981c31b55b721677274833 是本次提交的版本号

    $ git log --pretty=oneline
    b24a10e6bdaf37c801981c31b55b721677274833 (HEAD -> master) append GPL
    8fff663095d5e4ba795cd006d3a2cf10957291d4 wrote a readme file
    

    9.版本回退
    HEAD当前版本 ,HEAD^上个版本 上上个版本HEAD^^ 也可以用HEAD~2

    git reset --hard HEAD^
    

    或者用版本号回退,去前面几位就可以

    git reset --hard b24a10e6bdaf37c80 
    

    10,Git提供了一个命令git reflog用来记录你的每一次命令,如果 想回退到哪个版本 可以 查看命令记录找到版本号 就可以回退到相应的版本

    git reflog
    

    11,管理修改,如果修改了一次文档 然后add一次 接着又修改了一次 还需要在add一次才能把两次修改的内容提交 ,如果想看 工作区和版本库里的区别可以用:

    git diff HEAD -- readme.txt
    

    12,撤销工作区的修改

    git checkout -- readme.txt
    

    13,清空缓存区

    git reset HEAD --readme.txt
    

    14,删掉文件

    git rm readme.txt
    git commit -m "delete readme.txt"
    

    15,创建并切换分支到dev

    git branch -b dev
    

    等同于

    git branch dev  创建分支dev
    git checkout dev  切换到分支dev
    

    16,查看分支

    git branch 
    

    17,查看状态

    git status
    

    18,合并分支 在被合并的分支下操作

    git merge dev   将dev和当前分支合并
    

    19,删除分支

    git branch -d dev
    

    20,合并冲突

    $ git merge feat
    Auto-merging readme.txt
    CONFLICT (content): Merge conflict in readme.txt
    Automatic merge failed; fix conflicts and then commit the result.
    文件
    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    Git has a mutable index called stage.
    Git tracks changes of files.
    <<<<<<< HEAD
    Creating a new branch is quick & simple.
    =======
    Creating a new branch is quick AND simple.

    feature1
    用 <<<<<<<<<<<<< =================== >>>>>>已经表明冲突的位置
    如上 ,需要手动解决冲突 然后 提交

    git add readme.txt
    git commit -m" conflict fixed"
    
    git log --graph 查看合并分支图
    

    21,关闭 fast forward合并模式 ,可以看到每次修改或者合并的记录

    git merge --no-ff -m" merge with no-ff" dev
    

    22,查看详细的 提交,合并的版本记录

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

    23,分支策略
    在实际开发中,我们应该按照几个基本原则进行分支管理:

    首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

    那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

    你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

    所以,团队合作的分支看起来就像这样:


    image.png

    24,把工作区临时储藏起来

    git stash
    

    25,查看储藏起来的工作区记录

    git stash list
    

    26,恢复工作区域

    git stash apply
    

    27,删除床藏起来的工作区

    git stash drop
    

    28,恢复并删除床藏起来的工作区

    git stash pop
    

    29,恢复指定的 工作区

    git stash apply stash@{0}
    
    image.png

    30,强制删除没有合并的子分支 dev->bug-101

    git branch -D bug-101
    
    image.png

    31,查看远程库

    git remote   
    或者
    git remote -v 显示更详细的内容
    

    32,推送分支

    git push origin name
    

    33,抓取分支,后面是地址

     git clone git@github.com:michaelliao/learngit.git
    

    34,创建远程分支到本地dev

    git checkout  -b dev origin/dev
    

    35,修改文件后 推送分支到远程

    git push origin/dev
    

    36,抓取 最新的提交

    git pull
    

    37,pull失败 有此信息 “ If you wish to set tracking information for this branch you can do so with:” 表示没有没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

    git branch --set-upstream-to=origin/dev dev
    

    38,多人协作

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

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

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

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

    如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin /<branch-name> <branch-name>

    相关文章

      网友评论

          本文标题:git命令

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