Git学习笔记

114 阅读4分钟

远程仓库:

添加远程库:

要关联一个远程库,使用命令git remote add origin https://github.com/lizhedyh/learngit.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

克隆远程库到本地:

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone github.com/lizhedyh/gi…

更换远程仓库:

首先移除已经关联的远程仓库,使用命令:git remote rm origin

关联上新的远程仓库地址,使用命令:git remote add origin ssh://git@git.sankuai.com/myfe/xx.git

但是现在直接就想push的话是会报错的,如下所示:

![]( "李哲 > Git > 屏幕快照 2019-12-12 下午2.36.37.png")

要解决这个报错,可以先将分支拉下来合并,使用命令:git pull origin master

这时又报了个错,说不能合并两个不相关的仓库,报这个错可能的原因是本地仓库和远程仓库是独立的两个参数,拉取远程仓库合并的时候添加 --allow-unrelated-histories参数就没事了。

![]( "李哲 > Git > 屏幕快照 2019-12-12 下午2.39.43.png")

做完上述这些操作。此时再执行git push origin master命令,就能成功了。

分支:

多人协作:

  1. 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致。
  2. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  3. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  4. 如果合并有冲突,则解决冲突,并在本地提交;
  5. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

查看远程库信息,使用git remote -v

实际项目中删除分支:

1.删除远程跟踪分支:git branch -r -d origin/lizhe21/diaoyan

2.丢弃这个还未被合并的lizhe21/diaoyan分支,强制删除:git branch -D lizhe21/diaoyan

3.在远程仓库中完全删除分支,推送一个空的同名分支过去就完全删掉了:git push origin :lizhe21/dioayan

远程跟踪分支:

远程跟踪分支对应的英文名称为remote-tracking branch,虽然仅仅多了tracking这个词,但是其作用与性质却与远程分支有很大的不同,远程跟踪分支是本地仓库对远程仓库中的某个远程分支的状态的记录,它们以 “(远程仓库名)/(分支名)” 形式命名。 例如,如果你想要看你最后一次与远程仓库 origin 通信时master 分支的状态,你可以查看 origin/master 分支。远程跟踪分支的作用是告诉用户其所跟踪的远程分支的状态(即指向哪一个commit),因而它在本地是只读的,用户是无法自行修改它的指向。其指向将在用户与远程仓库通信时自动改变,这里的通信是指执行诸如git fetch等从远程仓库获取数据的操作。

回滚:

已进行git push,即已推送到“远程仓库”中。我们将已被提交到“远程仓库”的代码还原操作叫做“回滚”!

比如我发现6177477cf18这个版本的commit存在着问题,想要撤销,那么就使用git reset --hard f3ed4adc084就可以回退到之前的版本,(--hard参数表示彻底回退到某个版本,本地的源码也会变为上一个版本的内容)

然后使用git push origin xx,把代码提交到远程仓库,git会提示本地版本落后于远端版本。

这时候加上-f参数强制提交就好了。

单个文件回退到以前的版本

  1. 先到这个文件的目录下查看这个文件的提交历史:git log route.js 
  2. 找到上次提交的commit id,然后回退到那个版本:git reset 48a35e route.js,回退的文件就会被放到暂存区,直接提交就可以恢复到这个指定的文件版本了

忽略文件或文件夹

在.gitignore中加入想要忽略的文件或者文件夹就可以立即生效了。如果发现没有立即生效,可能是因为这个文件之间上传到仓库过,已经被纳入版本管理中了,所以它不会被忽略。

解决办法:先把本地缓存删除(改成未被track状态),然后再提交:

git rm -r --cached .
git add . 
git commit -m 'update .gitignore'