【Git】工作中99%能用到的git命令
Git使用笔记
1、第一次使用github
=============================================
1)github注册账号 使用邮箱注册账号
先不要创建版本库
2)安装git
Linux请参考网上教程,这里演示windows操作。
TortoiseGit是Windows版的Git,从https://tortoisegit.org/download/下载,然后按默认选项安装即可。
说明:git命令操作和Linux命令差不多,很多命令可以直接使用,比如cd,vi
3)安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
4)创建SSH Key
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
会让你输入
. ssh /id_rsa
文件的路径,默认即可
然后输入新密码,确认即可。
5)登陆GitHub,打开"Account settings","SSH Keys"页面:
然后,点"Add SSH Key",填上任意Title,在Key文本框里粘贴
id_rsa.pub
文件的内容:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
6)创建本地版本库(我选的D盘)
$ cd /d/phpsetup/www/git/
$ mkdir fhyblog
$ cd fhyblog
$ pwd
/d/phpsetup/www/git/fhyblog
7)通过 git init 命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/52fhy/fhyblog/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个 .git 的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
8)在本地版本库fhyblog里放入一些代码或文件
我放了src目录和一个readme.txt文件
9)进入版本库目录:
$ cd /d/phpsetup/www/git/fhyblog/
10)更新本地版本库(.指当前所有目录及文件)
$ git add .
当然,如果你仅仅是提交一个文件,可以这样写
$ git add readme.txt
更新一个目录这样写:
$ git add src/
此时还没有真正提交到版本库,只是放在暂存区。提交请继续往下看:
11)执行更新操作:
$ git commit -m "相关说明"
[master 91115af] .
1 file changed, 53 insertions(+)
create mode 100644 "\345\215\207\347\272\247\346\227\245\345\277\227.txt"
12)更新至远程(Github):
要关联一个远程库,使用命令
$ git remote add origin git@github.com:yourname/yourgit.git
关联后,使用命令
git push -u origin master
进行第一次推送master分支的所有内容;
所以,远程github上确保你的版本库是空的,否则你在这一步可能会不成功。
此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改;
$ git push origin master
Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts.
Enter passphrase for key '/c/Users/YJC/.ssh/id_rsa':
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 292 bytes | 0 bytes/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To git@github.com:52fhy/fhyblog.git
efe4969..91115af master -> master
Branch master set up to track remote branch master from origin. Admin@YJC-PC /d/phpsetup/www/git/fhyblog (master)
如果完成到这里,恭喜你!你已经有了本地和远程版本库了。
===================================================
2、再次使用git
以后本地版本库里有更新,使用 git add 添加,使用命令
git commit
提交。
更新至远程使用命令
git push origin master
推送
===================================================
3、从远程更新至本地版本库
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
$ git clone git@github.com:52fhy/fhyBlog.git
Cloning into 'fhyBlog'...
Enter passphrase for key '/c/Users/YJC/.ssh/id_rsa':
remote: Counting objects: 284, done.
remote: Compressing objects: 100% (238/238), done.
remote: Total 284 (delta 28), reused 283 (delta 27)R
Receiving objects: 94% (267/284), 644.00 KiB | 12.00 KiB/
Receiving objects: 100% (284/284), 676.81 KiB | 12.00 KiB/s, done.
Resolving deltas: 100% (28/28), done.
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
git 删除远程仓库的某次提交
删除上一次远程仓库的提交,修改上次提交的代码,做一次更完美的commit。
git reset commitId (注:不要带–hard)到上个版本
git stash 暂存修改
git push origin --force 分支名 强制push,远程的最新的一次commit被删除
git stash pop 释放暂存的修改,开始修改代码
git add . -> git commit -m "massage" -> git push
------------------------------------------------------------------------------------------------------------------
分支操作
git branch 创建分支
git checkout -b 创建并切换到新建的分支上
- git checkout -b 分支名 --track origin/分支名 创建本地分支并切换到新建的本地分支上,并且追踪远程的分支
git checkout 切换分支
git branch 查看分支列表
git branch -v 查看所有分支的最后一次操作
git branch -vv 查看当前分支
git brabch -b 分支名 origin/分支 名 创建远程分支到本地
git branch --merged 查看别的分支和当前分支合并过的分支
git branch --no-merged 查看未与当前分支合并的分支
git branch -d 分支名 删除本地分支
git branch -D 分支名 强行删除分支
git branch origin :分支名 删除远处仓库分支
git merge 分支名 合并分支到当前分支上
- git push origin --delete 分支名 删除远处仓库分支
文件暂存操作
git add xx
命令可以将xx文件添加到暂存区,如果有很多改动可以通过 git add -A .
来一次添加所有改变的文件。
注意 -A
选项后面还有一个句点。 git add -A
表示添加所有内容, git add .
表示添加新文件和编辑过的文件不包括删除的文件; git add -u
表示添加编辑或者删除的文件,不包括新添加的文件。
储藏操作
git stash 暂存当前修改 -------- 实际应用中推荐给每个stash加一个message,用于记录版本,使用
git stash save
取代git stash
命令 git stash save "test-cmd-stash"。git stash apply 恢复最近的一次暂存
git stash pop 恢复暂存并删除暂存记录
git stash list 查看暂存列表
git stash drop 暂存名(例:stash@{0}) 移除某次暂存
git stash clear 清除暂存
- git stash save -u 名称 暂存当前修改(包含未跟踪的文件)
- git stash show 暂存号 显示暂存的基本信息
- git stash show -p 暂存号 显示暂存的基本信息(详细)
回退操作
方法:
git reset --hard <commit_id>
git push origin HEAD --force
git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
git reset --hard HEAD^ 回退到上一个版本
git reset --hard ahdhs1(commit_id) 回退到某个版本
git checkout -- file撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到了版本库,则还原至加入版本库之后的状态)
git reset HEAD file 撤回暂存区的文件修改到工作区
标签操作
git tag 标签名 添加标签(默认对当前版本)
git tag 标签名 commit_id 对某一提交记录打标签
git tag -a 标签名 -m '描述' 创建新标签并增加备注
git tag 列出所有标签列表
git show 标签名 查看标签信息
git tag -d 标签名 删除本地标签
git push origin 标签名 推送标签到远程仓库
git push origin --tags 推送所有标签到远程仓库
git push origin :refs/tags/标签名 从远程仓库中删除标签
其它操作
常规操作
git push origin test 推送本地分支到远程仓库
git rm -r --cached 文件/文件夹名字 取消文件被版本控制
git reflog 获取执行过的命令
git log --graph 查看分支合并图
git merge --no-ff -m '合并描述' 分支名 不使用Fast forward方式合并,采用这种方式合并可以看到合并记录
git check-ignore -v 文件名 查看忽略规则
git add -f 文件名 强制将文件提交
git创建项目仓库
1. git init 初始化
2. git remote add origin url 关联远程仓库
3. git pull
4. git fetch 获取远程仓库中所有的分支到本地
忽略已加入到版本库中的文件
1. git update-index --assume-unchanged file 忽略单个文件
2. git rm -r --cached 文件/文件夹名字 (. 忽略全部文件)
取消忽略文件
git update-index --no-assume-unchanged file
拉取、上传免密码
git config --global credential.helper stor
Git fetch远程分支操作
- git fetch origin 拉取远端所有分之提交,获取所有的提交记录
- git fetch origin master:dev 拉取远端分支到本地分支dev
- git branch -a 查看拉取到本地的分支列表,包含远端的所有分支
- git checkout -b dev origin/dev 创建本地分支dev
git删除某次提交(某个commit)的方法
例如我的提交历史如下
commit 58211e7a5da5e74171e90d8b90b2f00881a48d3a
Author: test <test@36nu.com>
Date: Fri Sep 22 20:55:38 2017 +0800
add d.txt
commit 0fb295fe0e0276f0c81df61c4fd853b7a000bb5c
Author: test <test@36nu.com>
Date: Fri Sep 22 20:32:45 2017 +0800
add c.txt
commit 7753f40d892a8e0d14176a42f6e12ae0179a3210
Author: test <test@36nu.com>
Date: Fri Sep 22 20:31:39 2017 +0800
init
假如要删除备注为add c.txtcommit为0fb295fe0e0276f0c81df61c4fd853b7a000bb5c的这次提交
首先找到此次提交之前的一次提交的commit7753f40d892a8e0d14176a42f6e12ae0179a3210
执行如下命令
git rebase -i 7753f40
弹出如下界面
```
将0fb295f这一行前面的pick改为drop,然后按照提示保存退出
【Git】工作中99%能用到的git命令的更多相关文章
- 工作中 99% 能用到的 Git 命令
分支操作 暂存操作 回退操作 标签操作 常规操作 git创建项目仓库 忽略已加入到版本库中的文件 取消忽略文件 拉取.上传免密码. 分支操作 git branch 创建分支 git branch -b ...
- Git工作中的使用
Git工作中的使用 2019-01-16 14:29:31 雯雯木 阅读数 207更多 分类专栏: 自动化测试 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...
- git 工作中常用命令(结合vscode学习git 命令)
作为一名前端开发,大家在工作中常常使用什么开发工具呢,我觉得我首选的是vscode,他配合git使用起来非常方便. 工作中常用三个命令: git终端常使用: git add . git commit ...
- git工作中常用命令-工作中踩过的坑
踩坑篇又来啦,这是我在工作中从git小白进化到现在工作中运用自如的过程中,踩过的坑,以及解决办法. 1.基于远程develop分支,建一个本地task分支,并切换到该task分支 git checko ...
- git工作中常用操作总结
这篇文章主要记录下工作中常用的git操作.主要是对之前文章记录的问题做个总结,这个其实在idea中操作更加简单 别名配置 在敲git 命令时,其实可以使用别名,比如 commit可以配置为ci 下面是 ...
- git工作中最常用的用法教程,不走命令行
·1.1 git的概述 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Lin ...
- git工作中的常用操作
上班开始,打开电脑,git pull:拉取git上最新的代码: 编辑代码,准备提交时,git stash:将自己编辑的代码暂存起来,防止git pull时与库中的代码起冲突,否则自己的代码就白敲了: ...
- Git工作中用法(Gitlab)
感觉又有了新的认识. 一共有3个仓库,本地自己的,远程自己的,远程主仓库. 为了方便能及时从主仓库获取更新的内容要将远程主仓库也clone下来 git clone upstream url / ...
- git 工作中常用命令
git 命令: git init : 初始化 git add . :添加所有文件 git status :查看状态 若果是第一次会提示你输入你的 邮箱 和姓名: git commit ...
随机推荐
- 箭头函数中可改变this作用域,回调函数用箭头函数this指向page,自定义事件用箭头函数this指向undefined
1.回调函数中,用箭头函数改变this的作用域 success: (res)=>{ this.setData({ //此时,this指向page页面 ... }) } 2.自定义事件中,如果使用 ...
- 特征工程之分箱--Best-KS分箱
变量的KS值 KS(Kolmogorov-Smirnov)用于模型风险区分能力进行评估,指标衡量的是好坏样本累计部分之间的差距 .KS值越大,表示该变量越能将正,负客户的区分程度越大.通常来说,KS& ...
- django之表多对多建立方式、form组件、钩子函数 08
目录 多对多三种创建方式 1.全自动(用ManyToManyField创建第三张表) 2.纯手写 3.半自动 form组件 引入 form组件的使用 forms组件渲染标签 form表单展示信息 fo ...
- Mybatis问题-Type interface com.zzu.ssm.dao.UserMapper is not known to the MapperRegistry
1. mapper.xml中namespace名称是否与dao接口包名一致 2. 在mybatis配置文件中注册mapper
- PHP基础之如何调试PHP程序(HBuilder)
先到这里下载HBuilder(HBuilder是最棒的PHPIDE,可以参考PHP是世界上最棒的编程语言),运行后界面如下: 打开WAMP的调试选项(XDebug):,每开启一个Xdebug选项,WA ...
- What is a Digital Signature? 理解数字签名与数字证书
What is a Digital Signature?An introduction to Digital Signatures, by David Youd Bob (Bob's public k ...
- docker安装redis并允许外网访问
拉取redis镜像 docker pull redis:3.2 本地新建redis配置文件 redis.conf ,写入以下内容 #允许外网访问bind 0.0.0.0 daemonize NO pr ...
- keras默认配置
使用keras后,会在用户目录下生成.keras/keras.json文件,Windows下为:C:\Users\user\.keras\keras.json,Linux下为:~/.keras/ker ...
- Linux环境下软件安装
下载——解压缩: 把得到的目录放到一个不碍事的目录,我们可以设置隐藏目录: 查看可执行程序: 如何变成系统命令? PATH:一个可执行程序只要放到这些目录中任何一个就可以,就可以变成系统识别的命令,当 ...
- 统计mysql某个数据库的表数量以及表记录数
统计MySQL中某个数据库中有多少张表 SELECT count(*) TABLES, table_schema FROM information_schema.TABLES where ...