微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Git常用命令

学习了一下git,在这儿记录一些常用命令,不用每次查

在这里插入图片描述

目录

常用命令

提交

添加到暂存区:git add XX.txt

提交到仓库:git commit -m "注释"

查看当前状态:git status

查看更改项:git diff XX.txt

查看当前文件内容cat .XX.txt

$ cd 目录   
$ git add text.txt     			//添加text文件到暂存区(需要手动新建)
$ git commit -m "注释" 			//将文件提交到仓库(可一次提交多个)

$ git status           			//查看是否有未提交(已修改但没提交)
$ git diff text.txt    			//看到底改了什么内容

版本回退

显示提交日志:git loggit log --pretty=oneline

回退到前版本:git reset --hard HEAD^

退回到未来:git reset --hard 版本号

查看版本号:git reflog

$ git log                     	//显示从最近到最远的提交日志
$ git log --pretty=oneline    	//好看一点

$ git reset --hard HEAD^		//一个^回退一个版本 上一个为HEAD^ 上100个版本为HEAD~100

$ cat .test.txt                //看当前文件内容(就是上一版本的内容了)

//回退
$ git reset --hard 1094a        //1094a为版本号(几个就行)
$ git reflog                    //查看版本号(记录每一次命令)

撤销修改

撤销工作区的修改git checkout -- XX.txt

撤销暂存区的修改git reset HEAD XX.txt(后还需要接撤销工作区的修改

$ git checkout -- readme.txt    //丢弃工作区的修改
$ git reset HEAD readme.txt		//把暂存区的修改撤销掉(unstage),重新放回工作区(后还需要进行上一步)

删除文件

删除rm XX.txt(也可文件夹手动删)
删完也要提交git commit -m "remove XX.txt"

删错了(撤销工作区的修改):git checkout -- XX.txt

$ rm test.txt
$ git commit -m "remove test.txt"    //删除也要commit
$ git checkout -- test.txt 			 //删错了!(用版本库里的版本替换工作区的版本)

远程仓库(Github)

找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
于是——

  1. 运用Github添加SSH Key
    每台电脑都可以搞一次
$ cd ~/.ssh									//查看是否配置过密钥
$ ssh-keygen -t rsa -C "email@example.com"  //创建ssh(之后不断enter就行)
$ cat ~/.ssh/id_rsa.pub  					//查看你生成的公钥
//也可到用户主目录里.ssh目录,有id_rsa(私钥)和id_rsa.pub(公钥)两个文件
  1. 登陆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推送了。

在GitHub上免费托管的Git仓库,任何人都可以看到(但只有你自己才能改)。如果不想让别人看到Git库,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手搭一个Git服务器。

如果使用https很简单,基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。

本地关联并推送到远程库(先有本地库)

本地关联库:git remote add origin git@github.com:red-pitaya/XX.git

远程推送:git push origin master

第一次送:git push -u origin master

先在github中建一个仓库learngit

$ git remote add origin git@github.com:red-pitaya/learngit.git   
//在本地关联自己Github的远程库
//(添加后,远程库的名字就是origin(认))
$ git push -u origin master   //第一次把本地库当前分支master推送到远程。(远程库为空)
$ git push origin master      //以后每次把本地master分支的最新修改推送至GitHub

从远程库克隆(先有远程库)

远程库克隆:git clone git@github.com:red-pitaya/XX.git

在github中已有一个仓库gitskills

$ git clone git@github.com:red-pitaya/gitskills.git   //在当前目录下克隆一个本地库gitskills

GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,认的git://使用ssh,但也可以使用https等其他协议。

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

分支管理

查看分支:git branch

创建分支:git branch XX

切换分支:git switch XXgit checkout XX

创建+切换分支:git switch -c XXgit checkout -b XX

合并某分支当前分支:git merge XX

删除分支:git branch -d XX

$ git checkout -b dev				//创建dev分支,然后切换到dev分支
$ git switch -c dev					//创建并切换到新的dev分支
//git checkout加-b表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev

$ git branch						//查看当前分支
* dev
  master

在dev分支上正常提交,比如对readme.txt做个修改加上一行:
Creating a new branch is quick.

$ git add readme.txt 				//在dev分支上
$ git commit -m "branch test" 		//提交
$ git checkout master				//切换回master分支
$ git switch master					//直接切换到已有的master分支
Switched to branch 'master'

$ git merge dev						//合并指定分支(dev)到当前分支(master)

创建版本库

E盘 –> git目录下新建一个learngit版本库

$ cd E:
$ cd git
$ mkdir learngit
$ cd learngit
$ pwd  								//显示当前的目录
/Users/michael/learngit

变成git可以管理的仓库

$ git init
Initialized empty Git repository in E:/git/learngit/.git/

当前learngit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,不要手动乱改这个目录里面的文件,否则会把git仓库给破坏了

安装命令

linux上安装:

$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git

安装后设置姓名跟邮箱:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

git config --global 参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