1. git reset到过去的版本后有什么方法可以回到未来的版本:
可以直接在终端中向上查找历史commit后的版本
git reflog 可以查看命令历史,以便确定要回到未来的哪个版本
2.暂存区
git add实际上就是把文件放到stage暂存区
3.untracked: 是没有被添加过的新文件 (删除untracked的文件可以用git clean -f)
not staged: 是add过的文件,即跟踪文件,再次修改没有add
4.git diff 和git diff --cached
git diff 是未放入暂存区的文件(也就是工作区)和暂存区的文件的比较,也就是修改后还没有暂存起来的变化内容
git diff --cached 比较的是暂存区和分支里的内容差异,已经暂存的想要添加到下次提交里的内容
git diff HEAD 是工作区和仓库分支的比较
解释: 暂存区的文件目录和最近一次git add之后工作区的文件目录是一直的,因此当修改完文件使用git diff可以看到工作区和暂存区的差异)(此时暂存区是上一次add之后的目录,而工作区是刚修改完的样子),使用git add加入新的修改,再git diff就不会有输出,因为咱出去被更新为最新的工作目录)
git diff --cached同理,只是比较的是暂存区和分支里的内容差异(分支保持上一次git commit的目录)
5.撤销修改: git co -- file 撤销工作区相对于暂存区的想改
git co HEAD file 撤销暂存区的修改,重新放回工作区
6.分支合并: 在master上: git merge master
几种合并方式: Fast-forward: “快进模式”, 直接把master指向dev的当前提交
需要手动合并
git merge --no-ff -m "merge with no-ff" dev
7.有关git stash
git stash list: 查看stash的列表
git stash pop: 恢复最近一次的改动
git stash pop stash@{id}或者 git stash apply stash@{id}: 据说可以pop某一个特定的stash
pop和apply的区别: 貌似是pop执行后会将stash id从stash list删除,apply不会删除
git stash clear: 清空stash list
git stash drop [<stash>]: 删除某一个stash进度,默认删除最新的。([<stash>]里面的stash代表进度的编号形如:stash@{0}, <>尖括号内的必填)
8.多人协作开发时可能遇到no tracking information的问题: 说明本地分支和远程分支的链接关系没有创建,可以用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
9.本地分支与远程分支的追踪关系:
git branch -vv: 查看当前详细分支信息(可看到当前分支与对应的远程追踪分支)
修改对应的远程分支: 进入.git文件,进入其中的config文件,直接修改merge = refs/heads/master
为merge = refs/heads/dev
10.没有详细参阅rebase部分的内容
最后的最后,如果想给当前的项目去除版本管理,请用 find . -name ".git" | xargs rm -Rf