本文只记录命令,系统学习参见:
菜鸟教程:Git 服务器搭建 | 菜鸟教程
Git官方文档:Git - Reference
Git前必会
命令:
Git 有很多种命令模式,在安装GIT时选择, 如果选择和Linux命令风格,下面命令同样适用
cd:改变目录。
cd ..回退到上一个目录,直接cd进入默认目录
pwd : 显示当前所在的目录路径。
ls 和 ll:都是列出当前目录中的所有文件,只不过ll(两个LL)列出的内容更为详细。
touch :新建一个文件如touch index.js就会在当前目录下新建一个index.js文件。
rm :删除一个文件, rm index.js 就会把index.js文件删除。
mkdir :新建一个目录,就是新建一个文件夹,例如:mkdir test , 就会在当前目录下创建test文件夹。
rm -r :删除一个文件夹, rm -r src 删除 src 目录
mv 移动文件, mv index.html src index.html 是我们要移动的文件, src是目标文件夹标文件夹在同一目录下,改名也是这个
reset 重新初始化终端/清屏。
clear 清屏。
history 查看命令历史。
help 帮助。
exit 退出。
# 表示注释
git文件四大状态:
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。
Untracked:未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制.通过git add状态变为staged。
Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致.这种类型的文件有两种去处,如果它被修改,而变为Modified .如果使用git rm移出版本库,则成为untracked文件。
Modified:文件已修改,仅仅是修改,并没有进行其他的操作.这个文件也有两个去处,通过git add可进入暂存staged状态,使用git checkout则丢弃修改过,返回到unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改!
Staged:暂存状态.执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为unmodify状态.执行git reset HEAD filename取消暂存,文件状态为Modified
Git 专有命令:
1. git配置:
# Git 配置
git config -l
# 查看系统级别配置 在../Git/etc/config 文件里面
git config --system --list
# 查看全局配置 用户自己的配置
git config --global --list
# 编辑配置文件
# 只对当前本地仓库有效
git config -e
# 对所有本地仓库有效
git config -e --global
# 全局信息配置
git config --global user.name "名称"
git config --global user.email "邮箱"
2. Git操作:
2.1 创建本地仓库命令:
# 本地仓库初始化
git init
# 把指定的文件夹初始化为本地仓库
git init 文件夹名称
# 克隆远程仓库
git clone [url]
2.2 提交与修改:
# 查看当前库中所有文件状态
git status
# 查看当前库中指定文件状态
git status [filename]
# 添加所有文件到暂存区
git add .
# 提交指定文件到暂存区
git add [filename]
# 提交暂存区中的文件到本地仓库 -m 是提交信息,也就是提交备注
git commit -m
# 比较文件的不同 暂存区和工作区的差异
git diff
# 回退版本
git reset [head]
# 举例:
$ git reset HEAD^ # 回退所有内容到上一个版本
$ git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本
$ git reset 052e # 回退到指定版本
# 删除工作区文件
# 根据指定文件名删除
git rm <file>
# 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。
# 强行从暂存区和工作区中删除修改后的文件:
git rm -f <file>
# 如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是# # 从跟踪清单中删除,使用 --cached 选项即可:
git rm --cached <file>
# 递归删除 一般用于删除目录
git rm -r <file>
# 移动文件或者重命名文件 参考linux命令同类操作指令
git mv [file] [newfile]
# 如果新但文件名已经存在,但还是要重命名它,可以使用 -f 参数
git mv -f [file] [newfile]
2.3 提交信息与日志:
# 显示历史修改信息
git log
# 简化在一行显示
git log --oneline
# 显示分支合并等信息
git log --graph
# 倒序查看历史修改信息
git log --reverse
# 查看指定用户的提交信息
git log --author="author"
# 如果你要指定日期,可以执行几个选项:--since 和 --before,但是你也可以用 --until 和 --after。
# 例如,如果我要看 Git 项目中三周前且在九月二十六之后的所有提交,我可以执行这个(我还用了 --no-merges 选项以隐藏合并提交):
git log --oneline --before={3.week.ago} --after={2021-09-26} --no-merges
# 查看指定文件的修改记录
git blame <file>
2.4 远程操作:
# 显示所有远程仓库
git remote -v
# 添加远程版本库
# 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下:
git remote add [shortname] [url]
# 例如:这个链接是菜鸟教程专用的测试库
# origin 为远程地址的别名
git remote add origin https://github.com/tianqixin/runoob-git-test
# 或者不添加,直接克隆也行
git clone https://github.com/tianqixin/runoob-git-test
# 显示某个远程仓库的信息
git remote show [origin]
# 例如:
git remote show https://github.com/tianqixin/runoob-git-test
# 相关命令
# 删除远程仓库
git remote rm name
# 例如:
git remote rm origin
# 修改远程仓库名字
git remote rename old_name new_name
# 更新远程仓库的代码到本地
git pull
git pull origin
# 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin master
# git push 命用于从将本地的分支版本上传到远程并合并。
git push <远程主机名> <本地分支名>:<远程分支名>
# 如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
# 例如:将本地的master分支推送到远程的master分支
git push origin master
#相等于:
git push origin master:master
# 强制推送,一般在本地版本和远程版本有差异时使用,工作中慎用
git push --force origin master
# 删除远程分支
git push origin --delete master
2.5 分支管理
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。
# 创建分支
git branch [branchname]
# 列出所有本地分支
git branch
# 切换分支
git checkout [branchname]
# 创建新分支并立即切换到该分支下,从而在该分支中操作。
git checkout -b [branchname]
# 当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
#删除分支
git branch -d [branchname]
# 合并分支
# 一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。 你可以使用以下命令将任何分支合并到当前分支中去:
git merge
# 例如:将testbranch1 合并到当前分支(主分支)
git merge testbranch1
|