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

众所周知,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
会列出指定提交中所有修改的文件,以及每个文件的行数变化。

git show --name-only
会列出指定提交中所有修改的文件名。

git show 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=
显示指定作者的所有提交历史记录。

忽略已加入到版本库中的文件

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,加入自由生活!

你可能感兴趣的:(git分布式分布式系统版本控制)