Git常用命令汇总篇(附使用详细介绍)

MasutaaDAO · · 1461 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

众所周知,Git是一个开源的分布式版本控制系统,用于跟踪和管理源代码的变更。而Git有着大量的常用命令。 **这些命令是为了帮助开发者更有效率地进行版本控制,包括创建和切换分支,提交更改,合并分支等等**。 通过这些命令,开发者可以轻松地管理代码的不同版本,跟踪和回滚更改,以及协作其他开发者。 下面,我总结了Git的常用命令,一文教你如何快速控制Git。 ## **常用操作** `git push origin test` 推送本地的`test`分支到远程仓库`origin`上。如果远程仓库没有`test`分支,分支将会被自动创建。 `git rm -r --cached 文件/文件夹名字` 用于从Git的版本控制中移除文件或者文件夹,但是它们仍然会保留在你的本地文件系统中。 `git reflog` 会显示所有的移动HEAD的操作记录,包括commit,reset,checkout等操作,可以用来找回丢失的commit。 `git log --graph` 会以图形化的方式显示提交历史记录,对查看分支和合并的历史非常有帮助。 `git merge --no-ff -m '合并描述' 分支名` 会把指定的分支合并到当前分支。`--no-ff`选项表示即使可以进行快进(fast-forward)合并也要创建一个新的commit,这样可以在历史记录中看到这次合并操作。 `git check-ignore -v 文件名` 会检查指定的文件是否被`.gitignore文件`所忽略,并且显示是哪一条忽略规则导致的。 `git add -f 文件名` 会强制将文件添加到Git的版本控制中,即使这个文件被`.gitignore文件`所忽略。 `git add -u` 会将所有已经被Git跟踪并且被修改(但还没有被staged)的文件添加到暂存区中。它不会添加新的文件(未被Git跟踪的文件)。 ## **git 创建项目仓库** `git init` 用于在当前目录下**初始化**一个新的Git仓库。当你执行此命令后,Git将在当前目录下创建一个名为`.git`的隐藏目录,这个目录包含了仓库的所有元数据,例如:提交历史、分支和标签等。 `git remote add origin url` 用来将本地的Git仓库与远程的Git仓库进行关联。其中,`origin`是远程仓库的名字,这个名字是可以自定义的,但大部分人习惯性地使用`origin`作为远程仓库的名字。`url`则是远程仓库的地址。 `git pull` 用于将远程仓库的更改拉取到本地。具体来说,它是先执行`git fetch`来获取远程仓库的最新状态,然后执行`git merge`将这些更改合并到当前分支。 `git fetch` 从远程仓库获取所有的分支和标签,但是它并不会自动合并或修改当前的工作。这意味着,你可以在任何时候执行`git fetch`,而不必担心当前的工作被影响到。 ## **分支操作** `git branch` 可以创建一个新的分支。例如,`git branch new_branch`将创建一个名为`new_branch`的新分支。 `git checkout` 用于切换到另一个分支。例如,`git checkout new_branch`将切换到名为`new_branch`的分支。 `git checkout -b` 用于创建并切换到一个新的分支。 `git branch` 用无参数执行,会列出所有的本地分支。当前的分支名前会有一个`*`标记。 `git branch -v` 会列出所有的分支,以及每个分支最后一次提交的信息。 `git branch -vv` 会列出所有的分支,它们与上游分支的关系,以及每个分支最后一次提交的信息。 `git checkout -b 分支名 origin/分支名` 用于从远程仓库创建一个新的分支到本地,并切换到新的分支。 `git branch --merged` 会列出所有已经被合并到当前分支的分支。 `git branch --no-merged` 会列出所有还没有被合并到当前分支的分支。 `git branch -d 分支名` 会删除指定的分支,前提是这个分支已经被合并过。否则Git会给出一个警告。 `git branch -D 分支名` 会强制删除指定的分支,不管这个分支是否已经被合并。 `git push origin :分支名` 用于删除远程仓库的分支。 `git merge 分支名` 会将指定的分支合并到当前分支。如果可能,Git会进行"fast-forward"合并,只更新指向最新提交的指针。如果不可能,Git会创建一个新的提交,这个提交有两个父提交。 ## **暂存操作** `git stash` **超级重要的命令**!它允许你将当前的工作目录的修改保存起来,以便在未来的某个时候再应用。这对于在进行一些复杂的任务,如切换分支或拉取新的更新时,需要暂时保存当前的工作状态非常有用。 `git stash apply` **用于将最近一次保存的暂存修改应用到工作目录**。这不会从暂存列表中移除该暂存,所以可以多次应用它。 `git stash pop` 和`git stash apply`类似,但在应用暂存修改后,它会从暂存列表中删除这个暂存。这样做的好处是,**不需要再去手动清理暂存列表**。 `git stash list` 用于查看当前的所有暂存。每个暂存都有一个唯一的名称,如`stash@{0}`,`stash@{1}`等。 `git stash drop` 用于删除一个特定的暂存。需要指定要删除的暂存的名称,如`stash@{0}`。 `git stash clear` 用于清除所有的暂存。这是一个危险的操作,因为一旦执行,所有的暂存都将被永久删除,无法恢复。 ## **回退操作** `git reset --hard HEAD^` 用于将代码库回退到上一个版本。其中,HEAD^表示当前版本的上一个版本,如果你想回退到上上个版本,可以使用HEAD^^,以此类推。--hard参数表示强制回退,会删除所有未提交的本地修改。 `git reset --hard commit_id` 用于将代码库回退到指定的版本。其中,commit_id是你想回退到的版本的唯一标识符,可以去在git日志中找。 `git checkout -- file` 用于撤销指定文件的修改。file是你想撤销修改的文件的路径。如果这个文件已经被添加到暂存区,那么会将文件回退到暂存区的状态;如果这个文件已经被提交到版本库,那么会将文件回退到最后一次提交的状态。 `git reset HEAD file` 用于撤销暂存区的文件修改,将其回退到工作区。file是你想撤销修改的文件的路径。会将文件从暂存区中移除,但是不会删除文件的修改,这些修改会保留在工作区。 ## **标签操作** `git tag 标签名` 用来在当前提交的版本上创建一个新的标签。标签是一个引用,可以用来标记项目中的重要点,例如发布的版本。 `git tag 标签名 commit_id` 用来在指定的提交记录上创建一个新的标签。 `git tag` 会列出项目中的所有标签。 `git tag -a 标签名 -m '描述'` 创建一个带有描述信息的新标签。`-a`参数表示创建一个带有注解的标签,`-m`参数则用来提供注解信息。 `git tag -d 标签名` 会删除本地的指定标签。 `git show 标签名` 会显示指定标签的详细信息,包括创建标签的提交记录和注解信息。 `git show --stat <commit>` 会列出指定提交中所有修改的文件,以及每个文件的行数变化。 `git show --name-only <commit>` 会列出指定提交中所有修改的文件名。 `git show <commit> filename` 会显示指定提交中指定文件的变化。 `git push origin 标签名` 会将本地的指定标签推送到远程仓库。 `git push origin --tags` 会将本地的所有标签推送到远程仓库。 `git push origin :refs/tags/标签名` 会从远程仓库中删除指定的标签。在`:`之前的部分是本地引用,之后的部分是远程引用,如果之前的部分为空,那么就表示删除远程的引用。 ## **其他操作** ### **查看提交记录** `git log` 显示所有的提交历史记录。每个提交都会显示作者、日期和提交消息。 `git log branchname` 显示指定分支的所有提交历史记录。 `git log -n` 显示最近n次的提交。n是你想查看的提交数量。 `git log filename` 显示指定文件的所有提交历史记录。 `git log --pretty=oneline filename or directory` 以一行的形式显示指定文件或目录的所有提交历史记录。 `git log --graph 分支名(多个分支名以空格隔开)` 以图形形式显示一个或多个分支的所有提交历史记录。 `git log --graph --all` 以图形形式显示所有分支的所有提交历史记录。 `git log --author=<author name>` 显示指定作者的所有提交历史记录。 ### **忽略已加入到版本库中的文件** `git update-index --assume-unchanged file` 让Git忽略单个已经被跟踪的文件的改动。 `git rm -r --cached 文件/文件夹名字 (. 忽略全部文件)` 从Git的跟踪列表中移除文件或文件夹,但不会删除物理文件。 ### **取消忽略文件** `git update-index --no-assume-unchanged file` 取消对指定文件的忽略,Git将再次跟踪此文件的改动。 ### **拉取、上传免密码** `git config --global credential.helper store` 让Git记住你的用户名和密码。当你在执行需要验证的操作(如push和pull)时,Git会自动为你填写用户名和密码,无需手动输入。但也会将你的凭据存储在磁盘上,所以使用时注意安全问题。 ## **关于Masutaa** Masutaa是个互联网从业者自由协作交流平台,链接行业内TOP10%人才!目前平台上已经有将近400名互联网尖端人才,其中近70%的从业者从业年限超3年。加入Masutaa,加入自由生活!

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1461 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
1 回复  |  直到 2023-08-11 18:18:32
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传