常用需求需求一删除远程仓库多余的文件:第一步:给项目添加有效的.gitignore文件#第二步:将.gitignore文件添加到暂存区gitadd.gitignore#查看文件夹(可选操作)d
常用需求
- 需求一
<span>删除远程仓库多余的文件:</span><span>第一步:给项目添加有效的.gitignore文件</span><span># 第二步:将.gitignore文件添加到暂存区</span><span>git</span> <span>add .gitignore</span><span># 查看文件夹(可选操作)</span><span>dir</span><span># 第三步:删除暂存区文件夹,target表示要删除的文件夹名</span><span>git</span> <span>rm -r --cached target</span><span>git</span> <span>commit -m \"删除target文件夹\"</span><span># 第四步:强制推送到远程仓库 dev 分支</span><span>git</span> <span>push -f origin dev</span>
- 需求二
克隆公司分支代码到本地,推送自己的远程仓库作为一个新分支,最后合并到公司分支。 <span># 第一步:克隆公司远程仓库分支代码</span>git clone -b 分支名 远程仓库地址<span># 第二步:更改远程仓库为自己的</span>找到项目的.git文件夹,修改config[remote <span>\"origin\"</span>] url = git@git.vsigo.<span>cn:</span>shang/oms.pro.api.git <span># 此处需修改为自己的远程仓库,其余不改变</span> fetch = +refs/heads/*<span>:refs/remotes/origin/*</span><span># 第三步:查看是否修改成功</span>git remote -v<span># 第四步:查看分支并创建新分支</span>git branchgit checkout -b 新分支名称<span># 第五步:强制推到自己的远程仓库,注意远程仓库并没有gs分支,但此命令会创建</span>git push -f origin gs第六步:申请代码合并
- 需求三
注意:如果正常合并有误,那么你也可以选择上面提到的强制合并,但你要保证你提交的版本是正确无误的最终版。
<span>初始化一个新项目到新的远程仓库:</span><span># 第一步:初始化</span><span>git</span> <span>init</span><span># 第二步:添加自己的远程仓库地址</span><span>git</span> <span>remote add origin git仓库地址</span><span>git</span> <span>remote -v</span><span># 第三步:将项目的所有需要提交的文件加入暂存区,注意:执行该命令之前别忘记新项目要有 .gitignore文件</span><span>git</span> <span>add *</span><span># 第四步:切换分支并创建新分支。dev表示新分支名称</span><span>git</span> <span>chechout -b dev</span><span>git</span> <span>commit -m \"提示消息\"</span><span># 第五步:提交到远程仓库dev分支</span><span>git</span> <span>push -u origin dev</span>
名词
- master: 默认开发分支
- origin: 默认远程版本库
- Index / Stage:暂存区
- Workspace:工作区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
新建代码库
<span># 在当前目录新建一个Git代码库</span><span>git</span> <span>init</span><span># 新建一个目录,将其初始化为Git代码库</span><span>git</span> <span>init [project-name]</span><span># 下载一个项目和它的整个代码历史</span><span>git</span> <span>clone [URL]</span>
配置
Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
<span># 显示当前的Git配置</span>git config --<span>list</span><span># 编辑Git配置文件</span>git config -e [--<span>global</span>]<span>#设置提交代码时的用户信息</span>git config [--<span>global</span>] user.name <span>\"[name]\"</span>git config [--<span>global</span>] user.em<strong>ai</strong>l <span>\"[email address]\"</span>
配置/删除/修改文件
<span># 查看状态</span>git status<span># 查看变更内容</span>git diff<span># 添加指定文件到暂存区</span>git add [<span>file1</span>][<span>file2</span>] ...<span># 添加指定目录到暂存区,包括子目录</span>git add [dir]<span># 添加当前目录的所有文件到暂存区</span>git add .<span># 添加每个变化前,都会要求确认</span><span># 对于同一个文件的多处变化,可以实时分次提交</span>git add -p<span># 删除工作区文件,并且将这次删除放入暂存区</span>git rm [<span>file1</span>][<span>file2</span>] ...<span># 停止追踪指定文件,但该文件会保留在工作区</span>git rm --cached [file]<span># 改名文件,并且将这个改名放入暂存区</span>git mv [<span>file-original</span>][<span>file-renamed</span>]
代码提交
<span># 提交暂存区到仓库去</span>git commit -m [message]<span># 提交暂存区的指定文件到仓库区</span>git commit [<span>file1</span>][<span>file2</span>]... -m [message]<span># 提交工作区自上次commit之后的变化,直接到仓库区</span>git commit -a<span># 提交时显示所有的diff信息</span>git commit -v<span># 使用一次新的commit,替代上一次提交</span><span># 如果代码没有任何新变化,则用来改写上一次commit的提交信息</span>git commit --amend -m [message]<span># 重做上一次commit,并包括指定文件的新变化</span>git commit --amend [<span>file1</span>][<span>file2</span>] ...
分支
<span># 显示所有本地分支</span>git branch<span># 列出所有远程分支</span>git branch -r<span># 列出所有本地分支和远程分支</span>git branch -a<span># 新建一个分支,但依然停留在当前分支</span>git branch [branch-name]<span># 新建一个分支,与指定的远程分支建立追踪关系</span>git branch --track [<span>branch</span>][<span>remote-branch</span>]<span># 删除分支</span>git branch -d [branch-name]<span># 删除远程分支</span>git push origin --delete [branch-name]git branch -dr [remote/branch]<span># 新建一个分支,并切换到该分支</span>git checkout -b [branch]<span># 切换到指定分支,并更新工作区</span>git checkout [branch-name]<span># 切换到上一个分支</span>git checkout -<span># 建立追踪关系,在现有分支与指定的远程分支之间</span>git branch --set-upstream [<span>branch</span>][<span>remote-branch</span>]<span># 合并指定分支到当前分支</span>git merge [branch]<span># 衍合指定分支到当前分支</span>git rebase <span><span><<span>branch</span>></span></span><span># 选择一个commit,合并进当前分支</span>git cherry-pick [commit]
标签
<span># 列出所有本地标签</span>git tag<span># 基于最新提交创建标签</span>git tag <span><span><<span>tagname</span>></span></span><span># 删除标签</span>git tag -d <span><span><<span>tagname</span>></span></span><span># 删除远程</span>git push origin :refs/tags/[tagName]<span># 查看tag信息</span>git show [tag]<span># 提交指定tag</span>git push [<span>remote</span>][<span>tag</span>]<span># 提交所有tag</span>git push [remote --tags]<span># 新建一个分支,指向某个tag</span>git checkout -b [<span>branch</span>][<span>tag</span>]
查看信息
<span># 显示有变更的文件</span><span>git</span> <span>status</span><span># 显示当前分支的版本历史</span><span>git</span> <span>log</span><span># 显示commit历史,以及每次commit发生变更的文件</span><span>git</span> <span>log --stat</span><span># 搜索提交历史,更具关键词</span><span>git</span> <span>log -S [keyword]</span><span># 显示某个commit之后的所有变动,每个commit占据一行</span><span>git</span> <span>log [tag] HEAD --pretty=format:%s</span><span># 显示某个commit之后的所有变动,其\"提交说明\"必须符合搜索条件</span><span>git</span> <span>log [tag] HEAD --grep feature</span><span># 显示某个文件的版本历史,包括文件改名</span><span>git</span> <span>log --follow [file]</span><span>git</span> <span>whatchanged [file]</span><span># 显示指定文件相关的每一次diff</span><span>git</span> <span>log -p [file]</span><span># 显示过去5次提交</span><span>git</span> <span>log -5 --pretty --oneline</span><span># 显示所有提交过的用户,按提交次数排序</span><span>git</span> <span>shortlog -sn</span><span># 显示指定文件是什么人在什么时间修改过</span><span>git</span> <span>blame [file]</span><span># 显示暂存区和工作区的差异</span><span>git</span> <span>diff</span><span># 显示暂存区和上一个commit的倡议</span><span>git</span> <span>diff --cached [file]</span><span># 显示工作区与当前分支最新的commit之间的差异</span><span>git</span> <span>diff HEAD</span><span># 显示两次提交之间的差异</span><span>git</span> <span>diff [first-branch]...[second-branch]</span><span># 显示今天你写了多少行代码</span><span>git</span> <span>diff --shortstat \"@{0 day ago}\"</span><span># 显示某次提交的元数据和内容变化</span><span>git</span> <span>show [commit]</span><span># 显示某次提交发生变化的文件</span><span>git</span> <span>show --name-only [commit]</span><span># 显示某次提交时,某个文件的内容</span><span>git</span> <span>show [commit]:[filename]</span><span># 显示当前分支的最近几次提交</span><span>git</span> <span>reflog</span>
远程操作
<span># 下载远程仓库的所有变动</span><span>git</span> <span>fetch [remote]</span><span># 取回远程仓库的变化,并与本地分支合并</span><span>git</span> <span>pull [remote] [branch]</span><span># 显示所有远程仓库</span><span>git</span> <span>remote -v</span><span># 显示某个远程仓库的信息</span><span>git</span> <span>remote show [remote]</span><span># 增加一个新的远程仓库,并命名</span><span>git</span> <span>remote add [shortname] [url]</span><span># 上传本地指定分支到远程仓库</span><span>git</span> <span>push [remote] [branch]</span><span># 强行推送当前分支到远程仓库,即使有冲突</span><span>git</span> <span>push [remote] --force</span><span># 推送所有分支到远程仓库</span><span>git</span> <span>push [remote] --all</span><span># 删除远程分支或标签</span><span>git</span> <span>push :</span><span># 上传所有标签</span><span>git</span> <span>push --tags</span>
撤销
<span># 撤销工作目录中所有未提交文件的修改内容</span>git <span>reset</span> <span>--hard HEAD</span><span># 撤销指定的未提交文件的修改内容</span>git checkout <span>HEAD</span> <<span>file</span>><span># 撤销指定的文件</span>git revert <<span>commit</span>><span># 退回到之前1天的版本</span>git <span>log</span> <span>--before=\"1 days\"</span><span># 恢复暂存区的指定文件到工作区</span>git checkout [<span>file</span>]<span># 恢复某个commit的指定文件到暂存区和工作区</span>git checkout [<span>commit</span>] [<span>file</span>]<span># 恢复暂存区的所有文件到工作区</span>git checkout .<span># 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变</span>git <span>reset</span> [<span>file</span>]<span># 重置暂存区与工作区,与上一次commit保持一致</span>git <span>reset</span> <span>--hard</span><span># 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变</span>git <span>reset</span> [<span>commit</span>]<span># 重置当前分支的HEAD为指定commit,但保持暂存区和工作区不变</span>git <span>reset</span> <span>--keep [commit]</span><span># 新建一个commit,用来撤销指定的commit</span><span># 后者的所有变化都将被前者抵消,并且应用到当前分支</span>git revert [<span>commit</span>]<span># 暂时将未提交的变化移除,稍后再移入</span>git stashgit stash pop
生成一个可供发布的压缩包
<span>git</span> archive
本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。