Git
Git
git下载
git别名alias配置
Windows上配置
1 | # 用户目录下 |
Mac上的配置
1 | alias gs="git status" |
ssh获取
- ssh -T git@github.com 检测是否配置成功了
- ssh-keygen -C “Your primary GitHub email address” 生成使用
- 当你在github上配置正确的时候 再次重复1过程看到下面这句话说明已经成功了。
Hi Aspire01! You’ve successfully authenticated, but g
does not provide shell access.
git 代码合并
- merge
- fast-forward
eg. git merge test 当待合并的分支在当前分支的下游时,会发生快速合并 相当于直接移动指针 - no-ff
eg. git merge -no-ff test 会在当前合并的分支新建一个提交节点 从而完成合并 - squash 将一个分支中的所有更改压缩成一个提交,并将其合并到另一个分支中。这种方式会创建一个新的合并提交,但只包含一个提交的更改。 svn就采用此种方式 与no-ff 非常相似 区别是不会保留对合如分支的引用
eg. 1. master 2. feature 当前处于master分支 通过squash执行合并操作 git merge –squash feature
- fast-forward
- rebase
这种方式会将一个分支的更改放在另一个分支的顶部,看起来像是它们是按顺序提交的。这种方式不会创建新的合并提交- git rebase 在分支合并代码 保持主干为完美线性
- 让本地的多个提交合并为一个 简化提交记录
- git rebase -i HEAD~3
- pick : 代表合并后的提交用这个提交的注释;
- s : squash命令的简写,代表合并提交中包含这个提交;
- d : 代表合并提交中排除这个提交
git cherry-pick
http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
git stash
stash命令保存当前工作进度,会把暂存区和工作区的改动保存起来
常用命令:
- git stash:保存当前改动
- git stash save ‘xxx’: 可以用于存储修改 并且将git的工作状态切回到上次的一次合法提交上 xxx为备注信息
- git stash list:显示保存进度的列表
- git stash pop:栈顶的内容会恢复到工作区 也可指定哪个名字
- git stash show:查看堆栈中最新保存的stash和当前目录的差异
- git stash drop:加上名称则是可以移除某个指定的stash
- git stash clear:删除所有的存储的进度
应用场景:
当你的开发进行到一半,但是代码还不想进行提交 ,然后需要同步去关联远端代码时.如果你本地的代码和远端代码没有冲突时,可以直接通过git pull解决,否则使用如下
git stash
git pull
git stash pop或者当你开发到一半,现在要修改别的分支问题的时候,你也可以使用git stash缓存 当前区域的代码
git stash:保存开发到一半的代码
git commit -m ‘修改问题’
git stash pop:将代码追加到最新的提交之后
意外drop stash 如何找回:
- git log –graph –oneline –decorate $( git fsck –no-reflog | awk ‘/dangling commit/ {print $3}’ )
- 恢复特定stash git stash apply stashId
参考:https://mp.weixin.qq.com/s/62YQORpsGCmKV4ydE2yTFw
git tag?
常用命令:
- git tag — 查看所有标签
- git tag -a v1.0 -m “版本1.0” — 创建带注释的标签
- git tag -d v1.0 — 删除标签
- git push origin –tags — 推送标签到远程仓库
- git push origin –delete tag v1.0 — 删除远程标签
- git show v1.0 — 查看标签信息
git其他操作命令
git常用命令
git init — 初始化一个git仓库
git config –system –unset credential.helper
git clone 地址 — 可以在github上下载项目
git clone -b feature git地址 — 拉取仓库的特定分支
git branch ** — 创建分支
git branch -m ‘xxxx’ — 修改分支名称
git checkout ** —切换分支
git branch -d dev(测试分支) —删除本地分支 远程删除了分支 本地仍然存在 git pull操作了也不行
git push origin –delete dev —删除远程分支
git checkout -b feature-branch origin/feature-branch — 检出远程的feature-branch分支到本地
git branch –set-upstream-to=origin/dev — dev为本地的分支
git add test.java —这是将工作区的文件添加到暂存区中
git commit -m ‘描述’ — 这是将暂存区的文件提交到本地仓库中
git commit –amend -m “新的修改提交信息” — 修改最后一次提交的信息
git remote add origin xxx —添加远程仓库地址 只能添加一个
git remote rm origin — 移除远程仓库地址
git push — 本地文件同步到远程仓库
git clean -d -fx — 清除没有添加到工作区的文件
git reset –hard HEAD^ — 代码回滚到上个版本
git reset –hard versionId(版本id 可在仓库中查看到)
git reset –soft versionId 与–hard不同的是,hard会丢失versionId后的提交代码,–soft则会将代码放到暂存区
git reset –hard origin/master — 代码回到指定的某个版本
Tips
git迁移并保留历史提交记录?
- git remote -v 查看远程仓库情况
- git remote add xxx(origin-name) xxx(新的远程仓库地址)
- git push xxx(origin-name) –all –force 同步所有老仓库的分支信息给新仓库 第一次可以直接使用–force
- 补充:git push xxx(origin-name) dev:develop 提交老仓库的dev分支信息到新仓库的develop分支
本地分支和远端分支不一样的情况?
- git remote update origin –prune
当在.gitignore中添加忽略文件的时候,却发现不起效果怎么办?
- 当存在添加却不起效果的时候,很有可能当前文件或者文件夹内容已被git管理,而忽略中只能忽略未被添加到git管理的文件
- git rm -r –cached .swc(eg.) 执行此命令,删除当前文件可解决
问题记录
Git报错之-refusing to merge unrelated histories?
https://blog.csdn.net/u012145252/article/details/80628451Git报错之-you are not allowed to push code to protected branches on this project?
https://blog.csdn.net/zzh920625/article/details/78087669ssh: connect to host github.com port 22: Connection timed out
解决方案
https://blog.csdn.net/hdm314/article/details/119947761fatal: unable to access ‘https://github.com/.../.git': Could not resolve host: github.com
解决方案:
git config –global –unset http.proxy
git config –global –unset https.proxyfatal: Authentication failed for ‘https://git.weixin.qq.com/wx_wxde49dccaca3d346d/zsh.git/ ?
描述:从dev分支拉出本地分支release后,想要将release推送到远程分支,出现了上面的提示。
解决方案:
输入 git config –system –unset credential.helper 命令之后,出现以下错误
error: could not lock config file C:/Program Files/Git/etc/gitconfig: Permission denied
然后找到此C:/Program Files/Git/etc文件夹,给与所有权限之后,重新执行以上命令,成功。
之后 git config –global user.name “xxx”
git config –global user.email “xxx”
成功解决问题。git遇到冲突时打开文件不显示Accept current change等选项?
https://blog.csdn.net/qq_36279445/article/details/126603336