1 git pull 下拉分支
拉取data_utility下icu分支,命令:
git clone -b icu https://github.com/xingqiuxia/data-utility.git
报错:
Error:RPC failed; result=35, HTTP code = 0
- 原因是git http缓存不足,问题出现有一定随机性
- 可通过设置缓存大小解决:
git config --global http.postBuffer 20M
2 git push上传文件
git add xxx
添加需要上传的文件 (git add .
表示添加当前目录下的所有文件)git commit -m '修改内容,做说明注释'
git push origin 本地分支名:远程分支名
本地分支名,可由命令git branch
获得,远程分支名是指GitHub上的分支名称
3 拉去主支,并合并到分支
git checkout master # 切换到主支
git pull
git checkout icu_dapeng # 切换到分支
git merge master
4 解决分支冲突
- 拉取两个存在冲突的分支
git clone -b (分支项目名) (主项目地址)
- 在VScode终端下运行
git merge
查看冲突 - 逐一解决带有黄色叹号标志的冲突
git commit
提交,git push origin
推送
冲突的解决选择
- Accept Current Change:选择当前分支(
git branch
可以查看当前分支,git checkout
可以切换分支)- Accept lncoming Change:选择当前分支外的另一分支
- Accept Both Changes:保留两者,以上下形式排列
- Compare Changes:比较具体的不同点
5 避免文件权限变更引起的修改
执行git diff 命令时出现文本权限的变化:
diff --git a/index.php b/index.php
old mode 100644
new mode 100755
通过设置filemode,避免NTFS文件权限变更引起的修改
git config --add core.filemode false
6 合并上游主分支的更新
当改动较多时慎重合并,并注意处理冲突问题
合并过程:
# 配置上游仓库
git remote add upstream [email protected]:liangliangyy/DjangoBlog.git
# 上游仓库配置删除:git remote remove upstream
git fetch upstream
# 之后只需要定期更新即可
git merge upstream/master
# 需要细致处理各种冲突
7 撤销不合理的操作
- 撤销本地尚未提交的修改:
git checkout .
(谨慎使用)或git restore <file>
恢复单个文件(推荐使用) - 撤销添加到暂存区的文件:
git reset <file>
- 撤销最近的一次本地(
commit
):git reset HEAD^
(仅回退,不修改) 或git reset --hard HEAD^
(回退+修改) - 撤销第一个本地提交(
push
):git update-ref -d HEAD && git rm --cached -r .
(更新指针+清除暂存区缓存) - 撤销本地分支上中间的某次提交:
git rebase -i <base-branch>
(需要丢弃的记录将pick
改为d
) - 撤销本地
git rm
的文件:git reset HEAD <file> && git checkout <file>
- 修改最新的提交(
commit
)信息:git commit --amend
(更早期的信息需要使用rebase
命令) - 撤销本地的merge:
git reset --hard HEAD^
(merge 操作相当于一次commit,因此用法类似) - 撤销本地的rebase:
git reset --hard ORIG_HEAD
- 撤销发生冲突的
merge
或rebase
:git commit --abort
或git rebase --abort
- 撤销
git pull
操作:先用git reflag
命令查看之前的操作,再git reset --hard HEAD@{1}
- 撤销
push
到远端的最近一次提交:git reset --hard HEAD^ && git push --force
(旧版的强制覆盖,谨慎使用) - 撤销一个
push
到远程的分支或者tag:git push origin -d <branch/tag>
以上撤销操作主要参考自视频:【GitFAQ-那些可以反悔的神操作】
8 端口阻塞:Connection timed out
现象:
- 能 ping 通
github.com
但ssh -T [email protected]
超时 - 超时报错
ssh: connect to host github.com port 22: Connection timed out
解决方案:
- 尝试使用 443 端口:
ssh -T -p 443 [email protected]
- 443 端口可用的情况下,修改配置文件
vim ~/.ssh/config
:
Host github.com
Hostname ssh.github.com
Port 443
- 其他解决方案:改用
https
协议(未尝试) - 其他可能原因:防火墙设置、DNS 问题、GitHub 网站问题
9 README 文件说明
README 文件一般指位于软件项目的根目录中的说明文档,旨在帮助用户和开发人员了解项目的目的、如何使用它以及如何为它做出贡献。这也是与潜在用户、协作者和贡献者进行交流的一种方式
清晰的 README 文件是区分项目质量的一个重要指标
常见的 README 文件结构
- 项目描述:建立项目的动机和解决的问题
- 功能说明:该项目使用的技术及其核心功能
- 快速上手:用户如何安装并使用该项目
- 其他:进阶资料、变更日志、贡献方式、许可证
撰写方式:MarkDown 或 reStructuredText
快速构建 README 的工具:readme.so、Make a README