转载注明出处://www.greatytc.com/p/864fd9be14d5
Git安装
下载Git有两种方法
- 直接下载安装包,Git下载地址
- 用homebrew指令下载,不过首先需要安装homebrew
- 在终端执行后面指令安装,
homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 完成后,使用以后指令安装Git,
brew install git
- 在终端执行后面指令安装,
安装好Git后,配置用户名和用户邮箱,以后每次与Git的交互都会使用该信息。
git config --global user.name "your_name"
git config --global user.email "your_email@gmail.com"
配置信息可以更改,以后想要更改使用上面指令就可以。同时可以使用git config --list
指令查看Git的配置信息。
Git默认是大小写不敏感的,也就是说,将一个文件名某个字母做了大小写转换的修改Git是忽略这个改动的,导致在同步代码时候会出现错误,所以建议大小把Git设置成大小写敏感。
git config core.ignorecase false
生成密钥
Git关联远端仓库时候需要提供公钥,本地保存私钥,每次与远端仓库交互时候,远端仓库会用公钥来验证交互者身份。使用以下指令生成密钥。
ssh-keygen -t rsa -C "your_email@youremail.com"
生成密钥后,在本地的/Users/当前电脑用户/.ssh
目录下会生成两个文件id_rsa
、id_rsa.pub
,id_rsa
文件保存的是私钥,保存于本地,id_rsa.pub
文件保存的是公钥,需要将里面内容上传到远端仓库。
获取公钥字符串具体操作如下图。
- 输入
cd
指令,进入当前用户目录 - 输入
ls -a
指令,查看当前用户目录下所有文件,包括隐藏文件 - 输入
cd .ssh
指令,进入.ssh
目录 - 输入
ls
指令,查看.ssh
目录下的文件 - 输入
cat id_rsa.pub
指令,查看id_rsa.pub
文件中内容
远端仓库添加密钥
以GitHub为例子,向远端仓库添加公钥,上面已经获取到了公钥,只需要将公钥添加到远端仓库就可以了。
在个人设置页面,左边选中SSH and GPG keys
,在右边添加公钥,title
是key的名称,可以随便取,可更改,key
是上面我们获取到的公钥,填写完毕后点击add SSH key
按钮,这样远端就添加到了密钥。
本地关联远端仓库
- 在本地文件夹下面执行
git init
指令,初始化文件夹,作为本地的一个仓库。 - 执行
git remote add origin 仓库的ssh链接
- 执行
git pull
指令,将远端代码拉取到本地
执行完毕后,远端仓库代码已经同步到了本地。
常用Git指令
-
初始化配置
git config —global user.name “XXX" git config --global user.email “XXXX"
-
设置大小写敏感
git config core.ignorecase false
生成密钥
ssh-keygen -t rsa -C “your_email”
将远端代码clone到本地目录
git clone <远端git> <本地目录>
-
提交修改
git add <文件> // 将有修改的文件添加到本地缓存中 git add . 是添加所有修改 git commit -m "本次修改信息" // 提交本次修改,一般是在git add之后操作 git reset . // 撤销add git rm --cached . // 撤销add
-
切换分支
git checkout <branch_name>
-
以当前分支为蓝本新建分支并切换到新分支
git checkout -b <branch_name>
当前分支合并其他分支
git merge <branch_name>
远端新建分支,其实就是将本地分支推送至远端
git push origin <local_branch_name>:<remote_branch_name>
删除远端分支,其实就是推送了一个空的分支到远端覆盖了原来的远端分支
git push origin :<remote_branch_name>
-
从远端拉取分支,并建立对应关系
git checkout -b <local_branch_name> origin/<remote_branch_name> // 或者 git branch —track <local_branch_name> origin/<remote_branch_name>
本地已经存在的分支和远端分支建立对应关系
git branch —set-upstream <local_branch_name> origin/<remote_branch_name>
-
添加远端库
git remote add <远端库代称> <远端库地址> git clone <远端库地址> <目录> //不需要git init
-
回滚到某一个提交版本
git reset --hard/soft <commit_id> // 回滚到某一个版本 git reset --hard/soft HEAD~<num> // 回滚num个提交 git revert <merge_commit_id> -m number // 撤销某一次merge,number是指分支,1-代表merge的目标分支 2-代表被merge的分支 git revert HEAD~2..HEAD // 撤销最近两次提交并形成一个新的commit
-
强制远端覆盖本地
git fetch --all git reset --hard origin/<remote_branch_name>
-
提交日志查看方式
git log -p 每一次提交具体差异 git log —stat 显示文件修改差异,没显示具体修改 git log —graph 树形状提交记录,可查看分支合并信息 git log -p filename 查看某个文件的提交记录
git pull —rebase
有冲突后,解决冲突,使用git add .
然后使用git rebase --continue
-
切换到某个分支,将其他分支的某次提交应用到该分支
git checkout <branch_name> git cherry-pick <commit id>
-
前者表示把<start-commit-id>到<end-commit-id>之间(左开右闭,不包含start-commit-id)的提交cherry-pick到当前分支;后者表示把<start-commit-id>到<end-commit-id>之间(闭区间,包含start-commit-id)的提交cherry-pick到当前分支。
git cherry-pick <start-commit-id>..<end-commit-id> git cherry-pick <start-commit-id>^..<end-commit-id>
-
tag
- 新建tag
git tag <tag_name> //轻量标签 git tag -a <tag_name> -m "tag_msg" // 附注标签 git tag -a <tag_name> <commint_id> // 给某次提交添加标签
- 删除tag
git tag -d <tag_name>
- 查看tag
git tag // 查看所有tag git show <tag_name> // 查看某条tag
- 提交到远端
git push origin <tag_name> // 将某个tag提交到远端 git push origin –tags // 将所有tag提交到远端
-
branch相关指令
git branch -d <branch_name> // 删除某个分支 git branch -D <branch_name> // 强制删除某个分支 git branch -avv // 查看本地分支与远端分支关系,并且显示分支最新一次提交信息 git remote show origin // 查看远端分支间关系
-
删除未跟踪文件
git clean -f // 删除 untracked files git clean -fd // 连 untracked 的目录也一起删掉
结束语
本篇粗略的介绍了Git的使用,但是对于Git内部的实现和一些具体的使用方法,还是需要自己去深入的了解。关于Git的详细介绍和工作原理,可以查看以下连篇文章。
Git教程,里面有介绍到Git的工作原理,可以仔细阅读。
Git Community Book 中文版介绍了Git具体使用,这本书也是关于Git的一本好书。
Git练习,实战练习Git的各种指令。