在使用Git的过程中,有时可能会有一些误操作 比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支 结果造成本地(远程)的分支或某些...commit丢失 可以通过reflog来进行恢复,前提是丢失的分支或commit信息没有被git gc清除 一般情况下,gc对那些无用的object会保留很长时间后才清除的...通过git log -g命令来找到我们需要恢复的信息对应的commit_id,可以通过提交的时间和日期来辨别。...通过git branch recover_branch[新分支] commit_id 来建立一个新的分支 这样,我们就把丢失的东西给恢复到了recover_branch分支上了。...Q:怎样找回历史版本中删除的文件?
当工作完成后,可以将分支与主项目合并。 你甚至可以在不同分支之间切换,同时在不同项目上工作,而彼此不会互相干扰。 在 Git 中,分支非常轻量且快速!...checkout 是用于检出分支的命令,将我们从当前分支移动到命令末尾指定的分支: git checkout hello-world-images 现在我们已将当前工作区从 master 分支移动到新分支...因此,我们需要将这两个文件都添加到该分支的暂存区中: git add --all 使用 --all 而不是单独的文件名将所有已更改的文件(新的、修改的和已删除的)放入暂存区。...检查分支的状态: git status 在 hello-world-images 分支上,有文件更改,但未准备好提交。...所以我们将这些更改提交到该分支: git commit -m "Added image to Hello World" 现在我们有一个不同于 master 分支的新分支。
Git是最流行的分布式版本控制和源代码管理系统。本指南将向您介绍Git入门的基础知识,从安装软件到在本地和远程存储库(repo)上使用基本命令。...git pull repo refspec git push 将更改发布到远程仓库。 git push repo 分支 Branch 分支用于编辑文件而不会干扰项目的工作部分。...主分支通常是命名的master,通常在修复问题或实现功能后命名分支。因为Git会跟踪文件更改,所以您可以从分支跳转到分支,而不会覆盖或干扰repo中的其他分支。...该git branch命令使用的基本选项是: 选项 描述 -r 列出远程分支 -一个 显示本地和远程分支 -m 重命名旧分支 -d 删除分支 -r -d 删除远程分支 使用远程存储库 远程存储库托管在...git push [remote-name] [branch-name] 将数据从分支移动到服务器。 git remote show [remote-name] 显示有关您指定的遥控器的信息。
本地库和远程库 已创建有远程库,未创建本地库 $ git clone "your repo" 已创建本地库,未创建远程库 1. 新建文件夹 $ mkdir test 2....删除文件 删除工作区中的文件 $ rm "xxx.txt" 提交删除操作到暂存区 $ git rm "xxx.txt" 提交删除到版本库,在版本库中彻底删除文件 $ git commit -m "remove...储藏工作现场 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,...,就需要从git clone开始讲起 假设你在github上有一个远程仓库地址是xxx,然后你从远程仓库clone到本地仓库 $ git clone xxx 执行完此命令后,Git会自动为你将远程仓库命名为...注意这里的本地分支master已经前移,服务器上的master分支也已经前移,所以可以说本地的remotes/origin/master是过时的。
本地库和远程库 已创建有远程库,未创建本地库 $ git clone "your repo" 复制代码 已创建本地库,未创建远程库 1. 新建文件夹 $ mkdir test 2....删除文件 删除工作区中的文件 $ rm "xxx.txt" 提交删除操作到暂存区 $ git rm "xxx.txt" 提交删除到版本库,在版本库中彻底删除文件 $ git commit -m "remove...储藏工作现场 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,...,就需要从git clone开始讲起 假设你在github上有一个远程仓库地址是xxx,然后你从远程仓库clone到本地仓库 $ git clone xxx 复制代码 执行完此命令后,Git会自动为你将远程仓库命名为...注意这里的本地分支master已经前移,服务器上的master分支也已经前移,所以可以说本地的remotes/origin/master是过时的。
当给出提交、分支或其他引用时,该命令将分支和 HEAD 引用移动到指向该引用的位置。如果未提供引用参数,则默认将引用指向 HEAD。 该命令提供了三种操作模式:soft, mixed,和 hard。...使用 soft 选项时,索引会被更新,但暂存的提交和工作目录保持不变。使用 mixed 选项(默认选项)时,索引将被重置,已暂存的更改将被移回工作目录。...为当前签出的 Git 提交创建一个标记: git tag tag_name git rebase Git rebase 命令允许用户将一系列提交移动到一个新的基础提交上。...git revert git revert 命令用于撤消之前提交的更改。该命令接受一个 commit ID,然后在当前分支上创建一个新的提交记录,以反转 revert 提交记录中的更改。...这种方法允许用户撤消一个更改,而无需重写历史记录。执行该命令将在分支的末尾产生一个新的提交记录,用于撤消 revert 的提交记录中的更改。
创建 复制一个已创建的仓库: $ git clone ssh://user@domain.com/repo.git 创建一个新的本地仓库: $ git init 本地修改 显示工作路径下已修改的文件...$ git commit --amend 把当前分支中未提交的修改移动到其他分支 git stash git checkout branch2 git stash pop 搜索 从当前目录的所有文件中查找文本内容...: $ git grep "Hello" 在某一版本中搜索文本: $ git grep "Hello" v2.5 提交历史 从最新提交开始,显示所有的提交记录(显示hash, 作者信息,提交的标题和时间...$ git checkout 创建并切换到新分支: $ git checkout -b 基于当前分支创建新分支: $ git branch 基于远程分支创建新的可追溯的分支: $ git branch...--tags 合并与重置 将分支合并到当前HEAD中: $ git merge 将当前HEAD版本重置到分支中: 请勿重置已发布的提交!
最好是创建和推 (push) 一个新的提交 (commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源历史中产生冲突。...彻底删除指定版本: # 执行下面命令后,commit-hash 提交后的记录都会被彻底删除,使用需谨慎 $ git reset --hard $ git push -f...> # 发布标签 git push --tags # 未暂存 未暂存 (Unstaged) 的内容 # 把未暂存的内容移动到一个新分支 git checkout -b my-branch # 我想把未暂存的内容移动到另一个已存在的分支...,但错误的提交到了 master 在 master 下创建一个新分支,不切换到新分支,仍在 master 下: (master)$ git branch my-branch 把 master 分支重置到前一个提交...在这种情况下,最好手动的查看他们的提交 (commit),并把它们拷贝到一个本地新分支,然后做提交。 做完提交后,再修改作者,参见变更作者。
创建 复制一个已创建的仓库: $ git clone ssh://user@domain.com/repo.git 创建一个新的本地仓库: $ git init 本地修改 显示工作路径下已修改的文件...$ git commit --amend 把当前分支中未提交的修改移动到其他分支 git stash git checkout branch2 git stash pop 搜索 从当前目录的所有文件中查找文本内容...: $ git grep "Hello" 在某一版本中搜索文本: $ git grep "Hello" v2.5 提交历史 从最新提交开始,显示所有的提交记录(显示hash, 作者信息,提交的标题和时间...切换分支: $ git checkout 创建并切换到新分支: $ git checkout -b 基于当前分支创建新分支: $ git branch 基于远程分支创建新的可追溯的分支...解决冲突: $ git mergetool 在编辑器中手动解决冲突后,标记文件为已解决冲突 $ git add $ git rm 撤销 放弃工作目录下的所有修改: $ git reset
git操作一般分为三个阶段:图片工作目录文件系统中实际文件的状态,可以跟踪或取消跟踪,可以更改或删除。...git rm {file or folder} 从工作目录中删除文件(用于新提交) git add -A ....{something} 列出与某事匹配的提交 git reflog 像 git log,但显示已删除的提交...将更改添加到最后一次提交 git restore --staged {file or folder} 从暂存区域中删除文件...git clone {repo url} 将存储库克隆到新目录
& PUBLISH 关于更新和发布的 6 MERGE & REBASE 关于分支合并类的 7 UNDO 关于撤销类的 8 SUBMODULE 关于子模块 CREATE 从远程仓库获取代码 git clone...ssh://user@domain.com/repo.git 初始化本地仓库 git init LOCAL CHANGES 查看仓库的状态,(显示已改动的文件) git status 比较工作区与最新本地版本库...添加修改(modified)和被删除(deleted)文件,不包括新文件(new)也就是不是被追踪文件(untracked) git add -u 添加文件内某些改动到暂存区 git add -p 提交所有的放在暂存区的文件和已经修改(不在暂存区)的文件,且问件是要被追踪(tracked)的 git commit -a 提交所有被在暂存区的问件 git commit 修改上一次提交日志 $ git...git add 删除已手动合并的文件 git rm UNDO 回退到最近一个提交 git reset --hard HEAD 回退到上一次提交
合并: # 将分支合并到当前HEAD中 $ git merge 重置: # 将当前HEAD版本重置到分支中,请勿重置已发布的提交 $ git rebase Github...hotfix 分支 – 当我们在 master 发现新的 Bug 时候,我们需要创建一个 hotfix, 完成 hotfix 后,我们合并回 master 和 develop 分支,所以 hotfix...-b my-branch 我想把未暂存的内容移动到另一个已存在的分支 git stash git checkout my-branch git stash pop 我想丢弃本地未提交的变化(uncommitted...已删除补丁(patch) 如果某人在 GitHub 上给你发了一个 pull request, 但是然后他删除了他自己的原始 fork, 你将没法克隆他们的提交(commit)或使用 git am。...在这种情况下, 最好手动的查看他们的提交(commit),并把它们拷贝到一个本地新分支,然后做提交。 做完提交后, 再修改作者,参见变更作者。
彻底删除指定版本: # 执行下面命令后,commit-hash 提交后的记录都会被彻底删除,使用需谨慎 $ git reset --hard ...合并: # 将分支合并到当前HEAD中 $ git merge 重置: # 将当前HEAD版本重置到分支中,请勿重置已发布的提交 $ git rebase Github...hotfix 分支 - 当我们在 master 发现新的 Bug 时候,我们需要创建一个 hotfix, 完成 hotfix 后,我们合并回 master 和 develop 分支,所以 hotfix...已删除补丁(patch) 如果某人在 GitHub 上给你发了一个 pull request, 但是然后他删除了他自己的原始 fork, 你将没法克隆他们的提交(commit)或使用 git am。...在这种情况下, 最好手动的查看他们的提交(commit),并把它们拷贝到一个本地新分支,然后做提交。 做完提交后, 再修改作者,参见变更作者。
git add my_script.py 有了.你可以在当前目录中包括了.开头的文件添加的所有文件。 git add . 您可以从暂存中删除文件,同时用reset保留工作目录中的更改。...在切换到新分支之前,您将保留在当前活动的分支上。 git branch new-branch 切换到任何现有分支并将其签出到当前工作目录中。...git cherry-pick f7649d0 合并分支并且不再需要分支后,可以将其删除。...git merge upstream/master 将本地分支提交推送或传输到远程存储库分支。 git push origin master 从跟踪远程分支获取并合并任何提交。...git rebase upstream/master 重置 有时,包括在rebase之后,您需要重置您的工作树。您可以使用以下命令重置为特定提交,并删除所有更改。
在本文中,我们将分享50多个常用的Git命令,并为每个命令提供详细的示例,帮助您更好地理解和使用它们。图片仓库创建与克隆1. git init初始化一个新的Git仓库。...示例:git checkout branch_namegit checkout -- file.txt11. git merge将指定分支的更改合并到当前分支。...示例:git merge branch_name12. git rebase将当前分支的更改移动到另一个分支上。...示例:git remote add origin https://github.com/user/repo.gitgit remote -v14. git push将本地仓库的更改推送到远程仓库。...示例:git push origin master15. git pull从远程仓库获取最新的更改。
它只添加指定文件在 add 命令运行时刻的内容;如果您希望下次提交(commit)中包含后续更改,则必须再次运行git add以将新内容添加到暂存区中。...… 在命令行上提供文件时,该命令将提交指定文件的内容,而不记录已暂存的更改。这些文件的内容也会在之前的演出之上进行下一次提交。...使用--merged,将仅列出已合并到命名提交的分支(即,可以从命名提交到提示提交的分支)。使用--no-merged将仅列出未合并到命名提交的分支。...如果没有给出-b选项,则通过查看为相应远程配置的 refspec 的本地部分,从远程跟踪分支派生新分支的名称,然后将初始部分剥离到“ *”。...,将更新分支以引用新提交。
拼写错误的最后提交消息 经过几个小时的编码后,您的提交消息可能存在很多拼写错误,好在有一个简单的解决方案: git commit --amend 该命令将打开您的编辑器,并允许您更改最后一次提交消息。...所以你可以使用 mv 你可以使用 mv 命令类似重命名文件的方式重命名此分支:将其移动到具有正确名称的新位置。...我们需要从远程删除旧分支并推送新分支: git push origin --delete feature-brunch git push origin feature-branch 不小心将所有更改提交到主分支...这时候已经提交了大量文件,而且这些提交都位于主分支上。 现在我们需要使用以下三个命令将所有这些更改回滚到新分支: 注意:确保先提交或存储更改,否则一切都将丢失!...git commit 上述命令将撤消提交,删除图像,然后在其位置添加新提交。
: $ git init 在指定目录创建一个新的本地仓库: $ git init ---- 本地修改 显示工作路径下已修改的文件: $ git status 显示提交文件的变化: $ git diff...stash pop 将缓存的变化应用到当前分支: $ git stash apply 删除缓存的变化: $ git stash drop ---- 搜索 从当前目录的所有文件中查找文本内容: $ git...: $ git checkout -b 从现有的提交创建一个新的分支,并切换到新的分支: $ git checkout -b 基于当前分支创建新分支: $ git branch 基于远程分支创建新的可追溯的分支...HEAD 中: $ git merge 列出合并的分支: $ git branch --merged 将当前 HEAD 版本重置到分支中: 请勿重置已发布的提交!...config --global merge.tool meld 使用配置好的 merge tool 解决冲突: $ git mergetool 在编辑器中手动解决冲突后,将文件标记为已解决冲突: $
在Windows平台安装msysgit后,Git的命令环境是Git Bash. 配置Git的User信息.... $ mkdir repo $ cd repo $ pwd /E/repo $ git init 初始化库后,将会在版本库目录下创建一个.git的隐藏目录... $ git commit -m "description" 4.暂存更改(stash) 将工作区中有修改还未提交的更改储藏到暂存栈中,清干净工作区 $ git stash ...显示暂存栈中储藏的更改 $ git stash list 将储藏的更改从暂存栈中恢复到工作区 $ git stash pop 清除暂存栈中内容 $ git stash...文件差异,已添加进库管理时的差异 $ git commit -m "add file" #提交更改,提交到本地版本库 (3)创建新分支 当有某种需要时可以再创建新分支
领取专属 10元无门槛券
手把手带您无忧上云