关于git命令一些个人理解
仅仅是学习笔记和一些个人理解,希望指正。
笔记一
对于git reset --hard <版本号> ,如果工作区添加了一个文件,那个文件不会被删除,因为没有add过,不能对它追踪。同样,假如工作区添加了新文件,如果git reset <版本号>,再git checkout <新文件名>,是会报错的,也是没有追踪那个新文件。(这个时候如果git status,会显示有新文件没有提交。)
不过如果是对某个已经add过的文件进行修改,是可以通过git reset --hard <版本号> 或者git reset <版本号>,再git checkout <新文件名>,来回到某个版本下的状态。(本质上是看有没有对该文件进行追踪,必须要有该文件的索引)
笔记二
使用git log 时,后面版本号会显示所在分支,以及头结点指向。
1 如果有红色的origin/xxx,说明所在的版本号与远程分支一致。(需要注意的是,这里所说的远程分支是本地仓库认为的远程分支,如果真正的远程分支发生了变换,是不会显示的。这个是有要git fetch 才能更新。)
2 如果有绿色xxx,说明该分支中,这个版本和当前仓库版本一致。
3 如果红色绿色字体都有,说明该版本与该分支的当前仓库、远程仓库都一致。
以上git reflog中也一样。
笔记三
如果远程库更新了,git fetch之后可以把远程库拉到本地库。fetch会把远程库拉到叫origin/master的本地的一个库。这个时候如果checkout,也不会切换到新的版本分支,而是一般提示落后于远程分支。这个时候应该只能git pull或者git merge,只有合并分支以后,才能看到工作区发送改变(如果快速合并的话)。
并且,如果把远程库的某个分支合并到本地库的分支,它的log会把远程库的log也加载到本地库分支的log。
因此,一般都需要先pull下来,然后合并以后,才能继续修改或者push。
笔记四
对于远程分支做了修改:
1 可以直接git pull下来,这样本地master和工作区都会发生改变。
2 如果git fetch下来,只是本地的origin/master分支发生了改变,需要git merge来合并,合并之后也是本地master分支和工作区都会改变。(git merge应该就是和本地的远程分支合并。)
3 如果直接checkout 到 origin/master分支,就会提示是游离分支。因为没有本地的分支指向origin/master分支。(个人理解,应该是只有本地分支,并且该分支的指针指向那个版本,这样HEAD指向这个版本的这个分支,才不是游离的。其他情况,包括origin/xxx的分支也都是游离的。)
4 如果处于游离分支,提交的话,是不可见的(即切换到别的分支就找不回来了)。如果想要保存下来,这个时候可以创建一个分支,git checkout -b temp,这样就提交到该分支下了。
笔记五
对于git push的参数-u
1 第一次提交也可以git push origin master ,即说明服务器名字和分支名字即可。如果用来git push -u origin master ,就是默认服务器是origin,之后可以只是git push,就提交到origin 对应的分支。
2 同一个目标下,可以与不同的服务器建立联系。比如git push origin1 master,就是另一个服务器名字,提交到另一个仓库的master分支。
- 关于Python2/3多进程的一些个人理解
- 关于技术美术的一些个人理解
- 关于KMP的一些个人理解
- 关于Promise的一些个人理解jQuery的deferred
- 关于内核中spinlock的一些个人理解 【转】
- 关于google protocol buffer(PB)的优缺点和一些个人的理解
- 关于线程方法的一些个人理解
- 关于git命令“git rev-parse --short HEAD”在android studio中使用与配置的个人探究
- 关于.NE弱引用的一些个人理解
- 关于Vue中组件传值,以及emit方法的一些个人理解
- 关于git的使用及一些简单的命令
- 关于git的一些命令总结
- 个人对man命令的一些理解
- 关于命令模式的一些理解
- 关于wordpress的$post全局变量,以及主循环the loop的一些个人理解。
- 关于Volatile关键字含义的一些个人理解
- 关于Github和一些Git命令(更新中)
- 关于线程和父子进程的一些个人理解
- 关于大数据的一些个人理解
- 关于事件与委托的一些个人简单理解