- git是用树结构管理历史代码版本.
- 文件名变绿表示已经加到了暂存区里(
git add 文件名
), 每次commit之后暂存区都会清空. git restore --staged 文件名
和git rm --cached 文件名
都表示把文件从暂存区里删掉, 只不过前者表示还需要管理这个文件, 后者表示直接删了git add .
就是在如果你修改了很多文件的情况下, 把它们就加入到暂存区的一个简写git log --pretty=oneline
把所有版本显示的紧凑的写法- 回滚是不会将原来的版本删掉的, 只用通过7就可以又找回来了
git reflog
记录走过的路径, 找到版本号(下图中前面黄色的部分). 然后利用git reset --hard 版本号
, 回滚到某一特定版本
就比如说我这里的005f7cd这个版本号, 我是在readme.txt里加入了333后持久化(commit)后没取名字, 我就回滚到上一个版本add 222
, 然后这时打开readme.txt里面就还是111 222, 就重新加入333然后加到暂存区然后持久化并取名333, 看到的git log
才是下面的样子
git restore 文件名
, 就是说如果你当前在工作区(vim 文件名)里的修改不想要了, 就可以把你当前工作区的修改变成你暂存区存的那个版本, 那暂存区里目前啥也没有的话就是变成最新持久化的那个版本(所以如果你暂存区里有东西并且暂存区的那个版本也不想要了, 那么就先通过git restore --staged 文件名
把暂存区的东西删掉, 再git restore 文件名
, 这样就回滚到了最近持久化的那个节点的内容)- 不管有多少个分支都公用一个暂存区
- 将本地分支合并到云端, 先在本地创建一个分支(比如说叫dev5),
git checkout -b dev5
vim readme.txt // 对文件做修改
// 然后这个时候不能直接git push, 不然就感觉像是相当于直接合并分支并上传到云端了, 导致云端和本地都没有dev5分支了, 但是对文件的修改还在
// 这个时候要先回到主分支
git checkout master
// 然后再回到dev5分支
git checkout dev5
// 然后再git push
// 这个时候会出现提示, 说云端还没有dev5这个分支
/*fatal: The current branch dev55 has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin dev5*/
// 然后我们就用它给的这个命令, 把dev5这个分支上传到云端
git push --set-upstream origin dev5
然后本地再把这个分支删掉, 这样就会使得云端有这个分支而本地没有的情况, 这个时候就可以再把云端的分支给git pull
下来, 总之就是想告诉你本地和云端的分支可以这样搞来搞去