文章目录
常规操作
- 初始化本地仓库
git init
- 手动拷贝文件,并执行
add
命令
git add 文件夹1/ 文件夹2/
commit
命令
git commit -m “注释”
push
命令
git push -u origin master
切换分支
-
执行git pull,查看是否有新的分支。
如果没有新的分支形成,执行git branch -a,查看仓库里面所有的分支(包括我们本地分支和远端分支),方便我们找到自己要提交代码的分支。 -
切换分支
执行git checkout -b 分支名 origin/分支名,出现switch to a new…表示切换成功。
-
执行git branch再次确认当前分支,标绿的为当前分支。
-
依次执行git status,git add .,git commit -m “说明”,git push
-
push成功后务必记得切换回原本分支,git checkout 分支名
常见问题
Your local changes to the following files would be overwritten by checkout
问题描述
使用git checkout
命令切换分支时由于当前分支有未跟踪的文件,导致切换失败。
D:\Android\***\*****>git checkout master
error: Your local changes to the following files would be overwritten by checkout:
app/build.gradle
Please commit your changes or stash them before you switch branches.
Aborting
提示信息写的比较清楚:
当前分支有未跟踪的文件,checkout
命令会覆盖它们,请缓存(stash)或者提交(commit)。
解决方案
有两种选择:A保存修改;B放弃修改
选择A:未跟踪文件的内容改动很重要,保存修改
两种方法:按照信息提示,分别是:缓存(stash)或者提交(commit)
- 方法①:存到暂存区
git add .
git stash
// 取出的时候使用
git stash pop
- 方法②:发起一个commit 存到提交历史
git add .
git commit -m "commit message"
选择B:未跟踪文件的内容改动不重要,放弃修改
两种方法:①清除修改;②强制分支切换
- 方法①:清除未跟踪文件【推荐做法】
git clean -n //这个是清除文件预览
git clean -f //强制清除文件
Git出现 fatal: Pathspec ‘xxx’ is in submodule
解放方案
发现要添加的文件目录下面并没有.git文件
git rm -rf --cached 出问题的路径
git rm -rf --cached vendor/crazyfd/yii2-qiniu ()
git add vendor/crazyfd/yii2-qiniu/*
git pull 拉取代码报错error: Your local changes to the following files would be overwritten by merge:
Please commit your changes or stash them before you merge.
解决方案
git stash
把文件暂存git stash list
查看暂存的列表git pull
(拉取)git stash pop
(把暂存的最新的一份弹出来)
去代码里删除多余的代码,然后页面会恢复正常
Git从远程仓库拉取分支到本地
- 查看本地分支:
git branch
- 查看远程分支:
git branch -a
- 从远程仓库里拉取一条本地不存在的分支:
git checkout -b 本地分支名 origin/远程分支名
这个将会自动创建一个新的本地分支,并与指定的远程分支关联起来,例如远程仓库里有个分支develop,我本地没有该分支,我要把develop拉到我本地:
git checkout -b develop origin/develop
若成功,将会在本地创建新的分支develop,并自动切到develop分支上
若拉取不成功,如果出现提示:
fatal: Cannot update paths and switch to branch 'dev2' at the same time.
Did you intend to checkout 'origin/dev2' which can not be resolved as commit?
- 则要先执行:
git fetch
然后再执行:
git checkout -b 本地分支名 origin/远程分支名
git checkout用法
Switch branches or restore working tree files
$ git checkout -h
usage: git checkout [<options>] <branch>
or: git checkout [<options>] [<branch>] -- <file>...
-q, --quiet suppress progress reporting
-b <branch> create and checkout a new branch
-B <branch> create/reset and checkout a branch
-l create reflog for new branch
--detach detach HEAD at named commit
-t, --track set upstream info for new branch
--orphan <new-branch>
new unparented branch
-2, --ours checkout our version for unmerged files
-3, --theirs checkout their version for unmerged files
-f, --force force checkout (throw away local modifications)
-m, --merge perform a 3-way merge with the new branch
--overwrite-ignore update ignored files (default)
--conflict <style> conflict style (merge or diff3)
-p, --patch select hunks interactively
--ignore-skip-worktree-bits
do not limit pathspecs to sparse entries only
--ignore-other-worktrees
do not check if another worktree is holding the given ref
--recurse-submodules[=<checkout>]
control recursive updating of submodules
--progress force progress reporting