官网下载安装:https://git-scm.com/downloads
将文件夹初始化为git仓库
git init
** 设置全局用户**
git config --global user.name '用户名'
git config --global user.email '用户邮箱'
C:\Users\用户文件夹.gitconfig新建用户信息,在所有仓库下都可以使用。
设置局部用户
git config user.name '用户名'
git config user.email '用户邮箱'
在当前仓库下的config新建用户信息,只能在当前仓库下使用。
注:一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户。
当仓库中有文件增加、删除、修改,都可以在仓库状态中查看。
空文件夹不会被git记录
# 查看仓库状态
git status
# 查看仓库状态的简约显示
git status -s
工作区内容提交到暂存区
# 全部提交到暂存区
git add .
# 指定文件提交到暂存区
git add '文件名'
提交暂存区内容到版本库
git commit -m '版本描述信息'
查看历史版本
git log
# 精简版
git reflog
# 什么时间之后
git log --after=2022/11/7
git reflog --after=2022/11/7
# 什么时间之前
git log --before=2022/11/9
git reflog --before=2022/11/9
# 查看指定开发者的记录
git log --author '用户名'
git reflog --author '用户名'
撤销工作区操作:改、删(了解)
# 将所有修改的文件和删除的文件恢复
git checkout .
# 指定回复的文件
git checkout '文件名'
撤销暂存区提交:add的逆运算(很少使用)
# 将所有暂存区的文件拉回工作区
git reset HEAD .
git reset .
# 将指定文件从暂存区的文件拉回工作区
git reset HEAD '文件名'
git reset '文件名'
回滚到指定版本
# 回滚到上一个版本
git reset --hard HEAD^
git reset --hard HEAD~
# 回滚到上两个版本
git reset --hard HEAD^^
git reset --hard HEAD~~
# 回退到指定版本号
git reset --hard 版本号
(git log 和git reflog) ( git reset --hard,–mix,–soft)的区别
git log::命令可以显示所有提交过的版本信息如果感觉太繁琐,可以加上参数 --pretty=oneline,只会显示版本号和提交时的备注信息。
git reflog: 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
git reset --hard:全部删除,会彻底返回到回退前的版本状态,了无痕迹。
git reset --mix:保留工作目录,文件回退到未commit的状态。
git reset --soft:保留工作目录、暂存区 ,文件会回退到未 add(未到暂存)的状态。
总结:soft是撤销commit的提交,但工作区未提交的更改还是保留;mixed是撤销暂存区的提交,工作区的更改同样也保留;而hard是把工作区、暂存区、commit到仓库的三个版本都回滚了。
在仓库跟目录下创建.gitignore文件。
过滤文件内容
示例:
.idea 项目中的.idea文件和文件夹被忽略
*.log 项目中所有的.log文件和文件夹被忽略
__pycache__ 项目中的所有__pycache__文件和文件夹被忽略
script 项目中的script文件和文件夹被忽略
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
分支操作
# 创建分支
git branch 分支名
# 查看分支
git branch
# 切换分支
git checkout 分支名
# 创建并切换分支
git checkout -b 分支名
# 删除分支
git branch -d 分支名
# 查看远程分支
git branch -a
# 合并分支
# 把dev分支合并大master分支上
# 切换到master分支
git merge 分支名
新建空的gitee仓库
连接远程仓库
第一次push需要输入gitee账号和密码,以后就不用了。输入的信息永久保存在Windows凭据里。
git clone https://gitee.com/xuxiaoxu1/luffy_api.git
将项目文件复制到本地克隆的文件里,再将项目代码copy到克隆文件里
# 查看仓库已配置的远程源
git remote
git remote -v
# 删除远程源
git remote remove 源名
# 添加远程源
git remote add 源名 源地址
# 提交代码到远程源
git push 源名 分支名
# 克隆远程源
git clone 远程源地址
pull和push都可以提供选择不同的源,和不同的远程仓库交互。
生成/添加SSH公钥:https://gitee.com/help/articles/4181
你可以按如下命令来生成 sshkey:
ssh-keygen -t ed25519 -C "[email protected]"
# Generating public/private ed25519 key pair...
注意: 这里的 [email protected] 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。
按照提示完成三次回车,即可生成 ssh key。会在C:\Users\用户\.ssh文件夹下生成公钥和私钥。
复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加部署公钥」 ,添加生成的 public key 添加到仓库中。
添加后,在终端(Terminal)中输入
ssh -T [email protected]
首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You’ve successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。
添加成功后,就可以使用SSH协议对仓库进行操作了。
git clone 项目地址
git checkout dev
git add .
git commit -m '提交信息'
git pull origin dev
git push origin dev
出现冲突的原因:不同的人和你在同样的位置修改了代码,他先提交到远端仓库。你在提交的时候,先拉取代码,因为修改了相同地方的代码,产生了冲突。
解决:修改代码,如果功能一致,沟通出提交谁的代码。功能不一致,可都提交。修改完后,先提交到本地版本库,在推到远端。