Git使用心得
Git使用心得
场景一:Git 本地版本库的基本用法
安装git
-
图形化安装:https://code.visualstudio.com/,去vscode官网安装vscode之后,其自带git
-
Linux或者其他Unix类的操作系统终端安装:执行
sudo apt install git
初始化一个本地版本库
vscode界面添加
命令行添加
删除暂存文件
Ps :
HEAD(大写)是”current branch”(当下的分支)。当你用git checkout切换分支的时候,HEAD 修订版本重新指向新的分支。有的时候HEAD会指向一个没有分支名字的修订版本,这种情况叫”detached HEAD“
head(小写)是commit对象的引用,每个head都有一个名字(分支名字或者标签名字等等),但是默认情况下,每个叫master的repository都会有一个head, 一个repository可以包含任意数量的head。在任何时候,只要这个head被选择成为”current head“,那么这个head就成了HEAD,总是大写
切换分支到workspace
git checkout -- FILES
把暂存区里的文件提交到仓库
-
界面提交
注意需要填写日志。
-
命令行提交
回滚版本
git reset --hard HEAD^
回滚到上一个版本
从过去版本回到未来版本
通过git reflog
总结:
主要是在本地对源代码进行基本的版本控制,主要通过git add和git commit -m提交版本,有了提交记录之后可以灵活地将当前工作区里的源代码回退到过去的某个版本,也就是回到过去。回到过去之后,也有可能发现之前撤销的某个版本是有价值的,希望找回来,这就需要回到未来。过去和未来之间的分界点就是HEAD,即当前工作区所依赖的版本。
git init # 初始化一个本地版本库
git status # 查看当前工作区(workspace)的状态
git add [FILES] # 把文件添加到暂存区(Index)
git commit -m "wrote a commit log infro” # 把暂存区里的文件提交到仓库, 多余的为注释
git log # 查看当前HEAD之前的提交记录,便于回到过去
git reset —hard HEAD^^/HEAD~100/commit-id/commit-id的头几个字符 # 回退
git reflog # 可以查看当前HEAD之后的提交记录,便于回到未来
git reset —hard commit-id/commit-id的头几个字符 # 回退
场景二:Git 远程版本库的基本用法
git fetch、git push加上git clone是三个对远程存储库的基本操作,而git pull
(拉取)是实际上是git fetch
+ git merge
(合并)的组合。
-
git clone
命令官方的解释是“Clone a repository into a new directory”,即克隆一个存储库到一个新的目录下。 -
git fetch
命令官方的解释是“Download objects and refs from another repository”,即下载一个远程存储库数据对象等信息到本地存储库。 -
git push
命令官方的解释是“Update remote refs along with associated objects”,即将本地存储库的相关数据对象更新到远程存储库。 -
git merge
命令官方的解释是“Join two or more development histories together”,即合并两个或多个开发历史记录。 -
git pull
命令官方的解释是“Fetch from and integrate with another repository or a local branch”,即从其他存储库或分支抓取并合并到当前存储库的当前分支。
git remote -v
origin https://github.com/haizlin/fe-interview.git (fetch)
origin https://github.com/haizlin/fe-interview.git (push)
这个可以查看更详细的远程存储库信息,包括需要从那里再fetch(抓取)的远程存储库URL和push(推送)的远程存储库URL。
同步操作
git pull
git push
若同步过程中出现冲突
需要对冲突代码进行修改,修改之后再push即可
场景三:团队项目中的分叉合并
开发者建议工作流程
-
克隆或同步最新的代码到本地存储库;
-
为自己的工作创建一个分支,该分支应该只负责单一功能模块或代码模块的版本控制;
-
在该分支上完成某单一功能模块或代码模块的开发工作;
-
最后,将该分支合并到主分支。
-
创建新的分支并移动到对应分支
git checkout -b mybranch
-
把副分支合并到主分支
假如要将mybranch合并到master,那么首先确保当期工作区处于master分支,可以使用git checkout master命令切换到master分支,或者使用git branch查看确认一下,或者在VS Code中源代码管理(Ctrl+Shift+G)的消息输入框里也能看到。
git merge mybranch
要保留mybranch分支为一段独立的分支线段,则需要使用–no-ff参数关闭”快进式合并”(fast-farward merge),Git命令如下:
git merge --no-ff mybranch
使用–no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。合并后大致如下示意图。
总结
1、克隆或同步最新的代码到本地存储库;
git clone https://DOMAIN_NAME/YOUR_NAME/REPO_NAME.git
git pull
git checkout -b mybranch
git branch
3、在该分支上完成某单一功能模块或代码模块的开发工作;多次进行如下操作:
git add FILES
git commit -m "commit log"
4、最后,先切换回master分支,将远程origin/master同步最新到本地存储库,再合并mybranch到master分支,推送到远程origin/master之后即完成了一项开发工作。
git checkout master
git pull
git merge --no-ff mybranch
git push
场景四:Git Rebase
-
what:即在mybranch分支上完成自己的工作之后,为了让 log 记录将来更容易回顾参考,用 git rebase 重新整理一下提交记录。注意不要通过rebase对任何已经提交到远程仓库中的commit进行修改。