本文总结了常见的十二个git使用场景的处理方法,足够应对日常学习工作中对git的使用
一、将本地项目上传GitHub
如果是新项目,本地还没有代码,或者想直接使用远程的代码
Git init
git clone <远程仓库地址>
然后直接在该项目中修改
如果是一个本地开发的项目,想要上传到GitHub
- 首先新建GitHub仓库
git init
- 然后添加远程仓库
git remote add origin https://github.com/lsl1229840757/esrimatch.git
- 如果GitHub上添加了Readme文件或者ignore文件,意味着在GitHub上已经存在了一个独立的git树,需要在拉取的时候将本地Git树和远程Git树融合
git pull origin <想要操作的分支> --allow-unrelated-histories
git push -u origin <想要操作的分支>
- 如果添加错了,可以remove掉远程库,要使用本地名称(一般使用origin)remove掉
git remote -v //查看远程仓库地址
git remote rm origin //删除远程origin
二、本地分支管理
| 指令 | 作用 |
|---|---|
| git branch -a | 查看所有分支 |
| git branch <分支名> | 新建指定分支 |
| git branch -d <想要删除的分支> | 删除指定分支 |
| git branch -M <新的分支名> | 修改当前分支名称 |
三、清除已有的修改
情况一:工作区有修改,暂存区未暂存,还原到上次提交
git checkout [--] <文件名>
(--的作用是表明后面的是文件名而不是分支,因为git checkout还有切换分支的作用,可以不加)
| 位置 | 情况一 | 执行后 |
|---|---|---|
| 工作区 | Version1 | Version0 |
| 暂存区 | version0 | Version0 |
| 上一次提交 | Version0 | Version0 |
情况二:工作区有修改,已提交暂存区,想舍弃暂存
git reset [--hard] [HEAD] <文件名>
(丢弃暂存区的更改,不修改工作区,执行后会提示工作区的修改情况)
| 位置 | 情况一 | 执行后 |
|---|---|---|
| 工作区 | Version1 | Version1 |
| 暂存区 | Version1 | Version0 |
| 上一次提交 | Version0 | Version0 |
情况三:工作区有修改,提交暂存区后,又进行了后续修改,想退回到暂存区的状态
git checkout [--] <文件名>
| 位置 | 情况一 | 执行后 |
|---|---|---|
| 工作区 | Version2 | Version1 |
| 暂存区 | Version1 | Version1 |
| 上一次提交 | Version0 | Version0 |
情况四:工作区有修改,提交暂存区后,想要回退到上一次提交时的状态
git reset [--hard] [HEAD] <文件名>
git checkout --<文件名>
| 位置 | 情况一 | 执行后 |
|---|---|---|
| 工作区 | Version1/version2 | Version0 |
| 暂存区 | Version1 | Version0 |
| 上一次提交 | Version0 | Version0 |
四、取消文件跟踪
修改.ignore文件,增加要忽略的文件
git rm -r --cached <文件名>
可以直接执行一次提交,或者跟随下一次代码修改一起提交
git add .
git commit -m "你的注释"
五、退出编辑模式
合并代码时,完成merge操作后会进入一个编辑页面,编写merge记录,第一次可能不止如何操作,一般我们都会直接退出
- 按键盘上的
i键可进入插入模式 - 这时可以修改最上方的黄色部分,改成你想写的合并原因
- 按键盘上的
Esc键退出插入模式 - 最后在最下面输入
:wq后按回车键即可
六、版本回退
git reset --hard HEAD^
(完全切换到其他版本,HEAD^指上一个版本,HEAD^指上上个版本,可以查看log确定回退的版本)
七、缓存修改
有些修改未完成,想保存修改,使用git stash命令
| 命令 | 作用 |
|---|---|
| git stash save "缓存信息" | 缓存修改 |
| git stash list | 查看缓存列表 |
| git stash pop [stash@{num}] | 弹出缓存 (默认弹出首个缓存) |
| git stash drop [stash@{num}] | 删除缓存(默认删除首个缓存) |
八、利用码云下载GitHub项目
github在国内的clone的速度较慢,比较快的方法时使用码云,先fork到码云上,再从码云上clone到本地,然后修改.git文件夹下的config文件,将origin地址改为github上的地址
九、关于SSL和超时错误
都是因为网路问题,切换VPN或者多尝试几次一般就好了。
十、强制结束merge
提示:All conflicts fixed but you are still merging
rm -rf .git/MERGE
十一、GitHub合作
首先需要在GitHub仓库的Settings中邀请合作者
当合作者同一邀请后才能提交代码。
只在自己的分支上编写代码
十二、合作标准流程
1. 在 mybranch 分支(私人开发分支)上执行git pull mybranch
2. 更新mybranch分支代码
3. git push mybranch (推送私人开发分支)
4. git checkout dev (切换到开发汇总分支)
5. git pull dev (拉取开发汇总分支)
6. git merge mybranch (融合私人开发分支),如有冲突解决冲突,然后 git add, git commit
7. git push dev (推送开发分支)
8. git checkout mybranch (切换私人开发分支)
9. git merge dev (融合合并好的开发会中分支)
最后,多使用IDE提供的git工具,少自己写命令(容易写错www)