zoukankan      html  css  js  c++  java
  • Git 基本命令

    1.git安装后设置《用户名》和《邮箱》;查看自身《用户名》和《邮箱》

    //设置
    $ git config --global user.name "yangkang" $ git config --global user.email "kang.yang@arvato.com" //查看 $ git config user.name yangkang $ git config user.email kang.yang@arvato.com

    2.创建工作区间,初始化工作区

    //查看当前路径
    $ pwd
    /c/Users/YANG295/Desktop
    
    $ git init
    Initialized empty Git repository in C:/Users/YANG295/Desktop/.git/

    3.添加文件到缓存区,commit提交

    git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
    
    git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
    
    git add -A :是上面两个功能的合集(git add --all的缩写)
    //添加,可add 多个文件,一次commit提交
    $ git add demo.txt
    //提交
    $ git commit -m "本次提交的描述"

    4.查看git状态

    //查看状态
    $ git status

    5.比较工作区修改前后文件,修改未add

    $ git diff demo.txt

    6.git查看日志log和reflog

    //git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
    $ git reflog
    58b8ed8 (HEAD -> master) HEAD@{0}: commit: 测试修改文件查看区别
    6c43baa (origin/master) HEAD@{1}: merge b1: Fast-forward
    
    //git log 命令可以显示所有提交过的版本信息;可以加上参数  --pretty=oneline,只会显示版本号和提交时的备注信息
    $ git log
    commit 58b8ed8f78cd8d52281a28aec6602e03ba82b7a2 (HEAD -> master)
    Author: yangkang <kang.yang@arvato.com>
    Date:   Thu Nov 8 14:23:06 2018 +0800
    
        测试修改文件查看区别
    
    $ git log --pretty=oneline
    58b8ed8f78cd8d52281a28aec6602e03ba82b7a2 (HEAD -> master) 测试修改文件查看区别

    7.git版本回退(需要reflog知晓commitid的前7位)注意是--hard

    //$ git reflog 
    58b8ed8 (HEAD -> master) HEAD@{0}: commit: 测试修改文件查看区别
    6c43baa (origin/master) HEAD@{1}: merge b1: Fast-forward
    a289a45 HEAD@{2}: checkout: moving from master to master
    a289a45 HEAD@{3}: checkout: moving from b1 to master
    6c43baa (origin/master) HEAD@{4}: commit: 创建分支并修改了index.html
    
    //回退到commitid a289a45
    $ git reset --hard a289a45
    a289a45 (HEAD -> master) HEAD@{0}: reset: moving to a289a45
    58b8ed8 HEAD@{1}: reset: moving to 58b8ed8
    58b8ed8 HEAD@{2}: commit: 测试修改文件查看区别
    6c43baa (origin/master) HEAD@{3}: merge b1: Fast-forward
    a289a45 (HEAD -> master) HEAD@{4}: checkout: moving from master to master
    a289a45 (HEAD -> master) HEAD@{5}: checkout: moving from b1 to master
    6c43baa (origin/master) HEAD@{6}: commit: 创建分支并修改了index.html

    8.取消工作区修改(实际上使用版本库文件替换)

    $ git checkout --demo.txt

    9.取消暂存区文件的修改;注意是HEAD

    $ git reset HEAD demo.txt

    10.删除版本库中文件

    //git rm和git add都属于对暂存区的操作
    $ git rm demo.txt
    
    $ git commit -m 删除demo文本

    11.添加远程仓库并push  拖下远程代码到问题pull

    //添加远程仓库地址
    $ git remote add origin http://www.gitlab.com/yangjingkang/test.git
    
    //push 第一次提交,加入 -u参数
    $ git push -u origin master
    //拖下远程代码
    git pull <远程主机名> <远程分支名>:<本地分支名>
    eg:
        git pull origin master:brantest
        将远程主机origin的master分支拉取过来,与本地的brantest分支合并。
    
    后面的冒号可以省略:
        git pull origin master
    
    
    git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并。
    
    一句话总结git pull和git fetch的区别:git pull = git fetch + git merge

    12.从远程仓库克隆

    //后面可再跟名字作为。新git库
    $ git clone http://www.gitlab.com/yangjingkang/test.git newGit

    13.创建新的分支

    //创建并切换到分支
    $ git checkout -b dev
    
    //查看git下所有分支,*表示当前分支
    $ git branch 
    * dev
       master
    
    //$ git checkout -b dev等于如下两条命令
    $ git branch dev //创建分支 dev
    $ git checkout dev //切换到 dev 分支

    14.合并分支(合并前先切换回主分支master,才能进行合并)

    //切换回主分支
    $ git checkout master
    
    $ git branch 
        dev
    *  master
    
    //将dev分支合并到主分支master
    $ git merge dev

     15.删除分支

    //删除dev分支
    $ git branch -d dev 

    16.解决冲突(主从分支对同一个文件同一处代码进行了修改并commit,合并时报failed;需手动调整重新提交)

    17.查看分支合并图

    $ git log --graph

    18.分支策略

    分支策略
    实际开发原则如下:
    1.master仅用来发布新版本(把dev分支合并到master,再发布新版本)
    2.开发人员都在dev分支上干活,每个人都有自己的分支,定期向dev分支合并即可。

    19.git stash 暂存当前编辑(必须把修改的文件git add后,才可以git stash;

         git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。)

    //暂存
    $ git stash
    //查看保存清单
    $ git stash list
    //返回暂存
    $ git stash pop

    20.git 查看远程仓库信息

    $ git remote
    origin

    21.推送分支(会推送到远端对应的分支上)

    语法:$ git push <远程主机名> <本地分支名>:<远程分支名> 若省略远程分支,代表将本地当前分支推送到远端对应分支
    git push origin master // 推送到远端的master
    git push origin dev //推送到远端的dev
    什么样的分支需要推送到远端?我认为凡是需要大家共享的分支就需要push到远端

    22. 从远程仓库克隆

    $ git clone git@github.com:jasondong-1/gitpractice.git //git clone 默认只会把远端的master克隆下来
    $ git branch
    * master 

     23.获取远端其他分支

    $ git checkout -b dev origin/dev //现在有了对应的dev分支
    $ git branch
    * dev
      master

    24.两人同时修改了同一份文件向远端push冲突的解决

    $ git push origin dev
    //git 建议push 之前先pull (拉取同步)
    
    //或者是手动处理掉
    //解决冲突后,重新add commit

     25.git打标签(人类可以识别的标志)

    git tag v0.1 33dd7af //33dd7af是commit-id
    或
    $ git tag -a v0.2 -m "stable edition" e47dc70
    
    查看 tag 
    git tag

     26.操作标签

    git push origin <tagname>可以推送一个本地标签;
    git push origin --tags可以推送全部未推送过的本地标签;
    git tag -d <tagname>可以删除一个本地标签;
    git push origin :refs/tags/<tagname>可以删除一个远程标签。

     27..gitignore 可以忽略.gitignore 文件中的文件

    复制代码
    # Python:
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build
    复制代码

     28.克隆当个分支项目

    git clone -b lankou2 http://www.gitlab.com/CRM_PRODUCT/CODE/ec_product.git //clone lankou2分支

    29.克隆多个分支项目

    如果要clone所有分支,也可以这样解决这个问题:

      找一个干净目录,假设是 iview_project

    cd iview_project //切换到指定目录
    git clone https://github.com/iview/iview-admin.git //克隆项目

    这样在 iview_project 目录下得到一个 iview-admin 子目录

    cd iview-admin //切换到项目目录
    git branch -a //列出所有分支名称如下: * 号表示当前分支
    * dev 
    remotes/origin/HEAD -> origin/dev
    remotes/origin/desktop
    remotes/origin/dev
    remotes/origin/gh-pages
    remotes/origin/master
    remotes/origin/template


    说明: origin/template, origin是远程仓库名,template是远程仓库的一个分之,由上结果可以看出,远程仓库origin还有desktop、dev、gh-pages、template、master等分支。

    接下来,可以在本地新建分支并与远程仓库的分支进行关联了

    git checkout -b template origin/template // 作用是checkout远程仓库origin的分支template,在本地起名为template分支,并切换到本地的template分支
    
    git checkout -b desktop origin/desktop // 作用参见上一步解释
    //第一次切换分支,就用上面命令,如果本地已经存在了对应的分支可以直接:
    
    git checkout dev // 切换回dev分支,并开始开发。
    
    //查看分支命令
    git branch -a //查看所有分支
    
    git branch -r //查看远程分支
  • 相关阅读:
    python模块—socket
    mac os系统的快捷键
    教你如何将UIImageView视图中的图片变成圆角
    关于ASP.NET MVC
    iOS 日期格式的转换
    将App通过XCode上传到AppStore 出现这个错误“An error occurred uploading to the iTunes Store”的解决方法
    关于MAC OS下面两个软件的功能改进——Dictionary和Fit 输入法
    分享一下上个星期的香港行程
    【博客园IT新闻】博客园IT新闻 iPhone 客户端发布
    解决Entity Framework Code First 的问题——Model compatibility cannot be checked because the database does not contain model metadata
  • 原文地址:https://www.cnblogs.com/yangjingkang/p/9929409.html
Copyright © 2011-2022 走看看