越努力,越幸运

Git的使用

 1 year ago

Notive: "~"后面为本人所理解的意思,如有错误请去官网查看文档,THX。

一. Git基本命令:

git init ~初始化一个空的Git仓库
git status ~查看文件状态
git log ~查看提交的记录
git log --oneline ~简洁显示提交的记录
git add filename ~把对应文件添加到暂存区
git add . ~把所有文件添加到暂存区
git commit -m '注释' ~把暂存区的文件提交到版本库中
git commit -am '注释' ~直接提交到版本库中,相当于先把文件添加到暂存区然后在提交到版本库中
git config --global user.name name ~配置Git名称
git config --global user.email email ~配置Git邮箱
git config --list ~查看配置信息

二. Git结构和状态:

1. Git的3层结构

working directory ~工作区
staging index ~暂存区
git directory(Repository) ~版本库

2. Git中文件的4中状态

untracked ~未被追踪
Modified ~修改了工作区中某个文件但是没有添加到暂存区中
Staged ~把工作区修改的文件添加到了暂存区但是没有提交到版本库中
Committed ~已经存储在本地库中

三. Git撤销

git commit --amend ~撤销上一次提交并将暂存区的文件重新提交
git checkout -- filename ~把版本库中的对应文件拉回到工作区并替换工作区的文件
git checkout -- . ~撤销所有提交到暂存区的文件并把版本库中的文件拉回到工作区并替换该文件
git reset HEAD filename ~把最近一次提交到版本库中的这个文件拉取到暂存区
git reset commit版本号 filename ~把对应版本号的文件拉回到工作区
git reset --hard HEAD ~将本地的改变撤销, 返回之前的状态

四. Git删除

git add . ~工作区删除了某个文件通过这个命令提交到暂存区
git rm filename ~把工作区和暂存区的对应文件名删除掉
git rm --cache filename ~不小心把不需要追踪的文件添加到暂存区,需要删除暂存区文件但不想删除工作区的文件
git rm -f filename ~强制把工作区和暂存区的文件删除
mv oldfilename newfilename ~更改一个文件名(这个需要添加到暂存区)
git mv oldfilename newfilename ~更改一个文件名(省略了添加到暂存区这步)

五. Git分支

git branch ~列出所有分支
git branch branchname ~创建一个分支
git checkout branchname ~切换到对应分支
git branch -d branchname ~删除一个分支
git branch -m oldbranchname newbranchname ~改分支名
git checkout -b branchname ~创建一个新分支并切换到这个分支
git merge branchname ~合并原分支和新分支的文件(如果两个分支文件内容不同则需要做出修改然后提交到版本库中)
git diff ~比较工作区与暂存区的差异
git diff --staged ~比较暂存区与版本库的差异
git diff commit版本号1 commit版本号2 ~比较两个版本的差异
git diff otherbranch ~比较所在分支与要对比的分支的差异
git stash ~将工作区和暂存区的改变存储起来
git stash list ~查看当前本地存储的信息数量
git stash apply stashname ~把对应的存储信息返回到当前
git stash pop stashname ~把对应的存储信息撤销到当前并且删除掉这个存储信息
git stash drop stashname ~删除这个存储的信息

六. Git远程仓库

1. 搭建Github远程仓库

创建Github的公共仓库
git init 初始化文件夹为Git仓库
使用https地址push和pull都没问题
如果使用ssh来push和pull则需要通过ssh-keygen在本地生成一个公钥,然后把公钥添加到Github中

2. 利用远程服务器搭建远程仓库

ssh root@192.168.1.1 ~通过ssh来登录远程服务器(root为远程服务器的账号, @后面的192.168.1.1的远程服务器的ip)
git init --bare ~初始化裸仓库
git push push的地址(ssh://root@192.168.1.1/project/demo.git root为远程服务器的账号, @后面的192.168.1.1是远程服务器的ip, /project/demo.git是项目的路径) master ~把master分支的文件push到对应的地址中
git clone clone的地址(ssh://root@192.168.1.1/project/demo.git) ~把地址中的文件拉取到当前文件夹下
ssh-copy-id root@192.168.1.1 ~将本地的共钥复制到远程服务器来实现免密登录
git fetch ssh://root@192.168.1.1/project/demo.git master ~在master中访问ssh://root@192.168.1.1/project/demo.git这个地址则是免密

3. push、pull和remote相关命令:

git push push的地址 push哪一个分支 :把一个分支中的文件push到对应的地址中
git pull pull的地址 pull到哪一个分支 :把地址中的文件拉取到当前文件夹中
git remote add name 地址 通过创建简单的name远程仓库地址来方便push和pull
git remote -v 列出已经创建的远程仓库的地址
git remote rm name 删除对应的name的地址
git remote rename oldname newname 修改遥控器的名称

七. help的使用和不追踪相应的文件

如果某个文件不需要追踪则可以在.gitignore添加上对应的文件名就可以实现不追踪这个文件,然后在把暂存区不追踪的文件git rm name --cached删除就可以了,另外可以通过git help add ~来查看命令的参数和使用方法等等

最后推荐一个Git的入门上手视频https://study.163.com/course/courseMain.htm?courseId=1004094014,希望能帮助到大家!