10

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

 1 year ago
source link: https://studygolang.com/articles/36248
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

众所周知,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 popgit 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,加入自由生活!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK