文章目录
git clone 克隆项目
默认克隆master分支
# 默认克隆master分支
git clone url
# 指定分支
git clone -b xxxbranch url
# 修改后,本地提交
# 推送远程前,先拉取当前分支的最新内容(远程无当前分支时,可以直接推送)
git pull origin xxxbranch # 增量式
git push origin xxxbranch
- 后续也是在对应的分支上,push(推送)/ pull(更新);
- git命令行操作必须在仓库的根目录;
- 本地推送到远程的目录中不包含的远程文件,则在远程删除(覆盖式)。
- 分支合并时,合并的目录&文件名,以覆盖的方式合并到目标分支;目标分支中原来的没有被覆盖的文件则删除。
- git pull 拉取更新是增量式。
- 尽量不要多人修改同一个文件,会产生冲突!!
创建分支
# 当前分支复制,拉出新分支
git checkout -b new_branch
# 查看分支
git branch -v
# 切换分支,切换前 原分支需要提交
git switch xxbranch #
# 切换分支时,注意保存修改,提交本地
# 删除分支
git branch -d xxbranch # -D
# 合并分支
git switch b1
git merge b2 # 将b2合并到b1分支
- dev分支的内容更新后,pull 拉取更新;
- 创建新分支release,并pull远程release(存在该远程分支的情况下);
- 然后将更新后的dev分支,本地合并到release(覆盖式),提交本地;
- 最后推送到远程release分支。
分支合并
- 本地合并,一个b1分支合并到b2分支;
- 个人仓合并,一个dev分支 合并到 release分支
- 个人仓向公共仓合并,对等分支或交叉分支合并。
- 公共仓fork到个人仓后,后续公共仓的更新、分支创建都不会同步到个人仓,只有本地pull公共仓,进行更新,然后提交到个人仓,最后向公共仓合并。
- 本地新建的分支是落后于远程分支的,必须pull,然后修改,提交。
- 合并到公共仓冲突时,若无法解决冲突,则可以考虑删除个人仓库(合并自动关闭),然后重新fork,重新克隆到本地,修改、提交、合并(pull request)…
gitignore文件
.gitignore文件用于忽略仓库的一些文件,不推送到远程仓库(会提交到本地仓库)。
如:
.idea是用户pycharm的配置信息;
.vscode是vscode工具的配置信息;
cache是缓存文件或者临时的文件
- 会扫描每个目录,去忽略目标文件
- 第一次提交前就要编辑好.gitignore,确定要忽略那些文件;否则后续可能出现不符合预期的情况;
- .gitignore 谨慎使用!!谨慎忽略文件。
- 不想提交的文件,可以提前删除,然后再提交。
提交代码被拒
Updates were rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes (e.g. ‘git pull …’) before pushing again.
若远程仓库没有对应的分支,则可以直接推送;
若有分支,则需要pull拉取更新,然后再推送。
报以上错误,因为推送时, 本地仓库分支的版本低于远程的版本。
解决:pull 合并更新
# 拉取远程, 并合并
git pull origin xxxbranch
# 推送
git push origin xxxbranch
切忌强制推送,会使用当前仓库进行远程覆盖!后续合并到公共仓也可能冲突。
合并后可能产生冲突
找到冲突的文件,修改冲突的部分,并重新提交,推送。
fatal: refusing to merge unrelated histories
在使用git pull拉取更新,合并分支内容时,报错!
解决:
git pull origin b1 --allow-unrelated-histories
创建分支解决bug
创建临时分支(复制),在临时分支解决bug,然后合并到主分支(覆盖),即可解决。
解决码云出现git@gitee.com: Permission denied (publickey).
因为这是ssh地址,需要配置ssh公钥。
- 生成ssh秘钥
# git bash 生成rsa 非对称性秘钥
ssh-keygen -t rsa -C "注释信息"
# 一直回车
# -t type 类型
# -C 注释信息
- 找到ssh公钥
# windows /C/User/lenevo/.ssh/id_rsa.pub
# 打开复制即可
- 配置gitee的ssh 公钥
- 然后就可以使用ssh的仓库地址,推送仓库,从而保证连接的安全性。
不再需要用户名、密码
gitee报错“remote: [session-1f47159e] Access denied“的解决方法
属于账号切换问题
$ git config --system --unset credential.helper
# 重新推送https地址(需要gitee用户名、密码)
git remote -v
git remote add origin https://xxx
git remote remove origin htts://xxx
git push origin master
# 重新输入用户名、密码