git命令的使用
1、git基础入门
1.1 基础概念
git是一个开源的分布式版本控制系统,用于敏捷高效的处理或大或小的项目,更是一个内容管理系统(CMS),工作管理系统。
git和snv差异
- git是分布式的,svn不是
- git把内容按元数据方式存储,而svn是按照文件
- git没有一个全局的版本号,而svn有
- git的内容完整性要优于svn。
1.2 安装
window平台安装,安装包下载地址
安装时候按照提示步骤,一步一步安装就行了。安装完成就可以使用git工具,还有一个图形界面的项目管理工具。
图形管理工具
git命令行
1.2 git配置
git提供了一个git config的工具,用来配置读取相应的工作环境变量
在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER。
1、配置个人的用户名和邮件
使用了global选项,以后所有的项目都会默认使用这里配置的用户信息
-
git config --global user.name 'youname'
-
git config --global user.email test@163.com
2、查看配置信息
-
git config --list //所有的配置信息都会列出来
-
git config user.name //查看姓名
-
git config user.email //查看邮箱
3、工作流程图
1.3 git工作区、暂存区、版本库概念
- 工作区:电脑里面能看到的目录
- 暂存区:英文stage或者index,在.git目录下的index文件,暂存区也叫索引。
- 版本库:工作区有个隐藏的目录.git,这个不算工作区,而是git的版本库
2、git基本操作
2.1 git初始化:git init
git使用init来初始化仓库,因为很多命令都需要在仓库里面使用,因此首先需要初始化,初始化以后,仓库下回多出来一个.git目录(隐藏文件,可在文件夹设置里面把隐藏文件显示),.git目录下包括了所有的元数据。如果需要某个文件当做仓库,只需要再当前目录下,在执行git init命令。
git init
2.2 创建仓库:git init 【directory】
使用指定目录作为git仓库,执行这个命令,会生成一个newrepo的文件,作为git仓库,newrepo里面也有一个.git目录
git init newrepo
2.3 拷贝(克隆)项目:git clone [url]
使用git clone从仓库中拷贝代码,也可以克隆项目到指定文件夹。url是git仓库地址,directory本地目录。
-
git clone [url]
-
git clone [url] [directory]
2.4 查看项目的当前状态:git status
查看当前项目的状态,更改了那些文件。如果你新建了文件,添加了文件到缓存,修改了文件,想知道有没有提交,都可以执行这个命令,来查看相关的文件信息,和你的操作轨迹。
git satus
2.5 新建文件等文件操作命令:touch [filename]
-
touch a // 创建一个a文件
-
echo 1234 >> a // 把1234这个内容放入a文件
-
cat a // 打开a文件 读取出a文件中的内容
-
mkdir test // 创建test文件夹
-
rm 文件名 // 删除文件
2.6: 降文件添加到缓存区:git add [filename]
将文件添加到缓存,如果是多个文件,在命令行后面新增文件名即可。
-
git add test.js//把test.js提交到缓存
-
git add test.js one.html//把test,one提交到缓存区
-
git add .//把所有文件提交到缓存区
2.7 提交文件到本地仓库:git commit
执行git commit将缓存区内容添加到仓库中。每次提交都会记录你的名字与邮箱,所以要提前设置一下。-m添加注释
-
git commit //提交到仓库
-
git commit -m '注释内容' //提交到仓库,添加备注信息
-
git commit -am ''//提交到仓库,添加备注信息,文件已经放入仓库,直接提交添加备注,不用add,commit。
2.8 提交代码到远程仓库:git push
git push //把文件上传到远程仓库
2.9 更新代码,从远程仓库拉取代码:git pull
git pull //从远程仓库拉取代码,类似svn的update
2.10 取消已缓存的内容:git reset head /[filename]
取消赢缓存的内容(git add提交到缓存里面的文件),
git reset head,取消所有缓存的内容(当前版本);
git reset [filename],取消指定文件的内容。取消以后,可执行status查看文件状态;
-
git reset head
-
git reset test.js
2.11 删除文件:git rm 【file】
从git里面移除某个文件,执行git rm [file]命令;
如果要删除暂存区的的文件,则执行git rm -f [file]命令;
如果要删除暂存区的文件,但是又要保留在工作目录中,执行 git rm --cached [file];
从工作区删除删除目录,git rm -r [directory ]
-
git rm test.js
-
git rm -f test.js
-
git rm --cached test.js
-
git rm -r test
2.12、比较文件:git diff
如果文件已经修改了,还么有提交,可以执行 git diff命令,来查看差异
2.13 查看提交日志:git log/relog
查看命令历史,查看仓库的操作历史
-
git log
-
git reflog
-
git log -n//查看近期提交的n条记录
-
git log -p//查看提交的详细记录
2.14 快速打开图形操作界面:gitk
gitk
2.15 查看文件信息:ls
-
ls // 查看当前路径下面的所有文件名
-
ls 文件夹名 // 查看对应文件夹中的内容
-
ls -l // 拉出最近git提交记录以及对应修改的文件名
-
ls -l -a // 拉出最近git提交记录以及对应修改的文件名,隐藏的文件也会显示
2.16 文件目录操作:cd
-
cd ~ // 将工作路径快速切换到root
-
cd - // 将工作路径切换到上一状态
-
cd ../ // 切回到上一个工作路径
-
cd 文件夹名 // 进入某个目录
-
cd / // 进入根目录
2.17 常见分支操作:
-
git branch //列出本地所有分支
-
git branch 分支名 // 新建分支
-
git branch // 查看当前所有分支
-
git checkout 分支名 // 检出分支
-
git checkout -b 分支名 // 创建并切换分支
-
git checkout commitId 文件名(文件路径下的文件名) 还原这个文件到对应的commitId的版本
-
(例如src/page/attendance/attendanceSum.vue我想把它还原到2个版本之前 首先git log src/page/attendance/attendanceSum.vue找到对应想要还原的版本
-
复制版本提交的commitID 然后执行git checkout commitID src/page/attendance/attendanceSum.vue
-
这样就把attendanceSum.vue这个单个文件 还原到了对应版本)
-
git branch -v // 查看分支以及提交hash值和commit信息
-
git merge 分支名 // 把该分支的内容合并到现有分支上
-
git branch -d 分支名 // 删除分支
-
git branch -D 分支名 // 强制删除 若没有其他分支合并就删除 d会提示 D不会
-
git branch -m 旧分支名 新分支名 // 修改分支名
-
git branch -M 旧分支名 新分支名 // 修改分支名 M强制修改 若与其他分支有冲突也会创建(慎用)
-
git branch -r // 列出远程分支(远程所有分支名)
-
git branch -a // 查看远程分支(列出远程分支以及本地分支名)
-
git fetch // 更新remote索引
-
git push -u origin 分支名 // 将本地分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push 也可解决 git建立远程分支关联时出现fatal ... upstram的问题
2.17 标签操作:git tag
-
git tag // 查看列出所有打过的标签名
-
git tag -d 标签名 // 删除对应标签
-
git tag 标签名字 // 在当前仓库打个标签
-
git tag foo -m "message" // 在当前提交上,打标签foo 并给message信息注释
-
git tag 标签名 哈希值 -m "message" // 在某个哈希值上打标签并且写上标签的信息
-
git tag foo HEAD~4 // 在当前提交之前的第4个版本上 打标签foo
-
git push origin --tags // 把所有打好的标签推送到远程仓库
-
git push origin 标签名 // 把指定标签推送到远程仓库
-
git stash // 把暂存区的内容 暂时放在其他中 使暂存区变空
-
git stash list // 查看stash了哪些存储
-
git stash pop // 将stash中的内容恢复到当前目录,将缓存堆栈中的对应stash删除
-
git stash apply // 将stash中的内容恢复到当前目录,不会将缓存堆栈中的对应stash删除
-
git stash clear // 删除所有缓存的stash
-
git pull --tags // 把远程仓库的标签也拉取下来
-
git push origin :refs/tags/远程标签名 // 删除远程仓库的标签
2.18 远程同步操作
-
# 下载远程仓库的所有变动
-
$ git fetch [remote]
-
-
# 显示所有远程仓库
-
$ git remote -v
-
-
# 显示某个远程仓库的信息
-
$ git remote show [remote]
-
-
# 增加一个新的远程仓库,并命名
-
$ git remote add [shortname] [url]
-
-
# 取回远程仓库的变化,并与本地分支合并
-
$ git pull [remote] [branch]
-
-
# 上传本地指定分支到远程仓库
-
$ git push [remote] [branch]
-
-
# 强行推送当前分支到远程仓库,即使有冲突
-
$ git push [remote] --force
-
-
# 推送所有分支到远程仓库
-
$ git push [remote] --all
3、提交代码步骤
3.1 查看当前状态:git status
第一步,查看当前文件状态,git status,查看修改了那些文件,红色字体就是修改的文件。
3.2 添加文件到缓存区:git add .
如果one.vue,test.vue你都都想提交执行git add .
如果只提交一个文件,执行 git add one.vue,提交指定的文件。
再执行 status看一下,是否全部提交成功。
3.3 提交代码到本地仓库:git commit -m 'xx'
提交代码(提交已经加到缓存区里面的代码)到本地仓库
3.4 从远程主机更新代码:git pull [主机] [分支]
取回远程主机某个分支的更新,再与本地的指定分支合并
3.5提交代码到远程仓库:git push [主机] 【分支】