什么不属于网站推广软件,城乡建设网站首页,网站创建人是,青岛电子商务网站建设git是最常用的版本控制工具#xff0c;我对其进行了整理后续补充#xff0c;这个文档欢迎大家来讨论#xff0c;当前我的视频梳理#xff1a; git小白进阶之路_哔哩哔哩_bilibili#xff0c;非常希望大佬们能够批评指正#xff0c;并多多交流。 目录
初始配置
配置账号…git是最常用的版本控制工具我对其进行了整理后续补充这个文档欢迎大家来讨论当前我的视频梳理 git小白进阶之路_哔哩哔哩_bilibili非常希望大佬们能够批评指正并多多交流。 目录
初始配置
配置账号密码
配置ssh-key
添加公钥在远程仓库
git工作流
git文件状态
git别名
git撤销
1.从本地仓库 到 暂存区
2.从暂存区 到 工作目录
3.从本地仓库到工作目录
4.修改刚才提交的注释
5.回滚提交
git commit注释格式
git分支
拉取代码
提交代码
追溯代码
合并代码
git merge相关
git cherry-pick 相关
打补丁
git format-patch
git apply
git am
历史记录
调整历史记录
贮藏改动
git stash贮藏
列出所有贮藏的改动:
应用stash
丢弃贮藏
远程仓库Remote
其他整理
1.解决git无法处理wsl虚拟机中的项目
2.设置git内部环境变量
图形工具
参考文档 初始配置
配置账号密码
git config --list
# 设置git的name
git config --global user.name determination
# 设置git的邮箱
git config --global user.email XXXX.XX.conm
配置ssh-key
ssh-keygen -t rsa -C usernameemail.com
添加公钥在远程仓库
获取公钥在~/.ssh目录下
C:\Users\24964\.ssh目录下 cd ~/.ssh
ls
# 查看公钥
cat id_rsa.pub git工作流 git文件状态 对换行符的替换
git config --global core.autocrlf false git别名
参考Git - Git 别名
格式git config --global alias.alias-name command
设置 Git 命令别名例如
$ git config --global alias.st status
# 设置commit别名
git config --global alias.ci commit
# 设置status别名
git config --global alias.st status git撤销
https://www.cnblogs.com/lfxiao/p/9378763.html
撤销commit并保留刚才的commit
1.从本地仓库 到 暂存区
# 不删除工作目录代码撤销到commit到暂存区
git reset --soft HEAD^
2.从暂存区 到 工作目录
# 不删除工作目录代码撤销到工作区
git reset HEAD .
3.从本地仓库到工作目录
# 不删除工作空间代码撤销commit、add
git reset --mixed HEAD^
# 相当于上述两个即 git reset --soft HEAD^ 和 git reset HEAD .# 删除工作代码撤销commit、add
git reset --hard HEAD^
4.修改刚才提交的注释
# 修改最后一次提交可用来修改提交信息。
git commit --amend
5.回滚提交
# 回滚提交创建一个commit其实内容是回滚版本的
git revert git commit注释格式
对于小型项目格式可以参考使用 commitizen 规范 Git 提交说明 类型 说明 example feat 新功能 feat:添加XXX接口 fix 修复bug fix:修复XXX bug style 格式化变动不影响代码逻辑 style:格式化代码 improvement 对当前功能改进 improvement:改进功能 refactor 重构 refactor:重构 test 添加或修改test代码 test:添加XX测试代码 chore 杂项不修改源代码与测试代码 chore revert 撤销 revert: git分支
git分支本质就是指向提交对象的指针HEAD指针指向当前的本地分支。
# 查看当前本地分支
git branch# 切换分支
git checkout branch_name# 合并分支
git merge branch_name
默认快进合并fast-forward merge简单的将指针推进 非快进合并多出一个合并节点看起来会更清晰。 拉取代码
从远程仓库取回所有分支的更新但不会修改本地工作目录的内容拉取后的更新需要本地再合并,此时HEAD指针不变
# 拉取仓库代码更新
git fetch# 将会提示分支可以快进
git status# 合并分支
git merge 或 git rebase
git pull git fectch git merge
拉取远程代码并且自动与本地的合并
git pull
git pull --rebase git fectch git rebase
rebase 会重新应用本地的提交这会使历史记录是线性的。在开发过程中推荐总是使用git pull --rebase 更新代码。
git pull --rebase 提交代码
# 暂存
git add dir# 提交到本地仓库
git commit -m message# 修改最后一次提交
git commit --amend# 提交到remote
git push
追溯代码
由于commit-id一般不方便记忆开发过程中在简单情况可以用~和^来追溯版本。
ref~表示第一个父级等价ref~1ref~2表示 第一个父级的第一个父级
ref^表示第一个父级等价于ref^1)ref^2表示提交的第二个父级
在简单情况可以用ref~或^来追溯复杂情况直接用commit-id会更方便。 合并代码
git merge相关
# 默认快进合并
git merge
# 非快进合并
git merge --no-ff
git cherry-pick 相关
git cherry-pick:git cherry-pick 教程 - 阮一峰的网络日志
# 合并提交-x 在提交信息末尾追加来源-s 追加操作者签名。
git cherry-pick -x commit# 合并多个连续的提交左开右闭区间。
git cherry-pick commit1..commit2# 合并多个连续的提交左闭右闭区间。
git cherry-pick commit1^..commit2
打补丁
git提供两种打补丁方式1git diff 生成的UNIX标准补丁.diff文件不带有commit记录 2. git format-patch 生成的git专用.patch文件带有commit记录信息
可以参考https://www.cnblogs.com/ArsenalfanInECNU/p/8931377.html
git format-patch
# 生成最近n次提交的补丁
git format-patch HEAD~n
git apply
git apply不会将commit message等打上去打完patch后需要重新git add和git commit相当于你改动的代码
git apply XXXX.patch# 查看patch的情况
git apply --stat XXXX.patch# 检查patch是否能够打上如果没有任何输出则说明无冲突可以打上
git apply --check XXXX.patch
git am
git am会将patch的所有信息打上去并且不用add、commit,因为他会应用commit上去信息是patch上面的的author、message等等不是打patch的。 # 打入补丁会生成提交--keep-cr 防止回车符被移除导致打补丁失败冲突时可使用 --reject 查看冲突。
git am --keep-cr XXXX.patch# 添加-s或者--signoff还可以把自己的名字添加为signed off by信息作用是注明打patch的人是谁因为有时打patch的人并不是patch的作者
git am --signoff XXXX.patch
历史记录
# 查看与某个字符串 string 相关的改动可用来查看某个函数相关的改动。
git log -S string# 查看一个文件或目录的历史记录可用来查看某个文件是何时被删除的。
git log -- path
Git 会在后台保存一个引用日志reflog引用日志只存在于本地仓库。每一次提交或改变分支引用日志都会被更新。可以此恢复丢失的提交。
# 查看本地仓库 HEAD 指针的所有变更可用于恢复丢失的代码。
git reflog# 追踪代码改动。实际开发过程中建议使用 Git 可视化工具。
git blame
调整历史记录
在开发过程中很多情况我们都可能需要修订历史记录eg信息填错、某条记录代码有问题、某条记录代码太多想要拆分在代码提交到远程仓库之前我们可以随便在本地修改历史记录。
git没有修改历史记录的工具但是可以通过变基命令来变基系列提交来达到修改历史记录的目的。
# 以交互方式重新应用最近n次的提交可对提交进行修改注意不要修改到已经推送到远程仓库的提交。
git rebase -i HEAD~n
git rebase -i 合并多个commit提交-Git-安卓笔记本 git 为我们提供了以下几个命令
pick保留该commit缩写:preword保留该commit但我需要修改该commit的注释缩写:redit保留该commit, 但我要停下来修改该提交(不仅仅修改注释)缩写:esquash将该commit和前一个commit合并缩写:sfixup将该commit和前一个commit合并但我不要保留该提交的注释信息缩写:fexec执行shell命令缩写:xdrop我要丢弃该commit缩写:d
在编辑模式中修改,最后保存。 例如我想把我写的这两个commit合并到一块 git rebase -i HEAD~2 编辑当前合并之后的commit message 对多个本地commit合并完成。 贮藏改动
使用git stash命令保存和恢复进度_git stash用法-CSDN博客
https://www.cnblogs.com/zndxall/p/9586088.html
当你工作做一半的时候你的代码已经有了一些改动你可能需要切换到另一个分支干活或更紧急的事情处理这是你不想因为这个没做完的改动而commit。这时就可以git stash将代码贮藏。贮藏的代码保存在一个栈上可以在任何时候重新应用。
或者是你在拉取代码时遇到冲突你可以先git stash贮藏起来那么就可以顺利拿到最新代码在重新应用解决冲突。
git stash贮藏
贮藏文件的修改请注意未跟踪untracked的不会贮藏例如新增的文件没有add的话不会贮藏
使用 -u 也会贮藏未跟踪Untracked的文件。
# 跟踪改动Modified的文件请注意untracked不会贮藏
git stash# untracked也会贮藏
git stash -u# 可以添加备注,可以方便查找
git stash save save message
列出所有贮藏的改动:
git stash list
应用stash
请注意 git stash apply不会在对应的栈中删除git stash pop 会应用最近的一次贮藏改动并出栈
# 应用最近一次的 贮藏 改动
git stash apply# 跟上shach{n}指定对应记录
git stash apply stash{n}# 应用最近一次的贮藏的改动,并丢弃这条
git stash pop
丢弃贮藏
# 丢弃最近一次贮藏的改动后面跟上 stash{n} 可指定对应的记录
git stash drop# 丢弃所有的贮藏改动
git stash clear远程仓库Remote
克隆代码到本地仓库
git clone XXXX.git
管理远程
git remote作用
1.git remote 不带参数列出已经存在的远程分支
2.git remote -v | --verbose 列出详细信息在每一个名字后面列出其远程url此时 -v 选项(译注:此为 –verbose 的简写,取首字母),显示对应的克隆地址。
3.git remote add url 添加一个远程仓库
4、git remote rm name # 删除远程仓库 5、git remote rename old_name new_name # 修改仓库名 # 删除远程仓库分支emergent-fix
git push origin --delete emergent-fix 其他整理
1.解决git无法处理wsl虚拟机中的项目
fatal: detected dubious ownership in repository at //wsl.localhost/Ubuntu/home/wps/projects/ksogit/xfx
To add an exception for this directory, call:
git config --global --add safe.directory * 2.设置git内部环境变量
在 ~/.bashrc 中加入
例如我的
# 在windows中C:\Program Files\JetBrains\GoLand 2023.3\bin
export PATH/c/Program Files/JetBrains/GoLand 2023.3/bin:$PATH
那么就可以在git当中使用goland64 . 用goland来打开当前文件夹作为项目了。
图形工具
tortoisegit
tortoise git无法管理wsl下的库-CSDN博客
文件上的图标可以反映出当前文件或者文件夹的状态.例如 sourcetreehttps://www.cnblogs.com/Can-daydayup/p/13128633.html 参考文档
Git官方推荐书籍Git - BookLearn Git Branching