gitlab 常见的问题

1、Git 如何 clone 非 master 分支的代码
默认 clone 的是这个仓库的 master 分支。如果最新的代码不在 master 分支上,该如何拿到呢?在这里插入图片描述
2、git为什么要先commit,然后pull,最后再push?而不是commit然后直接push?
现在的方式:每次写之前先pull,写完push前也先pull
现在远程有一个仓库,分支就一个,是master。本地的仓库是从远程的master上clone下来的,再在自己本地改好,再commit → pull → push。

3,本地仓库和本地分支有什么区别?

本地分支属于本地仓库里,是包含关系,一个仓库里可以有很多分支, 如果是 tag 的话可以分离出独立的仓库

4,commit是提交到本地仓库,然后push,这个push是把所有代码推到远程仓库,还是只是把commit的地方推到远程仓库?

肯定不会全量推送到远程的,是通过对比 commit 的记录,如果本地高于远程就直接把多出来的commit 给push上去,如果本地的这几个 commit 和远程的 commit 有冲突的部分就要先处理冲突,通过merge或其它方式,把已解决的冲突再 commit ,再push上去。

5,那为什么要先commit,然后pull,然后再push,我pull了,岂不是把自己改的代码都给覆盖掉了嘛,因为远程没有我改的代码,我pull,岂不是覆盖了我本地的改动好的地方了?那我还怎么push?

这个先 commit 再 pull 再 push 的情况就是为了应对多人合并开发的情况:

1)commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;

2)pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码然后在 git add && git commit && git pull 这三连动作。(pull 一次是为了防止在你们协商的时候另一个人又提交了一版东西,如果有冲突,先处理冲突,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉。

6、出现代码覆盖或者丢失的情况:
比如A、B两人的代码 pull 时候的版本都是1,
A在本地提交了2,3两个版本,并且推送到远程了;
B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 那么在远程版本中就是4,而且 A 的代码被覆盖了,所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的。

7、tortoisegit 还原到某个版本( v2还原到v1)
1)强制还原
如果使用这种方式还原到v1,将丢失还原到v1到v2之间的所有提交及日志。
1.1显示日志在这里插入图片描述
1.2 重置版本(本地分支还原)
在这里插入图片描述
使用硬重置,否则重置后,还会有未提交的文件
在这里插入图片描述
1.3 提交(推送到远程分支)
需要强制推送在这里插入图片描述
如果发现回退错了,如何再退回到原来的版本:

1.右键项目,选择TortoiseGit ,然后点击
2.show reflog,(注意不是show log,而且是reflog)然后就会出现各种版本号,右键选择reset master to this
3.类型选择 hard
4.点击确定即可完成~

猜你喜欢

转载自blog.csdn.net/liulina603/article/details/117196073