Git学习——远程仓库

先有本地库,后有远程库,关联远程库

关联一个远程库:git remote add origin git@server-name:path/repo-name.git

如:git remote add origin git@github.com:maotingzi/learngit.git

 

把本地库的内容推送到远程:git push:git push -u origin master:实际是把当前分支master推送到远程

(由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。)

 

删除(解除本地和远程的绑定关系)远程库:git remote rm <name>

先用git remote -v查看远程库信息,再使用git remote rm <name>

 

 

先有远程库,后有本地库

创建一个新的远程库,用git clone命令克隆一个本地库

如:git clone git@github.com:maotingzi/learngit_1.git

 

创建与合并分支

查看文件:cat <file name>

创建新分支且切换到新分支(新分支:newbranch):git checkout -b newbranch/git switch -c dev

 

查看当前分支:git branch(会列出所有的分支,当前分支有个*号)

切换另一分支:git checkout 分支名/git switch 分支名

把newbranch分支的工作成果合并到master分支上:git merge newbranch

合并成功后,删除newbranch分支:git branch -d newbranch

删除后,查看分支:git branch

 

 

解决冲突

当一个分支上提交了修改后的文件,切换到master分支后,Git就自动提示我们当前master分支比远程的master分支要超前1个提交,此时提交一个修改的文件,git就无法快速合并,合并时就会发生冲突,就需要手动解决冲突,将两个文件修改的内容合并到一起,git会标记出不同分支的内容,我们修改后进行提交。用带参数的git log也可以看到分支的合并情况。

(git log --graph),最后删除分支(git branch -d <分支名>)

 

 

分支管理策略

在合并分支时,git会用Fast forward模式,但是在这种模式下,删除分支后,会丢掉分支信息;若要强制禁用该模式,在合并分支时加上--no-ff,即git merge --no-ff -m "desc" <分支名>:合并时创建一个新的commit,所以加上-m参数,把描述写进去,合并后,用git log查看分支历史。

 

 

bug分支

1.修复bug时,创建一个分支 进行修复

2.正在dev分支上进行工作还没有提交时,要先bug修复,此时用git stash命令把当前的工作储藏起来,bug修复后,用查看工作现场存在位置:git stash list,恢复工作活动,有两种方法:

一是用git stash pop恢复到当前继续工作,恢复的同时把stash内容也删了,再用git stash list查看,就看不到任何stash内容了;

二是用git stash apply恢复,但是恢复后,stash内容并不删除,需要用git stash drop来删除。

3.在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit> 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

 

 

feature分支

每添加一个新的功能,就新建一个feature分支:git switch -c <分支名>,开发一半时,需要删除此分支,但是删除失败,git会提醒:还没有被合并,如果删除,将失掉修改,若要强制性删除,需要大写的-D参数,即:git branch -D <name>

(要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。)

 

 

多人协作(远程仓库的默认名称是origin)

查看远程仓库的信息:git remote(显示更详细的信息:git remote -v)

推送分支:把该分支上的所有本地提交推送到远程库,在推送的时候,要指定本地分支,即:git push origin <branch name>

抓取分支:先试图推送自己的修改,若推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;如果合并有冲突,则解决冲突,并在本地提交;没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

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

 

 

 

Rebase(变基)

rebase操作可以把本地未push的分叉提交历史整理成直线;

rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

posted @ 2022-03-07 16:03  亭子^_^  阅读(37)  评论(0)    收藏  举报