Git 工作总结
git 工作总结
易忘操作
要随时掌握⼯作区的状态,使⽤git status命令。
如果git status告诉你有⽂件被修改过,⽤git diff可以查看修改内容。
git log 查看日志
- 在Git 中,用HEAD表示当前版本,也就是最新的提交,上⼀个版本就是
HEAD^
,上上⼀个版本就是HEAD^^
,当然往上100 个版本写100个^⽐较容易数不过来, 所以写成HEAD~100
。 - 回退版本时,使用git reset 命令。
git reset --hard HEAD^
- git reflog 记录每一次命令。
左边是工作区,add 以后是暂存区,然后commit 提交到分支。
撤销修改
git checkout -- file
可以丢弃⼯作区的修改.
命令git checkout – readme.txt意思就是,把readme.txt⽂件在⼯作区的修改全部撤销,这 ⾥有两种情况:
⼀种是readme.txt⾃修改后还没有被放到暂存区,现在,撤销修改就回到和版本库⼀模⼀ 样的状态;
⼀种是readme.txt已经添加到暂存区后,⼜作了修改,现在,撤销修改就回到添加到暂存 区后的状态。
总之,就是让这个⽂件回到最近⼀次git commit或git add时的状态。
git checkout – file命令中的“–”很重要,没有“–”,就变成了“创建⼀个新分⽀”的命 令,我们在后⾯的分⽀管理中会再次遇到git checkout命令。
git reset命令既可以回退版本,也可以把暂存区的修改回退到⼯作区。当我们⽤HEAD时, 表⽰最新的版本。
git reset HEAD readme.txt
就可以把暂存区的修改退出工作区。
1 | read.txt 还没有add ,想丢弃修改,用 git checkout --read.txt |
git checkout –file其实是⽤版本库⾥的版本替换⼯作区的版本,⽆论⼯作区是修改还是删除,都 可以“⼀键还原”。
远程操作
要关联⼀个远程库,使⽤命令git remote add origin git@server-name:path/repo-name.git;
关联后,使⽤命令git push -u origin master第⼀次推送master分⽀的所有内容;
此后,每次本地提交后,只要有必要,就可以使⽤命令git push origin master推送最新修改;
分支
HEAD严格来说不是指向提交,⽽是指向master,master才是指向提交的,所以,HEAD指向的就是当前分⽀。
⼀开始的时候,master分⽀是⼀条线,Git⽤master指向最新的提交,再⽤HEAD指向 master,就能确定当前分⽀,以及当前分⽀的提交点:
每次提交,master分⽀都会向前移动⼀步,这样,随着你不断提交,master分⽀的线也越 来越⻓长。
当我们创建新的分⽀,例如dev时,Git新建了⼀个指针叫dev,指向master相同的提交, 再把HEAD指向dev,就表⽰当前分⽀在dev上:
创建分支 git checkout -b dev
创建dev分支,并切换到dev分支。
git checkout命令加上-b参数表⽰创建并切换,相当于以下两条命令:
1 | git branch dev |
git branch 查看所有分支
现在,我们把dev分⽀的⼯作成果合并到master分⽀上:
1 | git merge dev |
git merge命令⽤于合并指定分⽀到当前分⽀。
解决冲突
这种情况下不能快速合并分支(直接改变master的位置),git 会进行试图合并。合并完成下面的样子
bug分支
Git还提供了⼀个stash功能,可以把当前⼯作现场“储藏”起来,等以后恢复现场后继续⼯作。
1 | $ git stash |
现在,⽤git status查看⼯作区,就是干净的(除⾮有没有被Git管理的⽂件),因此可以放⼼地创建分⽀来修复bug。
修复完bug后,返回之前的分支,可以看到工作区是干净的,用git stash list
查看工作现场。
⼯作现场还在,Git把stash内容存在某个地⽅了,但是需要恢复⼀下,有两个办法: ⼀是⽤git stash apply
恢复,但是恢复后,stash内容并不删除,你需要⽤git stash drop来删 除; 另⼀种⽅式是⽤git stash pop
,恢复的同时把stash内容也删了。
Author: corn1ng
Link: https://corn1ng.github.io/2019/10/03/git 工作总结/
License: 知识共享署名-非商业性使用 4.0 国际许可协议