Git 使用笔记
git pull 问题
- 今天在使用
git pull
拉取远程库版本时,出现如下错误:
fatal: No remote repository specified. Please, specify either a URL or a
remote name from which new revisions should be fetched.
- 按照错误提示,使用
git pull con master
『注:con
是建立的远程库连接,即git remote add con git@github.com:MrCheJinYing/Concurrency
』
出现如下错误提示:(错误还原不出来了,大概是下面这个意思)
fetal: exit unrelated-histories
- 用如下命令解决问题:
git pull con master --allow-unrelated-histories
git与远程库(remote repository)连接的方式
-
与远程库建立授权关系后(
ssh-keygen -t rsa -C "youremail@example.com"
),可以直接git clone git@github.com:username/repositoryName.git
此操作会自动建立本地库与远程库、本地主分支(master)与远程主分支(master)的联系,之后的pull和push操作即可进行,不需额外的操作
-
远程建立repository后,本地建立repository并推送,需要手动建立库、分支的联系
- 授权:
ssh-keygen -t rsa -C "youremail@example.com"
- 授权:
- 添加远程库:
git remote add origin(任意名字) git@github.com:username/repositoryName.git
- 建立分支关系:
git branch --set-upstream-to=origin/master(远程分支) master(本地分支)
- 先
git pull
再git push origin master
- 建立分支关系:
- 过程中有其他错误,可根据提示灵活处理
git branch
- 查看分支状态:
- 本地与远程:
git branch -va
- 查看本地分支:
git branch
- 查看远程分支:
git branch -r
- 本地与远程:
- 删除分支:
- 删除本地分支:
git branch -d [branch-name]
- 删除远程分支:
git branch -dr [origin/branch-name]
- 删除本地分支:
git commit 撤销后的恢复
一个意识:一些操作(merge、reset、revert等)都是针对本地库,而不是肉眼能看见的工作区,不要把工作区的当成本地库!
commit操作后,想撤销本次的变动(reset操作并不安全,会造成版本丢失)
-
git reset head^
:撤销commit提交,本地库恢复到上一个版本,工作区不变 -
git reset --hard head^
:撤销commit提交,本地库和工作区同时恢复到上一个版本
git status
用法:列出未追踪的文件、本地库与工作区之间的差异,追踪git add
、git commit
进展
处理工作区与本地库的差异
git checkout 不仅仅有切换分支的功能
工作区 —> 本地库:git checkout [filename]
本地库 —> 工作区:git add [filename]
git commit [filename] -m "commet"
git rm
- git rm file
- git rm —cache file
- git rm —cache -r directory
-
清除工作区,回到最近的版本
下面的例子要删除所有工作目录下面的修改, 包括新添加的文件. 假设你已经提交了一些快照了, 而且做了一些新的开发
- git reset --hard
- git clean -df
运行后, 工作目录和缓存区回到最近一次commit时候一摸一样的状态,git status会告诉你这是一个干净的工作目录, 又是一个新的开始了!
git checkout
-
检出新分支
git chekcout -b branch_name
等同于以下两步操作
git branch brach_name
git checkout branch_name
git revert
这条命令用于分布式代码管理的回滚
主要区别于git reset
,git reset <commit>
,会将该版本之前的版本全部抹掉。这样在多人合作的模式下,如果我们想回滚远程主分支中的代码,会抹掉其他人的提交,相当危险。
git revert <commit>
:撤销某个版本的提交,即只撤销这个版本的提交(这个版本提交了什么就撤销什么),并生成一个新的版本,原版本依然保留。这个新版本只提交到了本地库,还需要git push
到远程仓库,才能完成远程仓库代码的回滚。
Reference : 回滚错误修改