git常用命令和基本使用
1、环境配置
git所有的配置其实都保存在本地配置文件
- 编辑Git配置文件
$ git config -e [--global]
- 查看配置
git config -l
- 查看不同级别的配置
# 查看系统config
git config --system --list
# 查看当前用户config
git config --global --list
- 设置用户名和邮箱
- 用户名
git config --global user.name "kuangshen"
- 邮箱
git config --global user.email 24736743@qq.com
只需要做一次这个设置,如果你传递了--global 选项,因为Git将总是会使用该信息来处理你在系统中所做的一切操作。如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要--global选项。总之--global为全局配置,不加为某个项目的特定配置。
2、项目配置
- 本地仓库搭建
- 创建全新的仓库,需要在GIT管理的项目的根目录执行
# 在当前目录新建一个Git代码库
git init
# 执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。
- 克隆远程仓库
# 克隆一个项目和它的整个代码历史(版本信息)
git clone [url]
3、文件命令
- 添加当前目录的所有文件到暂存区
git add hello.txt # 指定文件
git add . # 所有文件
- 查看指定文件状态
git status hello.txt
- 查看所有文件状态
git status # 详细格式
git status -s # 简约格式
- 将暂存区文件取消暂存
git reset . # 取消所有
git reset hello.txt # 取消指定文件
- 删除文件
git rm hello.txt # 删除工作区文件
git commit -m "delete hello.txt" # 提交之后,便删除了暂存区的文件
4、分支命令
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 切换分支
git checkout [branch-name]
# 合并指定分支到当前分支,有时候合并操作不会如此顺利。 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没办法合并它们,同时会提示文件冲突。此时需要我们打开冲突的文件并修复冲突内容,最后执行git add命令来标识冲突已解决
$ git merge [branch]
# 推送至远程分支
git push origin b1 # origin:仓库名,b1:分支名
# 删除分支,如果要删除的分支中进行了一些开发动作,此时执行上面的删除命令并不会删除分支,如果坚持要删除此分支,可以将命令中的-d参数改为-D,如果要删除远程仓库中的分支,可以使用命令git push origin –d branchName
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
5、代码提交
- 提交暂存区文件到本地仓库区
git commit -m "hello git" # 引号内是自定义备注信息
6、查看日志
git log
7、远程仓库
- 查看已经配置的远程仓库服务器
如果想查看已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出指定的每一个远程服务器的简写。 如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是 Git 克隆的仓库服务器的默认名字
git remote
- 添加远程仓库
git remote add my_project https://gitee.com/y-wee/my_project.git # my_project为仓库名,后面跟的是仓库地址
- 移除远程仓库
git remote rm my_project # my_project为仓库名
注意:此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库
- 抓取远程仓库
git fetch my_project # git fetch 是从远程仓库获取最新版本到本地仓库,不会自动合并
git merge my_project/master # 手动合并
- 拉取远程仓库
git pull my_project master # 从远程仓库获取最新版本并merge到本地仓库
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal:refusing to merge unrelated histories ),解决此问题可以在git pull命令最后加入参数--allow-unrelated-histories
- 推送到远程仓库
git push my_project master # my_project为仓库名,master为分支名
8、忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等在主目录下建立".gitignore"文件,此文件有如下规则
- 忽略文件中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
*.txt #忽略所有.txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt