Git代码管理
1、相关概念
- 文件状态
- 未跟踪(Untracked)
- 未修改(Unmodified)
- 已修改(Modified)
- 暂存区(Staged)
- 三个工作区域
- 工作区(Working Directory)
- 暂存区(Staging Area)
- 仓库区(Repository)
- 工作树(Worktree)
2、git工作流程
- 基于 Git 的远程仓库
3、git命令
(1)Git 同步命令
A、克隆远程仓库: git clone <url>
;
-
提示:clone成功就已经初始化了,这是在远程仓库已有项目情况下的初始化;
-
HTTPS连接:使用给定 URL 即可 clone,在 push 时验证用户名和密码。
- 配置全局帐号:
- 配置用户名:
git config --global user.name "your name"
- 配置邮箱:
git config --global user.email "your_email@youremail.com"
- 配置用户名:
- 验证配置结果:
git config --global --list
- 配置全局帐号:
-
SSH连接:需要提前添加 SSH Key,在 push 时不需要输入用户名,配置 SSH 时设置了密码才需要输入密码。
- 1、生成 SSH Key:
ssh-keygen -t rsa -C "your_email@youremail.com"
; - 2、连敲三次回车键。
- 3、到对应目录下找生成的公钥和密钥。
- 4、将公钥内容配置到远程仓库即可使用SSH链接进行clone;
- 1、生成 SSH Key:
B、初始化仓库
- 在已存在的目录中初始化仓库:
git init
;- 提示:这是远程仓库没有项目的情况下的初始化,也就是本地文件没有被git管理,首次使用git管理时使用;
- 关联远程仓库:
git remote add origin <url>
;- 提示:本地有一个同项目名的空项目没有代码,要想将本地空仓库和远程仓库进行连接时使用,因为本地参考是空的,所以连接之后需要从远程仓库拉取代码到本地;此时(首次)拉取代码需要使用命令:
git pull --allow-unrelated-histories origin master
;
- 提示:本地有一个同项目名的空项目没有代码,要想将本地空仓库和远程仓库进行连接时使用,因为本地参考是空的,所以连接之后需要从远程仓库拉取代码到本地;此时(首次)拉取代码需要使用命令:
C、拉取远程仓库:git pull
;
(2)Git 修改命令
- 跟踪新文件:
git add <file>/<directory>
; - 提交更新。
- 提交到本地仓库:
git commit -m "comments"
- 已修改文件跳过使用暂存区域:
git commit -a -m "comments"
- 提交到本地仓库:
- 推送到远程仓库:
git push
;- 首次推送需要使用命令:
git push --set-upstream origin master
;
- 首次推送需要使用命令:
(3)Git 常用调试命令
- 检查当前文件状态:
git status
; - 查看已暂存和未暂存的修改:
- 比较当前文件和暂存区域快照之间的差异:
git diff
; - 查看已暂存的将要添加到下次提交里的内容:
git diff --staged
;
- 比较当前文件和暂存区域快照之间的差异:
- 撤销操作:
- 撤销对文件的修改:
git checkout <file>
; - 取消暂存:
git reset HEAD <file>
;
- 撤销对文件的修改:
- 移除文件。
- 删除本地文件:
git rm -f <file>
;不影响远程仓库,除非删除之后重新提交到远程仓库; - 移出暂存区:
git rm --cached <file>
;
- 删除本地文件:
- 忽略文件,有些文件无需纳入Git管理,比如日志文件或者编译过程中创建的临时文件,那就将这些文件放入到“
.gitignore
”文件j夹中;
4、git日志分析与检索
- git日志查看:
git log
; - 图形化显示日志:
git log --graph
; - 筛选时间:
git log --since='2023-02-02 00:00:00'
; - 筛选作者
git log --author='git对应的账号'
; - 筛选描述:
git log --grep='commit内容'
;
5、分支管理
- 概念:每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支;
- 新建分支:
- 新建分支,但仍然停留在当前分支:
git branch 分支名
; - 新建分支并直接切换至该分支:
git checkout -b 分支名
;
- 新建分支,但仍然停留在当前分支:
- 查看分支:
- 列出所有本地分支:
git branch
; - 列出所有远程分支:
git branch -r
;–remote; - 列出所有本地与远程分支:
git branch -a
;–all;
- 列出所有本地分支:
- 切换分支:
- 切换到指定分支:
git checkout 分支名
;
- 切换到指定分支:
- 删除分支:
- 删除指定分支:
git branch -d 分支名
;–delete;
6、git合并与冲突
-
合并分支:
-
合并指定分支到当前分支:
git merge 其他分支 本分支
;
-
变基,重新设置基准:
git rebase 其他分支
;
-
-
解决冲突:
- IDE 中解决冲突:选择要保留的内容点击 Accept,保存代码,再次提交,之后进行合并。
- 文件中解决冲突:保留需要的内容,删除其余内容,去掉分割线,保存代码,再次提交,之后进行合并。
-
冲突解决流程:
- 在本地当前分支上,修改冲突内容。
- 执行
git add .
添加到暂存区。 - 执行
git commit -m '提交说明'
提交到本地仓库,完成合并。 - 执行
git push
提交到远程仓库。