文章标题 原创 翻译 转载 文章内容 ## 分支操作 一、如何把本地新建分支同步到远程分支上(注:该分支在远程上没有)? 二、又如何在本地把远程分支上新建分支同步到本地(本地没有该分支)? 1.其实在从远程分支分出来的分支都是跟踪分支(track),当对该分支进行push和pull时,如果该分支和远程分支同名git会知道推送到远程哪个分支,从哪个远程分支同步到本地分支。其实每次克隆一个仓库时,本地新建一个master分支来track远程origin/master。如果不同名,我们需要人为指定git push origin branch_name 2.如果本地新建了一个分支branch_name,但是在远程没有,这时候push和pull指令就无法确定该跟踪谁,一般来说我们都会使其跟踪远程同名分支,所以可以利用git push --set-upstream origin branch_name,这样就可以自动在远程创建一个branch_name分支,然后本地分支会track该分支。后面再对该分支使用push和pull就自动同步。无需再指定分支。 3.跟踪远程分支 1)如果远程新建了一个分支,本地没有该分支,可以用git checkout --track origin/branch_name,这时候本地会新建一个分支名叫branch_name,会自动跟踪远程的同名分支branch_name。 2)用上面中方法,得到的分支名永远和远程的分支名一样,如果想新建一个本地分支不同名字,同时跟踪一个远程分支可以利用。 git checkout -b new_branch_name branch_name,这条指令本来是根据一个branch_name分支分出一个本地分支new_branch_name,但是如果所根据的分支branch_name是一个远程分支名,那么本地的分支会自动的track远程分支。建议跟踪分支和被跟踪远程分支同名。 总结:一般我们就用git push --set-upstream origin branch_name来在远程创建一个与本地branch_name同名的分支并跟踪;利用git checkout --track origin/branch_name来在本地创建一个与branch_name同名分支跟踪远程分支。 ``` git checkout --track origin/dev 切换到dev并且跟踪分支 git checkout -b dev origin/dev 切换到dev分支并跟踪 git branch 创建分支 git branch -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列表 git branch -v 查看所有分支的最后一次操作 git branch -vv 查看当前分支 git branch -b 分支名 origin/分支名 创建远程分支到本地 git branch --merged 查看别的分支和当前分支合并过的分支 git branch --no-merged 查看未与当前分支合并的分支 git branch -d 分支名 删除本地分支 git branch -D 分支名 强行删除分支 git branch origin :分支名 删除远处仓库分支 git merge 分支名 合并分支到当前分支上 ``` ## 暂存操作 ``` git stash 暂存当前修改 git stash apply 恢复最近的一次暂存 git stash pop 恢复暂存并删除暂存记录 git stash list 查看暂存列表 git stash drop 暂存名(例:stash@{0}) 移除某次暂存 git stash clear 清除暂存 ``` ## 回退操作 ``` git reset --hard HEAD^ 回退到上一个版本 git reset --hard ahdhs1(commit_id) 回退到某个版本 git checkout -- file撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到了版本库,则还原至加入版本库之后的状态) git reset HEAD file 撤回暂存区的文件修改到工作区 标签操作 git tag 标签名 添加标签(默认对当前版本) git tag 标签名 commit_id 对某一提交记录打标签 git tag -a 标签名 -m '描述' 创建新标签并增加备注 git tag 列出所有标签列表 git show 标签名 查看标签信息 git tag -d 标签名 删除本地标签 git push origin 标签名 推送标签到远程仓库 git push origin --tags 推送所有标签到远程仓库 git push origin :refs/tags/标签名 从远程仓库中删除标签 ``` ## 常规操作 ``` git push origin test 推送本地分支到远程仓库 git rm -r --cached 文件/文件夹名字 取消文件被版本控制 git reflog 获取执行过的命令 git log --graph 查看分支合并图 git merge --no-ff -m '合并描述' 分支名 不使用Fast forward方式合并,采用这种方式合并可以看到合并记录 git check-ignore -v 文件名 查看忽略规则 git add -f 文件名 强制将文件提交 ``` ## git创建项目仓库 ``` git init 初始化 git remote add origin url 关联远程仓库 git pull git fetch 获取远程仓库中所有的分支到本地 ``` ## 忽略已加入到版本库中的文件 ``` git update-index --assume-unchanged file 忽略单个文件 git rm -r --cached 文件/文件夹名字 (. 忽略全部文件) ``` ## 取消忽略文件 ``` git update-index --no-assume-unchanged file ``` ## 拉取、上传免密码 ``` git config --global credential.helper store ``` 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交