git学习笔记之git工作流程

2,454 阅读5分钟

按图索骥:(带*的指令必须掌握)

1.下载安装git环境

2.创建新的git仓库及克隆远程版本库到本地

创建一个新的目录,进入目录:
[1]执行git clone+url 指令,将远程版本库克隆到本地or在本地克隆一个版本库;
如果克隆的是远程服务器上的仓库,第一次需要执行第(2)个指令,来验证身份信息,后面再次克隆,执行第(1)个就可以。
[2]执行git init初始化操作,这个时候新的git仓库创建完成。


(1)*git clone code.xxxx.com/git/xxxxxxx… (git远程版本库url) 克隆远程版本库到本地
(2)*git clone username@host:/path/to/repository 克隆远程服务器上的仓库到本地
(3)*git init 初始化本地版本库

3.从远程仓库拉最新代码到本地分支

完整的代码储存在远程仓库Remote中,开发进行开发工作,一般先从Remote中使用git clone指令,拷贝远程仓库中一个分支(一般是master分支),基于这个分支进行一系列开发,git pull指令随时从远程库中拉最新代码;
*git pull 拉最新代码
ps:拉新代码之前,参照4的分支相关指令,查看当前所在分支以及进行分支的切换,确保当前分支是自己想要的分支,开发有新的文件提交至远程库,执行拉新代码操作。

4.分支的展示和切换

以下为基础操作:
*git branch 列出所有本地分支,查看当前分支是否正确
git branch+分支名称 创建一个分支(仍然停留在原来的分支)
*git checkout+分支名称/git switch+分支名称 切换到指定分支
git checkout -b hhh origin/hhh 创建并切换到一个本地分支hhh,同时关联到远程仓库(在远程也创建一个hhh分支)
git branch -d 分支名称 删除本地分支


ps:分支切换过程中可能会遇到下面这两种情况:

1.error: ...未匹配任何git已知文件

莫慌~,执行git fetch将远程主机的最新内容拉到本地,再执行切换分支指令即可。

2.error:您对下列文件的本地修改将被检出操作覆盖:...
例如,当前分支未完成开发或者测试,需要切换分支,这个时候,使用git stash指令保存当前的修改,方便在切回当前分支时保存当前进度。
*git stash 保存和恢复进度(git stash 更多相关指令可参考——www.jianshu.com/p/1e65e938f…

5.从本地分支提交代码到暂存区Index

开发在分支上在完成一项功能后,通过git add指令,把修改的文件提交到暂存区Index,这个时候Index区内容被git管理;
*git add+文件名称 添加指定文件到Index区
*git add . 将当前目录下所有改动过的文件添加到Index区
git add+目录名称 添加指定目录到Index区


ps:把修改的文件提交到暂存区Index以后,可以通过git diff指令查看暂存区和工作区(即开发分支)的差异。
*git diff 显示暂存区和工作区的差异

6.暂存区修改提交到本地仓库

下一步,将暂存区Index的内容通过git commit -m ”说明信息“ 指令提交到本地仓库Repository;
*git commit -m ”说明信息(可以写明这次修改的内容)“ 将Index区内容提交到本地仓库
git commit 指定文件 -m ”说明信息“ 将Index区指定文件提交到本地仓库
git commit --amend -m ”说明信息“ 使用一次新的commit,代替上一次提交
git cherry-pick "说明信息" 选择一个commit,合并进当前分支


ps:将修改提交到本地开发分支以后,可以通过git status和git log指令查看提交内容。
*git status 查看提交到Index区的修改(必须把分支代码提交到Index区,才可以通过git status查看修改的痕迹)
*git log 查询提交历史(通过git log指令,查询开发在当前分支commit的内容和时间等内容,了解更多见——www.cnblogs.com/bellkosmos/…

7.将开发分支合并到本地master

实际开发中,可能会从master分支中切出来一个分支,在这个分支上进行开发,开发完成之后,merge到master分支,这是把开发代码和本地代码的合并,合并之后push到远程仓库;
*git fetch 在merge之前先拉一下远程仓库的最新代码
git merge+分支名称 合并指定分支到当前分支(例如在a分支完成一个功能,切换到master,执行这个指令git merge a,将a分支合到master)
git merge --no-ff+分支名称 合并指定分支到当前分支(使用--no-ff参数,在master上生成一个新的节点,git log可以查阅到这个提交)
git log --graph 查看git节点(提交或者合并都会生成一个新的节点)


ps:附上git fetch和git pull的不同(juejin.cn/post/684490…

8.合并代码时,可能要解决冲突

merge之后,很可能出现冲突conflict,这个时候就要手动解决冲突(产生冲突的原因可能是两个人对同一个文件的同一段代码做了修改,后一个人提交时,提示有冲突)。
如何解决冲突?在merge时,会提示conflict的内容,在当前分支(master)上对找到冲突的文件,直接修改冲突,再次add,commit,merge
*vim+文件名称 修改文件
*cat+文件名称 查看文件

9.上传本地仓库分支到远程仓库分支,实现同步

如果开发代码merge到本地master之后,需要把本次修改后的master提交到远程仓库,使用git push相关指令操作,就把新功能成功上线啦~
*git push origin+本地分支(master或者其他任意分支) 上传本地指定分支到远程仓库
git push [remote] --force 强行推送当前分支到远程仓库,即使有冲突
git push [remote] --all 推送所有分支到远程仓库