-1、书籍推荐
中文版:《 精通 Git 》(第2版)
英文版:《 Pro Git 》Second Edition
0、安装 git
Windows 上安装 git
一种方法是 git 官方版本下载地址 下载如下安装包:
安装之后会有好几个可执行程序 Git Bash
、Git CMD
、Git GUI
,其中唯一堪大用的仅为 Git Bash
,用法和 Ubuntu 的 bash
一模一样
还有一种方法是下载 GitHub for Windows,这是客户端版的 GitHub。目前还没用到。
Ubuntu 上安装 git
很简单的一行命令就搞定:
sudo apt-get install git
1、查看 git 配置
git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=D:/software/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
user.name=Yachao Jia //提交必备1/2
user.email=123456789@qq.com //提交必备2/2
core.editor=nano //配置默认编辑器
usr.name=Yachao Jia //配置用户名的时候敲错了user,还不知道怎么删除误写的配置
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
2、配置 git 默认编辑器、用户名、邮箱
git config --global core.editor nano //将默认编辑器设置为nano
git config --global user.name "Yachao Jia" //配置提交用户名
git config --global user.email 123456789@qq.com //配置提交邮箱
3、查看 git 某一项配置
git config core.editor //查看编辑器
nano
git config user.name //查看用户名
Yachao Jia
git config user.email //查看用户邮箱
123456789@qq.com
4、新建一个 git 仓库
①新建一个文件夹,给文件夹起上合适的名字
②进入该文件夹执行如下命令:
git init //有点类似 ROS 初始化工作空间,会在当前目录生成一个 .git 的隐藏文
//件夹,有 .git 文件夹就说明了本工作空间是一个 “git工程” 的文件夹
5、克隆现有的 git 仓库
git clone [URL] //克隆的命令行格式
git clone https://github.com/libgit2/libgit2 //这行笔者这里会报 time out 的错误
git clone https://gitclone.com/github.com/libgit2/libgit2 //解决上一行访问gitHub出 time out 的问题
感谢这位网友分享的解决办法:Wang CVer
6、暂存(staged)
git add test.cpp
git add
命令接受一个文件或目录的路径名作为参数,注意这里的重点是一个。如果提供的参数是目录,该命令会递归地添加该目录下的所有文件。
7、提交(commit)
git commit
git commit
命令后不必须接文件名,不接文件名默认提交整个暂存区(文件已暂存 staged)中的内容,接了文件名则只提交相应的文件。如果嫌一个一个的git add
麻烦,也可以使用git commit
的选项参数-a
来跳过git add
过程:
git commit -a
8、 git 三状态详解
git commit -a
提交的是已暂存、未暂存但已跟踪(只能是“已修改待暂存”的文件了)的文件。未跟踪的文件并不能被提交,必须使用git add file_name
来使文件从未跟踪变成已跟踪。文件状态树如下:
《Pro Git 第2版》一书中提到 “Git 有三种状态,你的文件可能处于其中之一” ,这三种状态是限定在下述“已跟踪”的前提下的
-
已跟踪
- 已提交(committed)
- 已暂存待提交(staged)
- 已修改待暂存(modified) (或可跳过暂存强行提交) 未跟踪
- 在工作路径下新建、粘贴一个文件
9、删除文件
使用rm
删除"已跟踪"的文件,会使文件状态变为"已删除待暂存"。
处理“已删除待暂存”的文件与处理“已修改待暂存”的文件完全一样,可以先
git add file_name
,然后再git commit
。也可以直接git commit -a
强制提交修改。因为“删除文件”也是一种修改嘛,所以这种修改也能够且应该被提交。
使用rm
删除"未跟踪"的文件,不会对git工作空间产生影响,因为这个文件全程对git不可见。
使用git rm file_name
删除 git 仓库中的文件。
文件状态会变为“已删除待提交”,即直接放进了暂存区。