git教程
https://learngitbranching.js.org/?locale=zh_CN
基础背景知识
master = 主分支
非master = 分支
git的三个空间的认识
通过git status
查看当前状态
- 工作区
就是平时本地编辑文件的地方,当使用add
时,就是将文件从工作区提交到暂存区
git add file1 # file1文件就提交到暂存区
git add . # 提交全部
git add -A # 也是提交全部
- 暂存区
当使用commit
时,就是将文件从暂存区提交到暂存区
# 当使用
git commit -m "prompty" # 就是把file1的文件从暂存区提交到远程版本库的master分支
- 版本库
本地版本库,默认使用master分支
信息、状态查询
必须在拥有.git 的文件夹下操作,不然提示:fatal: not a git repository (or any of the parent directories): .git
- 查看当前状态
git status
- tag查看当前库的更新版本
git tag
- 看版本
git log
Git 全局设置
- git config
git config --global user.name "Mysticbinary"
git config --global user.email "Mysticbinary#163.com"
# 查看本地全局用户配置信息 q 退出
git config --global --list
git config --list
- remote
需求:当然每次都这么输入这个路径很麻烦,使用remote命令映射一个路径。
查看当前已有的远程库
git remote
git remote -v # 全部列举
- 添加远程仓库
指定一个简单的名字,便不需记忆URL路径了,以便将来引用。
git remote add [shortname] [url]
- 删除远程仓库
git remote remove [shortname]
常用命令
- init 初始化本地文件夹
$:git init
- 查看是否初始化成功
ls -la
drwxr-xr-x 1 Administrator 197121 0 九月 7 16:56 .git/
#(.git=就是暂存区)
- 查看当前(工作区)的状态
git status
- add 到暂存区
$:git add -A
$:git add . (都是上传全部)
- commit 到版本库
提交到本地版本库,也相当于在本地创建了一个版本
$:git commit -m "2017-9-7 写一个A函数" #注释一般写:时间、做了什么事情
快捷方式:
git commit -a #会先把所有已经track的文件的改动`git add`进来,然后提交
git commit -a -m 'v1.0.1'
git commit -am "xxx" # 正确写法
git commit -ma "xxx" # 错误写法
# 加的-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区。注意,新加的文件(即没有被git系统管理的文件)是不能被提交到本地仓库的。建议一般不要使用-a参数,正常的提交还是使用git add先将要改动的文件添加到暂存区,再用git commit 提交到本地版本库。
git commit -m 'word...' # 建议写法
- push 上传远程仓库(HTTPS方式)
push 写全路径上传
git push https://git.oschina.net/deepseawhale/testgit.git master
#https://git.xxxx.git = 上传到那里的地址
# master = 那个分支
# 输入帐号、密码(一定要对,不然show fatal ,说你认证失败)
push 省略路径上传
git push [origin] [master]
- fetch从远程仓库获取数据来更新本地库
如果是多人协作,需要此功能,当你想提交代码的时候,可以先 将本地的代码库和远程库对比,以查看是否有变动。
git fetch master:temp
git diff temp
git merge temp
#如果temp分支不想要保留,可以使用如下命令删除该分支:
git branch -d temp
Deleted branch temp (was 40f902d).
#如果该分支的代码之前没有merge到本地,那么删除该分支会报错,可以使用git branch -D temp强制删除该分支。
- 报错:库不关联
# 报错如下
git pull origin master [path]
fatal: refusing to merge unrelated histories.
because local master is different from remote master.
the solution is --allow-unrelated-histories,that means merger two different master.
git pull origin master [path] --allow-unrelated-histories
可以先刷新,在忽略报错上传
git pull origin master
# 如果报两个库没有相关性 unrelated
git fetch <远程主机名> <分支名>
git pull <远程主机名> <分支名> --allow-unrelated-histories
git push origin master
- clone 下载代码(HTTPS方式)
cd 进到你想要存放代码的路径
git clone [URL]
- rm删除本地Git库
the method for git delete all commits.
rm -rf .git
免密登录
有两种方式:
- SSH提交公钥方式 (推荐使用)
- 在配置文件里面写账号密码(不安全,会把账号密码文件上传远程库,私人库可以用这个方式)
SSH of Pulic Key Login Github
- Setting pulic key
- Use SSH path failed, but use HTTPS path succeed.
It's strange!
在配置文件里面写账号密码
在配置文件里面写账号密码的流程如下
1.命令行形式,
在 git 工作区中 touch创建文件 .git-credentials
touch .git-credentials
编辑此文件
gedit .git-credentials
# 编辑内容如下
https://username:password@git项目地址
2.保存退出该文件
git add .
git commit -m "test"
3.命令行执行
git config --global credential.helper store
# 以上,输入 git fetch 即可发现已经免密登录
先输入账号免密登录一次即可,将当前内容提交提交一次即可。