学习了一下git,在这儿记录一些常用命令,不用每次查
目录
常用命令
提交
添加到暂存区:git add XX.txt
提交到仓库:git commit -m "注释"
查看当前状态:git status
查看更改项:git diff XX.txt
$ cd 目录
$ git add text.txt //添加text文件到暂存区(需要手动新建)
$ git commit -m "注释" //将文件提交到仓库(可一次提交多个)
$ git status //查看是否有未提交(已修改但没提交)
$ git diff text.txt //看到底改了什么内容
版本回退
显示提交日志:git log
或git 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小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
于是——
- 运用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(公钥)两个文件
为什么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 XX
或git checkout XX
创建+切换分支:git switch -c XX
或git 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 举报,一经查实,本站将立刻删除。