git安装配置
安装:
sudo apt-get install git
配置用户名、邮箱:
git config --global user.name "username"
git config --global user.email "username@example.com"
生成ssh密钥:(邮箱地址最好与远程仓库注册邮箱一致)
密钥存储地址回车默认,私钥密码最好设置一下
ssh-keygen -t rsa -C "username@example.com"
ssh密钥添加到远程仓库:(github)
1,先查看公钥:
cat ~/.ssh/id_rsa.pub
2,在github/gitee中保存公钥:
登陆github帐户。点击你的头像,然后 Settings -> 左栏点击 SSH and GPG keys -> 点击 New SSH key,把公钥内容复制进文本区key,标题title填不填随意。
测试连接:
#Gitee
$ ssh -T git@gitee.com
#GitHub
$ ssh -T git@github.com
如果测试报错:
The authenticity of host 'gitee.com (xxx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxx.
原因是密钥文件夹内少了一个known_hosts文件,本来密钥文件应该是三个,现在只有两个,便报了这样的错误,此时输入yes回车之后,生成了缺少了的known_hosts文件,便可解决这个问题。
连接gitee码云出现错误
You've successfully authenticated, but Gitee.com does not provide she access.
在当前项目进入git bash,键入
git pull origin master --allow-unrelated-histories
git操作命令
修改命令别名:
git config --global alias.st status
git st
参数--global
是全局参数(对当前用户起作用),如果不加只对当前仓库起作用。
如将status改为别名st
删除命令别名:找到配置文件,把[alias]后面别名删除。
cat .gitconfig
用户的Git配置文件放在用户主目录下隐藏文件.gitconfig中
cat .git/config
每个仓库的Git配置文件都放在.git/config文件中
创建.gitignore忽略文件:(放在项目目录内)
可以直接引用github的各种.gitignore配置文件https://github.com/github/gitignore
原则:
1,忽略操作系统自动生成的文件,比如缩略图等;
2,忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
3,忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
也可手动添加,如:
__pycache__/
虚拟环境名称(如果有创建虚拟环境)
初始化仓库:(别误删.git文件)
git init
查看项目状态:(列出未被跟踪的文件)
git status
将文件加入仓库:(让Git关注跟踪,但不提交):
add .将未被跟踪的所有文件加入仓库,句点.和add间留空格
git add .
再次查看状态:
git status
执行提交:
标志 -m 让 Git 将接下来的消息( “Started project.” )记录到项目的历史记录中
git commit -m "Started project."
跟踪和提交一并执行:
标志 -a 让 Git 将仓库中所有修改了的文件都加入到当前提交中,标志-m同上。
git commit -am "Extended greeting."
查看提交历史:
两种方式
git log
或者:(标志 --pretty=oneline 指定显示两项最重要的信息:提交的引用 ID 以及为提交记录的消息。)
git log --pretty=oneline
撤销修改:(已修改,但未提交)
放弃自最后一次提交后所做的所有修改,将项目恢复到最后一次提交的状态。句点.前留空格。
git checkout .
检出以前的提交:
先查看需要检出的提交所引用ID,记下前6位
git log --pretty=oneline
然后检出:(例be017b)
git checkout be017b
要回到分支 master
检出以前的提交后,将离开分支 master ,并进入 Git 所说的分离头指针( detached HEAD )状态。 HEAD 表示项目的当前状态,之所以说我们处于分离状态,是因为我们离开了一个命名分支(这里是 master )。
git checkout master
回退到之前的某个提交:
命令git reset --hard ,并在其中指定了要
永久地恢复到的提交的引用 ID 的前 6 个字符(例be017b)
git_practice$ git log --pretty=oneline
...
git reset --hard be017b
...
git status
...
git log --pretty=oneline
...
删除本地仓库:
在.git同一目录下执行
rm -rf .git
——————————————————————————
创建分支:
git branch 分支名字
切换到分支:(分支切换会改变你工作目录中的文件)
git checkout 分支名字
创建并切换到新分支:
参数 -b 是branch的意思
git checkout -b 新分支名
查看各分支所指对象:
git log --oneline --decorate
项目分叉历史:
该命令会输出你的提交历史、各个分支的指向以及项目的分支分叉情况。
git log --oneline --decorate --graph --all
合并分支:(在master分支下,将新分支合并到master)
git merge 新分支名字
本地删除分支:
git branch -D 分支名字
远程删除分支:
git push origin 分支名字
查看远程仓库:
可选参数 -v 会显示对应仓库的url
git remote [-v]
查看远程服务器仓库状态 :
这个命令列出了当你在特定的分支上执行 git push 会自动地推送到哪一个远程分支。 它也同样地列出了哪些远程分支不在你的本地,哪些远程分支已经从服务器上移除了, 还有当你执行 git pull 时哪些本地分支可以与它跟踪的远程分支自动合并。
git remote show 项目仓库地址/别名
克隆远程仓库:
clone下来的项目要用命令行 git init
初始化。
git clone 项目仓库地址
添加远程仓库地址:(例)
别名可以代表仓库地址,如: git fetch origin
git remote add 仓库地址别名(如origin) 项目仓库地址
远程仓库重命名:
git remote rename 旧名字 新名字
删除指定远程仓库:
此方式会导致所有和这个远程仓库相关的远程跟踪分支以及配置信息也会一起被删除。参数 rm 用全称 remove也可以
git remote rm 项目仓库地址/别名
本地推送项目主分支到远程仓库主分支(push):
可选参数 -u 作用:如无远程主分支则创建(用于初始化远程仓库)
git push -u 仓库地址(或别名) 分支名
远程拉取跟合并:
git pull = git fetch + git merge
git fetch
只会将本地库所关联的远程库commit ID 更新到最新(上一次抓取之后的所有新推送)
git merge
合并分支
git pull
将本地库所关联的远程库commit ID 更新到最新的同时,还自动合并了远程仓库的代码(可能会冲突)
git命令log和reflog区别:
git log
命令可以显示所有提交过的版本信息
git reflog
可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
git命令status和diff区别:
git status
随时掌握工作区状态,是否有修改
git diff
可以查看修改的具体内容(difference)
git裸库( bare repository)
裸库不含项目源文件,仅有 .git 目录,包含记录着版本历史的文件,用来实现数据共享和同步
创建裸库:
git init --bare 目录名
克隆 裸库:
git clone E:/位置 目录名
执行提交git commit
推送git push
如果裸仓库直接调用 git pull 出错,就先git push操作一次。