zoukankan      html  css  js  c++  java
  • git 命令整理

    local-初始化

    全局变量

    • git config --global user.name "jerry"
    • git config --global user.email "jerry@163.com"
    • git config --global color.ui "always"
    • 解决中文乱码问题

      • 解决bash控制台ls命令中文文件乱码:

        在Git\etc\git-completion.bash 文件中追加一行 alias ls="ls --show-control-chars --color=auto"

      • 解决bash控制台 git commit 无法输入中文注释:

        修改Git\etc\inputrc文件

        set output -meta on

        set convert -meta off

      • 解决git log命令中文注释乱码(只bash控制台好用):

        在Git\etc\profile文件中追加一行:export LESSCHARSET=iso8859

      • 解决gitk显示中文注释乱码

        git config --global i18n.commitencoding ISO-8859

        git config --global i18n.logoutputencoding ISO-8859

    初始化新版本库

    • git init

      *只会在根目录下创建一个名为.git文件夹

    设置忽略的文件

    • 设置每个人都要忽略的文件

      1. 在根目录新建一个名为.gitignore的文本文件

        在命令行执行 echo *.jpg>.gitignore (注意>号左右不要有空格)

      2. 将.gitignore文件加入版本库并提交
    • 设置只有自己要忽略的文件

      修改.git/info/exclude文件,可使用正则表达式

    添加新文件到版本库

    • 添加单个文件

      git add somefile.txt

    • 添加所有txt文件

      git add *.txt

    • 添加所有文件

      git add

    提交

    • git commit -m "add all txt file"

    local-日常操作

    提交

    • 提交所有修改

      git commit -m "some msg" -a

    • 提交单个文件

      git commit -m "some msg" one.txt

    • 增补提交

      git commit -C head -a --amend

    撤销修改

    • 撤销尚未提交的修改

      • 撤销1、2个文件

        git checkout head readme.txt foto.txt

      • 撤销所有txt文件

        git checkout head *.txt

      • 撤销所有文件

        git checkout head

    • 撤销提交

      • 反转提交。反转提交但不提交。

        例:反转最近一次提交:git revert --no -commit head

        *相当于提交最近一次提交的反操作

      • 复位

        • 取消暂存

          git reset 或 fit reset head &lt filename &gt

        • 复位到head之前的那个版本

          git reset -head head^^

          *不会在版本库中留下痕迹。使用^^或^

    分支

    • 列出本地分支

      git branch

    • 列出所有分支

      git branch -a

    • 基于当前分支的末梢创建新分支

      git branch &lt branchname &gt

    • 基于某次提交、分支或标签创建新分支

      • git branch emputy bfe57de0

        *用来查看某个历史断面

      • git branch emputy2 emputy
    • 合并分支

      • 普通合并

        • 合并并提交

          git merge &lt branchname &gt

          *如果发生了冲突,就不会自动提交,如果冲突不多,不想立即解决他们,可以直接使用git checkout head 撤销

        • 合并但不提交

          git merger --no-commit

          实测结果,--no-commit 参数没有生效

      • 压合合并

        • 压合合并后直接提交

          git merge --squash &lt branchname &gt

        • 合合并后但不提交

          git merger --squash --no-commit

          *两个人合作开发一个新功能时,需要在一个分支上提交多次,开发完成之后在压合成一次提交

      • 拣选合并

        • 挑选某次提交合并但不提交

          git cherry-pick --no-commit 5b54b4

          *但是要合并的提交只要比当前高2个版本,就会出现奇怪的冲突问题

    • 重命名分支

      • git branch -m &lt branchname &gt &lt newname &gt

        *不会覆盖已存在的同名分支

      • git branch -M &lt branchname &gt &lt newname &gt

        *会覆盖已存在的同名分支

    • 删除分支

      • git branch -d &lt branchname &gt

        *如果分支没有被合并会删除失败

      • git branch -D &lt branchname &gt

        *即使分支没有被合并会删除

    • 切换分支

      • git checkout &lt branchname &gt

    解决冲突

    • 冲突很少时

      直接编辑有冲突的文件然后提交即可

    • 冲突比较复杂时

      git merge tool

      1. 会生成.BACKUP, .BASE, .LOCAL和.REMOTE四个文件
      2. 然后自动调用冲突解决工具
      3. 解决之后手动删除.orig文件(冲突解决之前的文件备份)
      4. 提交

    标签

    • 创建标签

      • 为当前分支最近一次提交创建标签

        git tag 1.0

        *标签没有重命名

      • 为A分支最近一次提交创建标签

        git tag A_1.0 A

        *也可以把标签命名为A/1.0

      • 为某次历史提交创建标签

        git tag 1.0 4ed54x21

    • 显示标签列表

      git tag

    • 检出标签

      git checkout 1.0

      *查看标签断面很方便的方法,但是不能提交

    • 由标签创建分支

      • git branch b1.1.1.1
      • git checkout -b b1.1.1.1
    • 删除标签

      git tag -d 1.0

    查看状态

    • 当前状态

      git status

    • 历史记录

      • git log
      • gitk

        • gitk

          查看当前分支历史记录

        • gitk &lt branchname &gt

          查看某分支历史记录

        • gitk -all

          查看所有分支

    • 每个分支最后的提交

      git branch -v

    其他

    导出版本库

    • git archive --format=zip head>nb.zip
    • git archive --format=zip --prefix=nb1.0/ head>nb.zip

    remote-初始化

    克隆版本库

    • git clone &lt url &gt

      例:git clone d:\git\nb

    • *克隆之后会自动添加4个config

      remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

      remote.origin.url=d:\usb

      branch.master.remote=origin

      branch.master.merge=refs/heads/master

    别名

    • 添加远程版本库的别名

      • git remote add &lt 别名 $&gt &lt 远程版本库的url &gt
      • *添加别名后会自动添加2个config

        remote.origin.url=d:\usb

        remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

    • 删除远程库的别名和相关分支

      git remote rm &lt 别名 &gt

    创建一个无本地分支的库

    • git init -bare

      *当需要一个公用的中央库时,非常适合把它简称bare库

    remote-日常操作

    分支

    • 列出远程分支

      git branch -r

    • 删除远程库中已经不存在的分支

      git remote prune origin

    从远程库获取

    • 获取但不合并

      git fetch &lt 远程版本库 &gt

      例:git fetch origin 。origin是远程库的默认别名

      例:git fetch d:\git\nb

    • 获取合并并到当前本地分支

      • git pull

        *等价于git pull origin

        *需配置branch.master.remote=origin和branch.master.merge=refs/heads/maeter。 如果使用了git clone克隆远程库会自动添加这个配置

      • git pull d:\git\nb master

        *由于不是从默认远程库获取,所以要指定获取哪个分支

    推入远程库

    • git push origin master

      *远程的master不能是当前分支

    remote-github

    生成SSH Key

    1. 启动Git Bash控制台(git -bash.bat)
    2. 如果以前生成过SSH Key,要先备份

      $cd ~/.ssh

      $mkdir key_backup

      $cd id_rsa*key_backup

      * ~/.ssh就是C:\Users\jcl\.ssh

    3. 生成SSH Key

      $ssh-keygen -t rsa -C "jerry@163.com"

      *提示Enter passphrase时要输入密码

      *生成的SSH Key存放在C:\Users\jcl\.ssh

    4. 将SSH Key添加到Github账户里

      点击链接Account Settings|SSH Public Keys|Add another public key,将id_rea.pub文件中的内容粘贴到key文本框中

    5. 第一次连接到Github

      $ssh git@github.com

      输入密码后如果显示信息里包括you've successfully authenticated表示链接成功。之后会在C:\Users\jcl\.ssh建立一个名为known_hosts的文件

    创建新库

    • 进入Dashboard Tab 页,点击New Repository按钮

      *免费的只能public

    克隆版本库

    • 进入新建的库,点击SSH按钮,复制版本库地址,然后使用git clone命令即可

      *点击Git Read-Only按钮可获取只读权限的地址,克隆这个地址不需要密码

    让ssh-agent替我们记住密码

    1. 把密码加密保存在硬盘上

      $ssh-keygen -p

    2. 修改配置文件,让ssh-agent随git bash启动

      在Git\etc\profile中追加:

      #lanch ssh agent

      SSH_ENV="HOME/.ssh/environment"

      fucntion start_agent{

      echo "Initializing new SSH agent.."

      /usr/bin/ssh-agent|sed's/^echo/#echo/' > "${SSH_ENV}"

      echo succeeded

      chmod 600 "${SSH_ENV}"

      ."${SSH_ENV}" > /dev/null/usr/bin/ssh-add

      }

    3. #Source SSH setting, if applicable

      if[ -f "${SSH_ENV}"]; then

      ."${SSH_ENV}" > /dev/null

      #ps ${SSH_AGENT_PID} doesn't work under cywgin

      ps -ef| grep ${SSH_AGENT_PID}|grep shh-agent$ > /dev/null||{

      start_agent;

      }else

      start_agent

      fi

  • 相关阅读:
    Atitit 集团与个人的完整入口列表 attilax的完整入口 1. 集团与个人的完整入口列表 1 2. 流量入口概念 2 3. 流量入口的历史与发展 2 1.集团与个人的完整入口列表
    atitit 每季度日程表 每季度流程 v3 qaf.docx Ver history V2 add diary cyar data 3 cate V3 fix detail 3cate ,
    Atitit react 详细使用总结 绑定列表显示 attilax总结 1. 前言 1 1.1. 资料数量在百度内的数量对比 1 1.2. 版本16 v15.6.1 1 1.3. 引入js 2
    Atitit r2017 r3 doc list on home ntpc.docx
    Atitit r2017 ra doc list on home ntpc.docx
    Atiitt attilax掌握的前后技术放在简历里面.docx
    Atitit q2016 qa doc list on home ntpc.docx
    Atitit r7 doc list on home ntpc.docx 驱动器 D 中的卷是 p2soft 卷的序列号是 9AD0D3C8 D:\ati\r2017 v3 r01\
    Atitit 可移植性之道attilax著
    Atitit q2016 q5 doc list on home ntpc.docx
  • 原文地址:https://www.cnblogs.com/kuler/p/3106531.html
Copyright © 2011-2022 走看看