工作7年收集到的git命令
概念
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
初始化一个仓库用
- 先新建一个文件夹 mkdir test
- 进入该文件夹执行 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 相关操作
- 从 github 下载代码
git clone git://github.com/mmcLine/firstGit.git
# 也可使用https
git clone https://github.com/mmcLine/firstGit.git
- 推送代码到 github
修改了代码之后先
git add test.txt
git commit -m "test"
git push -u origin master 第一次推送命令
git push origin master 以后的推送命令
创建项目并关联
- 先在服务器上创建一个文件夹
- 然后在文件夹下运行 git init --bare
- 在本地创建一个仓库
- 然后关联远程库
git remote add origin root@192.168.128.190:/data/git/tofocus
- 然后上传本地项目
遇到的错误
- 添加远程配置时出现 fatal: 远程 origin 已经存在。提示
处理方法:git remote rm origin
- 从 github 克隆时报这个错误 while accessing https://github.com/mmcLine/gitskills.git/info/refs
处理方法: git 的版本太低了,我之前是 yum 安装了,我卸载了用源码安装就好了
处理冲突:
- 更改冲突的地方
- 在 git gui 里面把冲突的类点一下
- 让上面那个区域的类都没有了。
- 然后 git rebase --continue
工作7年收集到的git命令的更多相关文章
- git命令行工作环境配置【转】
转自:http://www.cocoachina.com/ios/20171115/21163.html 本文为CocoaChina网友whf5566投稿 前言 笔者一直使用git的图形化工具sour ...
- 掌握git命令的正确使用姿势
前言 最近在团队内部发起了一个小的python项目(用tkinter实现一个小工具),但是发现大家对git的使用还不太熟悉,不知道怎么同步代码.解决冲突等等.因为我觉得对测试工程师来说,git应该是必 ...
- 工作常用git命令
克隆项目 git clone gitssh地址 提交前的准备 git config user.name 您的中文名 git config user.email 公司邮箱 获取分支 #### 将远端分支 ...
- 一天工作所用到的Git命令
一天工作所用到的Git命令 像大多数新手一样,我一开始是在网上搜索 Git 命令,然后把答案复制粘贴,并没有真正理解它们究竟做了什么. 后来我曾经想过:"如果有一个最常见的 Git 命令的列 ...
- git命令收集(记得持续更新)
这里收集了一些常用的git命令: git remote add origin git@192.168.1.128:sabo/ycdd-server.git git push -u origin mas ...
- 10年阿里自动化测试架构师帮您收集的:git常用命令大全以及git原理图【泣血推荐,建议收藏】
一.Git分布式版本控制简介 Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.本来想着只把最有用.最常用的 Git 命令记下来, ...
- 工作中常用的Android系统ADB命令收集
工作中常用的Android系统ADB命令收集如下:先收藏以备以后查阅! adb --help //adb帮助 adb start-server //启动adb server adb kill-s ...
- 工作中常用的git命令
一 常用Git命令 git clone:(区分SSH or HTTP) git init:初始化仓库 二 Git命令详解 Git Bash下,cd /c git clone,从远程Git版本库克隆一份 ...
- git命令行工作的正确姿势
git命令行创建并提交新分支到mater分支的常规步骤 git branch new_branch git status 查看修改的文件 git add changed_files git commi ...
随机推荐
- 加强版:合并果子[NOIP2004]
题目 链接:https://ac.nowcoder.com/acm/contest/26887/1001 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K, ...
- grafana监控配置
一.配置开启smtp服务 1.编辑grafana配置文件grafana.ini [smtp] enabled = true host = smtp.163.com:25 user = 157xxxx3 ...
- 云存储?不依赖三方服务自己也可以搞,利用Docker来搭建分布式文件系统FastDfs
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_78 对于文件存储来说,一般情况下简单的处理就是在Django配置文件中配置存储目录,按照规则对文件进行上传或者下载. 实际上,当文 ...
- 技术分享 | Update更新慢、死锁等问题的排查思路分享
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 一.简介 在开始排错之前我们需要知道 Update 在 MySQL 中的生命周期 ...
- 论文翻译:2021_LACOPE: Latency-Constrained Pitch Estimation for Speech Enhancement
论文地址:延迟约束的语音增强基音估计 引用格式:Schröter H, Rosenkranz T, Escalante-B A N, et al. LACOPE: Latency-Constraine ...
- DBPack 限流熔断功能发布说明
上周我们发布了 v0.4.0 版本,增加了限流熔断功能,现对这两个功能做如下说明. 限流 DBPack 限流熔断功能通过 filter 实现.要设置限流规则,首先要定义 RateLimitFilter ...
- java学习第七天xml.day18
反射 在java中,反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. 获取字节码的方式: 使用反射获取构造器 : 内省
- Redis 哨兵机制
概述 由一个或多个 Sentinel(哨兵)实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的 ...
- 第五十四篇:网络通信Axios
好家伙,补充知识 1.什么是Axios? Axios可以在浏览器中发送 XMLHttpRequests Axios 是一个基于 promise 的 HTTP 库,简单的讲就是可以发送get.post请 ...
- C语言小游戏:贪吃蛇
#include <graphics.h> #include <conio.h> #include <stdio.h> #define WIDTH 40 //设置宽 ...