概念

git 中的术语解释:

  • 仓库也叫版本库(repository)
  • stage:暂存区,add 后会存到暂存区,commit 后提交到版本库

git 安装

linux 下安装 git

  • 第一种方法:yum install git-core 安装的版本比较老

  • 第二种方法:(我是 linux centos)

    • 卸载老版本
    yum remove gi
    • 安装依赖
    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
    yum install gcc perl-ExtUtils-MakeMaker
    • 执行安装
    wget https://github.com/git/git/archive/v2.2.1.tar.gz
    tar -zxvf v2.2.1
    cd git-2.2.1
    make configure
    ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv
    make
    make install
    echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
    source /etc/bashrc

初始化一个仓库用

  1. 先新建一个文件夹 mkdir test
  2. 进入该文件夹执行 git init 命令,就能初始化仓库了

命令合集

提交相关

添加文件到仓库(实际就是把工作区的内容添加到暂存区)

git add <file>

提交代码(就是把暂存区的内容提交到当前分支)

git commit -m "说明"

强制提交,比如用旧版本覆盖老版本时原本会报错,就可以用下面的命令

git push -f origin master

查看提交历史

git log

记录着操作命令,也就是命令历史

git reflog

将现有工作区的隐藏起来(一个分支开发到一半,代码还不能提交,但是需要切换到别的分支去看看代码时可以使用)

git stash

恢复隐藏的工作区

git stash pop

清空隐藏的工作区

git stash clear
git stash drop stash@{0} 删除第一个队列

查看隐藏的工作区的内容

git stash list

指定恢复哪一个隐藏的工作区内容

git stash apply stash@{0}

提交时忽略指定文件

  • 在.gitignore 中写要忽略的文件名即可
  • 如果已经使用过 add 命令了,那么要先执行 git rm -r --cached .
  • 然后在使用 add . 才能加入忽略规则

合并分支时合为一次提交

git merge --squash dev

取消命令

取消 rebase

git rebase --abort

取消提交了的内容

git reset --soft HEAD^

清除缓存/清除已经推上去的不要的文件

git rm -r --cached . //需要完整复制

清除推上去的 idea 相关文件

git rm --cached -r .idea

撤销相关

将工作区的修改撤销掉

git checkout -- a.txt (注意:--很重要,如果没有--,这个命令就变成了切换分支)

这个撤销会有两种效果:

第一种是修改后没有放到暂存区,那么撤销后会回到和版本库一样的状态

第二种是修改后放入了暂存区,又做了修改,那么撤销后会回到和暂存区一样的状态。

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

将暂存区的修改撤销掉

git reset HEAD file

代码回退 (提交一次就有一个版本,HEAD 表示当前版本,HEAD^表示上一个版本,HEAD~10 表示前第 100 个版本)

git reset --hard HEAD^ //回退到上一个版本

代码回退之后还可以前进,只要知道前一个版本的版本号

git reset --hard 3628164 //版本号不用写全,前几位即可

如果删除了文件,想让版本库里的文件也删掉

#第一步
git rm -- a.txt
#第二步
git commit -m ""

想让工作区删除的文件恢复

git checkout -- a.txt

撤销新增的文件

rm filename / rm dir -rf //单个文件
git clean -xdf //所有文件

远程库推送相关

关联远程库

git remote add origin git@github.com:mmcLine/firstGit.git

取消关联取消关联

git remote remove origin

第一次推送信息

git push -u origin master

不是第一次推送信息

git push origin master

查看远程库的信息

git remote
# 更详细的信息
git remote -v

推送远程仓库有冲突的处理

git push origin dev #发现失败,有冲突
git pull #把最新的提交抓下来(git pull如果失败运行 git branch --set-upstream dev origin/dev)
# 在合并,如果有冲突就手动解决后在提交

更新远程库的代码

git fetch origin
git rebase origin

克隆代码(仅克隆最近的一次提交记录的最新版本)

git clone url --depth=1

分支相关

创建分支

git branch <name>

切换分支

git checkout dev

创建并切换分支

git checkout -b dev

查看当前分支

git branch

把 dev 分支合并到 master 上

git merge dev

删除分支

git branch -D dev

查看提交的分支表

git log --graph

禁用 Fast forward 的合并,禁用后每次都会有新的提交

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

仅合并某次提交

# commitid是提交的id
git  cherry-pick commitid

其他

设置 git 操作命令的别名

 git config --global alias.st status 将git status 设置别名为git st

配置文件在.git 里面的 config 里面,或者对应用户的家目录的.gitconfig 里面

  • 删除别名就在文件里删除别名就好了

github 相关操作

  1. 从 github 下载代码
git clone git://github.com/mmcLine/firstGit.git
# 也可使用https
git clone https://github.com/mmcLine/firstGit.git
  1. 推送代码到 github

修改了代码之后先

git add test.txt
git commit -m "test"
git push -u origin master 第一次推送命令
git push origin master 以后的推送命令

创建项目并关联

  1. 先在服务器上创建一个文件夹
  2. 然后在文件夹下运行 git init --bare
  3. 在本地创建一个仓库
  4. 然后关联远程库
git remote add origin root@192.168.128.190:/data/git/tofocus
  1. 然后上传本地项目

