您的位置:首页 > 其它

关于git命令一些个人理解

2019-03-27 18:36 225 查看

仅仅是学习笔记和一些个人理解,希望指正。

笔记一

对于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分支。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: