1.git的安装
去网站下载git,一路回车安装,安装好后点击鼠标右键会有Git bash here ,点击Git bash here命令行输入git --version会有git的版本信息。
2.git版本管理的基本操作
git init 建立本地git repository仓库并对文件进行追踪用
git status 查看状态
git add . / git add -A 这两个命令是全部添加到暂存区,也可以添加指定文件到暂存区 git add index.html
git commit -m"对这次提交的描述" ,这样就将修改提交到本地的 repository仓库中, 描述就是为了方便后期再次查看时好理解
git remote add origin https://github.com/***/ch1701.git 把本地的仓库和gitHub仓库想关联
git pull origin master 从gitHub仓库的master分支拉取代码到本地
git pull origin master --allow-unrelated-histories //强制拉取线上到本地合并()
git push -u origin master 提交到gitHub仓库的master分支,第一次的时候需要 -u 参数,后面再提交就不需要 -u 了
git push -u origin master -f //强制把本地推到线上覆盖(当回退线上仓库时会用到)
git cat help.txt 查看内容
git rm help.txt 删除help.txt文件
reset 清屏,实质是清除屏幕记录; ctrl + l 也是清屏,实质是把记录上移,以确保当前显示框干净
git diff help.text 查看当前版本与上个版本的不同
git config user.name 查看当前用户名
git config user.email 查看当前邮箱
npm cache clean --force 清除缓存
git rm -r --cached . 清除git缓存
git config --global core.ignorecase false 设置git区分大小写
至于上文中的gitHub仓库的来源,直接去github网站上注册一个账号,点右上角加号new repository,然后取个名字回车就好了
3.分支操作
创建本地分支: git branch aaa ,这里aaa为新建的分支名字
创建分支并切换到新分支: git checkout -b aaa ,这里aaa为新建的分支名字
查看本地分支:git branch 不给参数默认本地分支
合并分支: git merge aaa (想把aaa分支合并到master分支,要先切换到master分支再执行合并操作)
放弃分支合并: git merge –abord aaa
查看远程分支:git branch -r ,r代表remote即远程分支
查看所有分支:git branch -a ,a代表all即所有分支
切换分支:git checkout aaa ,从master分支切换到aaa分支 (切换分支前确保当前分支的修改都已提交)
创建远程分支 / 推送新分支放到远程:git push origin aaa ,会自动 在远程添加aaa分支
删除本地分支:git branch -d aaa 删除aaa分支前确保切换到非aaa分支上再执行此命令
删除远程分支:git push origin :aaa (origin 后面有空格)
删除远程分支: $ git push origin --delete aaa
当页面内容很多时,可以用按 f 键下一页,按 b 键上一页,:wq是退出当前
4.查看提交记录操作
git log 查看详细提交日志,按f键想下翻页,按b键向上翻页,按q退出
git log --oneline 显示只有一行的简单提交日志
git log --oneline -6 显示最近的6条提交日志
git log --oneline --author="hu" 显示指定作者的提交日志
git log --oneline --grep="index.html" 显示index.html的提交日志
git log --oneline --before='2017-07-20' 显示2017-07-20日期之前(包含这一天)的提交日志
git log --oneline --before='3 days' 显示最近3天的提交日志
git log --oneline --before='1 weeks' 显示最近1周的提交日志
git log --oneline --graph 显示带图形效果的提交日志
当回滚、回退后会看不到当前版本后的提交记录,这时可以执行 git reflog 这个命令会记录每一次操作记录
5.checkout操作 (回退版本方法一)
对于在工作区(未加入暂存区)的修改,想要放弃修改使用这个方法:
git checkout . 撤销对所有已修改但未放入暂存区的文件的修改,但不包括新增的文件
git checkout -- . 同上
git checkout [filename] 撤销对指定文件的修改,[filename]为文件名
git checkout -- [filename] 同上
对于已经git add 加入暂存区的文件想要放弃修改的话需要这样操作:
git reset HEAD index.html 可以把暂存区的修改撤销掉,重新放回工作区,然后就回到上面的那个方法了
对于已经commit 的文件,如果想要回退就要使用以下这个方法:
先git log --oneline 查看提交信息
git checkout a9db330 会回退到测试2的提交,并创建一个临时分支放测试2节点的代码,此时输入git branch 可以看到分支在临时分支上,本地代码也变回测试2的。如果又想回到最近的那次提交只需要切换回主分支master就好了,执行git checkout master ,本地代码会变回最新的提交版本测试4的状态,同时临时分支会消失。如果想保存测试2那个分支,那就在切换master分之前新建一个分支执行git checkout -b aaa,再执行git branch会发现临时分支也不见了,只有master和aaa,其中master是最新测试的状态,aaa就是测试2的状态。如下图:
注意:
这里需要注意一点,当回退到测试版本2后,测试版本2后的提交记录都会不见的,我们就不能通过git log找到测试版本4的commit_id了,我们可以用 git reflog查看每一次操作的记录找到测试版本4的commit_id 。想要回到最近的一次提交测试4只需要切换到master分支就好了,如下图。
6.reset操作 (回退版本方法二)
先git log --oneline 查看提交信息
执行git reset --hard HEAD^ 会回退到最近的提交版本的前一个版本(3065b27)
执行git reset --hard HEAD^ 会回退到最近的提交版本的前两个版本(3065b27)
执行git reset --hard HEAD~20 会回退到最近的提交版本的前20个版本
也可以根据提交的commit_id来回退:
执行 git reset --hard a9db330 , a9db330是通过git log查看到的额测试2提交的commit_id
这里需要注意的是:执行此方法后不会像checkout那样新建一个临时分支,而是直接把本地的代码会退到指定的版本,如果回退完后又想返回最新版本,执行 git reset --hard commit_id4, 这里的commit_id4是最新提交版本的id, 可以在回退之前截个图保存下来,或者通过 git reflog 查看。当回退到测试版本2后,测试版本2后的提交记录都会不见的,我们就不能通过git log找到测试版本4的commit_id了,这时候又想回到测试提交4的版本怎么办,我们就可以用 git reflog查看每一次操作的记录找到测试版本4的commit_id4然后再 git reset --hard commit_id4 就又回到最新的提交版本
7.remote操作
git remote 查看远程分支(没有改动的话默认是master)
git remote -v 查看git远程仓库地址
修改远程仓库地址:
1.修改命令
git remote set-url origin [url]
2.先删后加
git remote rm origin
git remote add origin [url]
8.clone 克隆
把git仓库的代码克隆到本地,只需要执行
git clone https://github.com/×××.git 这样会在当前目录下建立一个跟git仓库同名的文件夹,文件夹里是代码
git clone https://github.com/×××.git test ,这样会在当前目录下新建一个test文件夹用来放git远程代码
9.gitignore 忽略
在我们使用github提交本地代码时,有些库文件和日志文件是不必要提交的,这个时候我们就会用到.gitignore文件了。
首先,.gitignore文件应该是创建在你的项目的根目录下面的,执行命令创建 .gitignore文件,也可以直接在文件管理中去创建
vim .gitignore
或者 touch .gitignore
添加忽略的目录和文件:
node_modules/ //该文件下所有文件
dist/
.project //所有以.project结尾的文件
*.log //所有以.project结尾的文件
!aaa.log //不过滤aaa.log文件,该文件会被提交到线上仓库
platforms/
plugins/
这些文件都是库文件以及自动生成的模块,都是不必要提交的。
对于已经提交,现在又不想提交的文件(不想让它出现在远程版本库里),应该这样操作:
去项目根目录下创建.gitignore文件,并且添加需要忽略提交的文件(方法同上),然后执行
git rm -r --cached node_modules (node_modules为要删除的文件名)
然后再 push 到远程,这时去github的库里去就会发现刚刚删除的东西不见了
如果gitignore不生效,执行以下代码清理git缓存
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
10.git bash here窗口与cmd窗口的基本命令(windows)
以上都是我平时遇到的,我总结了一下写了出来,方便大家查看。这只是一部分,还有很多等我想起来了再往上添加。
文中如果有写错或不对的地方恳请您留言指出批评,如果此文对你有帮助,请加关注收藏点赞。