标签:git -- XX Git master 常用命令 txt 分支
学习了一下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 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,打开“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 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仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
标签:git,--,XX,Git,master,常用命令,txt,分支 来源: https://blog.csdn.net/weixin_45677333/article/details/112758154
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。