遇到的错误

  1. 添加远程配置时出现 fatal: 远程 origin 已经存在。提示

处理方法:git remote rm origin

  1. 从 github 克隆时报这个错误 while accessing https://github.com/mmcLine/gitskills.git/info/refs

处理方法: git 的版本太低了,我之前是 yum 安装了,我卸载了用源码安装就好了

处理冲突:

  1. 更改冲突的地方
  2. 在 git gui 里面把冲突的类点一下

  1. 让上面那个区域的类都没有了。
  2. 然后 git rebase --continue

工作7年收集到的git命令的更多相关文章

  1. git命令行工作环境配置【转】

    转自:http://www.cocoachina.com/ios/20171115/21163.html 本文为CocoaChina网友whf5566投稿 前言 笔者一直使用git的图形化工具sour ...

  2. 掌握git命令的正确使用姿势

    前言 最近在团队内部发起了一个小的python项目(用tkinter实现一个小工具),但是发现大家对git的使用还不太熟悉,不知道怎么同步代码.解决冲突等等.因为我觉得对测试工程师来说,git应该是必 ...

  3. 工作常用git命令

    克隆项目 git clone gitssh地址 提交前的准备 git config user.name 您的中文名 git config user.email 公司邮箱 获取分支 #### 将远端分支 ...

  4. 一天工作所用到的Git命令

    一天工作所用到的Git命令 像大多数新手一样,我一开始是在网上搜索 Git 命令,然后把答案复制粘贴,并没有真正理解它们究竟做了什么. 后来我曾经想过:"如果有一个最常见的 Git 命令的列 ...

  5. git命令收集(记得持续更新)

    这里收集了一些常用的git命令: git remote add origin git@192.168.1.128:sabo/ycdd-server.git git push -u origin mas ...

  6. 10年阿里自动化测试架构师帮您收集的:git常用命令大全以及git原理图【泣血推荐,建议收藏】

    一.Git分布式版本控制简介 ​ Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.本来想着只把最有用.最常用的 Git 命令记下来, ...

  7. 工作中常用的Android系统ADB命令收集

    ​工作中常用的Android系统ADB命令收集如下:先收藏以备以后查阅! ​ adb --help //adb帮助 adb start-server //启动adb server adb kill-s ...

  8. 工作中常用的git命令

    一 常用Git命令 git clone:(区分SSH or HTTP) git init:初始化仓库 二 Git命令详解 Git Bash下,cd /c git clone,从远程Git版本库克隆一份 ...

  9. git命令行工作的正确姿势

    git命令行创建并提交新分支到mater分支的常规步骤 git branch new_branch git status 查看修改的文件 git add changed_files git commi ...

随机推荐

  1. javaweb 01: servlet前言

    动力节点杜老师,javaweb最新课程的笔记,假期一直跟着bilibili上的课程在学,放在这里,方便复习 Servlet前言 关于系统架构 系统架构包括什么形式? C/S架构 B/S架构 C/S架构 ...

  2. Luogu3850 [TJOI2007]书架 (平衡树)

    将要插入位置前和前前splay,再连在右子树上. #include <iostream> #include <cstdio> #include <cstring> ...

  3. luoguP3224 [HNOI2012]永无乡【线段树,并查集】

    洞庭青草,近中秋,更无一点风色.玉鉴琼田三万顷,着我扁舟一叶.素月分辉,明河共影,表里俱澄澈.悠然心会,妙处难与君说. 应念岭表经年,孤光自照,肝胆皆冰雪.短发萧骚襟袖冷,稳泛沧溟空阔.尽挹西江,细斟 ...

  4. 推荐软件(一):Motrix——磁力下载器

    个人觉得迅雷这样的下载器广告又多,启动速度又慢,又占用内存和存储,非常地不好用.有时候下载速度也不是你自己网速的最大值,而且有一些资源也会因为版权问题阻止你下载. Motrix 界面非常简洁:下载速度 ...

  5. a 标签 rel 属性值 opener 的作用

    <a> 元素,原英文单词为 anchor 的缩写,所以又称之为锚点元素.锚点元素的 href 属性用来创建通向其他网页.文件.同一页面内的位置.电子邮件地址或任何其他 URL 的超链接. ...

  6. jsp获取单选按钮组件的值

    jsp获取单选按钮组件的值 1.首先,写一个带有单选按钮组件的前台页 1 <%@ page language="java" contentType="text/ht ...

  7. package.json 与 package-lock.json 的关系

    模块化开发在前端越来越流行,使用 node 和 npm 可以很方便的下载管理项目所需的依赖模块.package.json 用来描述项目及项目所依赖的模块信息. 那 package-lock.json  ...

  8. Hnoi2014世界树

    题面 说明/提示 N<=300000, q<=300000,m[1]+m[2]+...+m[q]<=300000 题解 这道题一看 "m[1]+m[2]+...+m[q]& ...

  9. ipv6临时地址

    关闭ipv6临时地址 win+r输入cmd进入后输入代码 netsh interface ipv6 setprivacy state=disable 控制面板中找到网卡禁用后在启用 win+r输入cm ...

  10. C#基础_XML文件介绍

    XML简介 XML 被设计用来传输和存储数据. HTML 被设计用来显示数据. 什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语 ...