zoukankan      html  css  js  c++  java
  • Git常用指令

    git学习笔记

    @(python)

    git 命令这是git常用命令
    init 建立git仓库
    add 把文件添加到仓库
    commit 把文件提交到仓库,将暂存区中的文件提交到master中
    status 掌握仓库的状态,看到更改的,有没有提交
    diff =differents变化
    log 查看历史记录,谁,什么时候,改了什么
    reset 回退
    reflog 记录每一个命令
    checkout – file 用版本库里的版本替换工作区的内容;-b 创建分支,并切换到分支
    rm 删除
    branch 查看当前分支 -d删除分支
    merger 分支合并到当前分支分支上
    stash 存储工作现场
    stash list 工作现场列表
    tag 打标签
    远程库  
    clone 克隆远程库
    git remote -v 查看远程库的信息 -v详细信息
    git push origin master 推送某个分支
    状态 
    Untracked 未添加过
    Changes not staged for commit: 添加过,但是更改没有add
    no tracking information 本地分支和远程分支的链接没有创建

    添加文件方法

    git add 【files】 //把文件添加到暂存区中 
    git commit -m “description” //将暂存区中的所有内容提交到当前分支

    版本回退

    在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,往上一百个版本写成HEAD~100 
    eg 
    退回上一个版本

    $ git reset –hard HEAD^ //或者写commit id 
    HEAD is now at ea34578 add distributed

    再次查看log,发现最后一次的更新已经没有了,那么如何更新回这一个版本呢,往上翻,找到上一次的版本号

    $ git reset –hard 3628164 
    HEAD is now at 3628164 append GPL

    也可以这样

    git reflog //会显示所有的历史操作

    Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向了另一个版本。

    git工作原理

    工作区就是真实电脑中的路径。版本库中包括,暂存区和master 
    工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

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

    Alt text


    如何去除不想add的文件

    先把大量文件一次性add进来:

    strong textgit add *.py 
    然后你用git status查看,会有提示:

    Changes to be committed: 
    (use “git reset HEAD …” to unstage) 
    new file: 1.py 
    new file: 2.py 
    new file: 3.py 
    new file: 4.py 
    要排除掉其中一个文件,用:

    git reset HEAD 1.py 
    这时再用git status看,1.py变成了untracked,剩下的就可以提交了。


    撤销修改

    撤销工作区中的更改

    git checkout –file

    如果修改前提交到暂存区,那么工作区的文件会恢复为暂存区中的版本,否则恢复到版本库中的版本。

    撤销提交到暂存区的修改

    git reset HEAD file

    可以把暂存区的修改撤销掉(unstage),重新放回工作区

    提交到版本库中回退

    如果没有提交到远程库可以参见版本回退,用reset回退版本


    远程仓库

    链接远程仓库

    第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

    $ ssh-keygen -t rsa -C “youremail@example.com” 
    cd ~ 
    ls -a

    找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。


    1.按照git上的提示将本地库关联到远程 
    2.关联后,使用命令git push -u origin master第一次推送 master分支的所有内容; 
    3.此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

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


    拉取远程仓库

     git fetch [remote-name]
    

    此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。

    克隆远程仓库

    要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

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


    分支

    分支是git十分重要的功能,当你在开发新功能(feature)时,最好新建一个分支。 
    修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; 
    在多人协作时,分支也是十分有用的,master版本是稳定版本,如果因为一点一点的添加,会照成使用错误,所以,真正的开发可以建立到一个dev分支上,时机成熟了,再将更新推送到master上。

    创建分支

    创建一个Dev分支

    git checkout -b dev

    git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

    $ git branch dev 
    $ git checkout dev //切换分支 
    Switched to branch ‘dev’

    查看、合并、删除分支

    git branch 查看当前分支

    git merge dev

    将当前分支合并到当前分支

    git merge –no-ff -m “merge with no-ff” dev

    添加了一个–no-of可以将分支中的提交历史也合并到另一个分支上

    >***git branch -d dev*** 删除分支
    • 1

    解决合并冲突

    当两个分支同时编辑一个文件时,就会出现冲突,<<<<<<<,=======,>>>>>>>标记出不同分支的内容手动改源文件,改好后提交。

    保存工作状态

    >git stash
    • 1

    处理完其他事情后,找到当时的工作状态

    > git stash list //查看保存的工作状态
    • 1

    恢复工作状态

    >git stash apply //恢复工作区
    >git stash drop //删除工作区
    • 1
    • 2

    等同于上面的两个

    >git stash pop  
    • 1

    你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

    >$ git stash apply stash@{0}
    • 1

    多人协作

    没太看懂,先占个坑。 
    廖雪峰git教程-多人协作

    推送本地分支到远程库

    git push origin master

    并不是所有的本地分支都要推送到远程的 
    一般在多人协作中,有两个分支,一个master主分支、dev开发分支,开发人员要在开发分支上同步开发进度

    查看远程库的信息

    >git remote    // -v   详细信息
    • 1

    在本地创建远程分支

     git checkout -b dev origin/dev
    • 1

    标签管理

    发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。

    打一个标签

    git tag v1.0
    

    也可以用git tag 查看所有标签

    给历史提交一个tag

    git log --pretty=oneline --abbrev-commit 找到历史提交的commit id 然后打上就可以了

       git tag v0.9 6224937  //commit id
    

    tag information

    git show <tagname>
    

    delete tag

    git tag -d v0.1   //local
    

    删除远程tag 
    先删除本地的tag 
    让后从远程删除

    $ git push origin :refs/tags/v0.9

    推送tag到远程

    git push origin <tagname>    //only
    git push origin --tags       //push all local tag
    

    Fork

    如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone

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

    一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。

    配置别名

    用st代替dtatus 
    廖雪峰—配置别名

    $ git config --global alias.st status
  • 相关阅读:
    log4j的配置详解(转)
    不同数据库的driverClassName与url
    http请求报头
    java发生邮件(转)
    使用maven下载源码和doc(转)
    处理表单数据
    VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法
    vc6.0连接mysql数据库
    转:Android 判断用户2G/3G/4G移动数据网络
    Linux平台Makefile文件的编写基础入门(课堂作业)
  • 原文地址:https://www.cnblogs.com/yezuhui/p/6836176.html
Copyright © 2011-2022 走看看