赞
踩
Git是一种开源的分布式版本控制工具(版本控制在本地电脑进行)。
工作机制:工作区、暂存区、本地库。远程库。
Git中的三种状态:modified、staged、committed。
文件有四种状态:untracked、unmodified、modified、staged(暂存)
git常用命令:
配置用户信息:git config --global user.name 用户名
检查用户全局配置信息:git config --list --global /git config user.name
获取帮助信息:git help verb或git verb -h
将本地项目转化为Git仓库(初始化):git init
检查文件处于什么状态:git status或git status -s
跟踪新文件/把已跟踪且已修改的文件添加暂存区:git add index.html
向暂存区中一次性添加多个文件:git add .
提交文件到本地库里:git commit -m “第一次提交”
查看历史版本:git reflog 查看版本信息 git log查看版本详细信息
穿梭到指定的版本:git reset --hard 指定版本号
撤销对文件的修改:git checkout --index.html
取消暂存的文件:git reset HEAD 要移除的文件名称
取消多个暂存的文件:git reset HEAD .
跳过使用暂存区域:git commit -a -m “描述消息”
git commit 完后发现这次提交的内容是有错误的:可以重新commit也可以用git reset撤销这次commit
移除文件:
①同时从Git仓库和工作区中移除文件:git rm -f index.html
②只从仓库中移除但保留工作区中文件:git rm --cached index.html
Git分支:
git branch -v:查看当前仓库所有分支列表
git branch 分支名:基于当前分支创建新分支,此时新分支代码与当前分支代码完全一致。执行完创建新分支命令后,用户所处的还是当前分支。
git checkout 要切换的分支名:切换所处分支
git checkout -b 分支名称:快速创建并切换分支(相当于git branch+git checkout)
git merge 分支名:把指定分支合并到当前所在分支上
git branch -d 分支名称:删除分支。此时要处在不被删除的分支上面。
冲突合并:两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个,必须人为决定新代码内容。
git merge 和git rebase
共同点:都是把别的分支合到自己身上,别的分支不会变,变的是所处的分支。
不同点:
站在自己的分支,merge master,会把别人在master上的多次提交合并成一个commit,放在自己提交的后面:
站在自己的分支,rebase master,自己的提交总是在最后面,便于回退:
无分叉情况下站在master的merge feature:fast-forward快速移动
有分叉情况下的站在master的merge feature:会产生一个新的提交点加到自己后面,这个提交点是别的分支多次commit的一个合并。自己的提交在前面,别人的合并在后面。
有分叉情况下站在feature上merge master:
有分叉情况下站在feature上rebase master:feature还是指向自己最新的提交,而且前面也会有master上最新的提交(自己的提交总是在最后面,而且不会多出一个合并的提交点),就好像是从master最新基础上提交自己的多次commit。
总结:在公共分支上选择merge(将新功能整合到master上),在功能分支上选择rebase主分支(为了和公共分支同步,且把自己的提交顶到最后)(如果不介意顺序也可以用merge,把别的分支的功能加到自己身上),切记不要在公共分支上使用rebase任何分支!
.gitignore文件夹
忽略规则:
远程代码仓库
有基于局域网的Gitlab(公司),也有基于互联网的Github(服务器在国外),Gitee(国内)
GitHub
git remote show 远程仓库名称(origin):查看远程仓库中所有的分支列表
git remote add origin 远程仓库地址:将本地仓库与远程仓库做关联
git push 远程仓库别名 分支名:将本地仓库最新的代码推送到远程仓库中
git clone 远程仓库地址:将远程仓库克隆到本地(会自动初始化)
git fork
git checkout 远程分支的名称:从远程仓库中下载分支到本地(又叫做跟踪分支)
git push 远程仓库名称 --delete 远程分支名称:删除远程分支
git pull 远程仓库名 分支名:把远程分支最新的代码拉取到本地且会自动commit(更新当前所处分支的代码,使得与远程库保持同步)(git fetch origin 远程分支名+git merge origin/远程分支名,指远程master和本地master的合并,推荐使用rebase)
git fetch 和git pull
git pull=git fetch+git merge
git fetch更安全一点
在本地合远程另一个分支:
git fetch origin 远程分支名
git merge origin/远程分支名
git推送到远程仓库遇到代码冲突时的分支合并:在vscode手动解决冲突后运行git add . 和git commit -m “message”即可
vscode中git解决冲突,合并代码的方法:
对于冲突的文件,可以vscode git 树中查看冲突的文件,左键文件,选择全部采用当前内容or全部采用传入版本
也可以command shift +p 搜merge 然后选全部采用传入版本。
之后解决完冲突,git add ,git commit,再把分支git push一下即可。
git推送到远程仓库同文件存在版本冲突如何操作:
1,先暂存自己的代码git stash save “暂存文件”
2,执行pull命令,将远程仓库代码下载到本地git pull origin master
3, 将修改合并到更新的代码中:git stash pop stash@{0}
4,回到自己代码中,合并或删除不需要的代码。
5,git status 查看文件修改状态
6,git checkout 文件名称
7,git add 提交文件名称 (各个文件名之间用空格 隔开) 需要提交的文件。不建议直接使用git add .
8, git commit –m” 修改记录说明” 提交到本地仓库
9,git push origin master
忘记拉取远程最新代码(远程有更新),并且已在本地改好了代码,也已经commit,应该怎么办?
这个时候会出现本地代码提交到远程库失败,先取消commit,之后同步远程库到本地
git pull --rebase origin dev
解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).
保留本地的更改,中止合并->重新合并->重新拉取
git merge --abort
git reset --merge
git pull
在vscode中解决冲突后,then 执行git add. ,then执行git commit ,then执行git push。
git merge后,想恢复之前版本步骤
第一步:git checkout到你想恢复的分支上
第二步:git reflog查出要回退到merge之前的版本号
第三步:git reset --hard 版本号,就可以回到merge之前的代码状态了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。