日程使用git,不出错的时候git pull、git add、git commit、git push、git rebase等命令,就能覆盖绝大多数工作场景了。但是,实际工作中会遇到些让我们十分棘手的情况,这时候就需要一些不常用但不可少的 git 命令了,接下来为大家详细介绍下各种 git 命令:
一、初始化仓库(不常用)
命令:git init
用途:将当前目录初始化为 Git 仓库。实际开发中,大多在搭建新项目时用到,正常情况下是直接克隆远程已有的仓库。
使用详解:
在一个空文件夹或者一个现有项目的文件夹中打开命令行终端。输入git init
命令后,Git 会在该目录下创建一个隐藏的.git
文件夹,这个文件夹包含了 Git 仓库的所有管理信息,如版本历史、分支信息等。初始化后,该目录就成为了一个 Git 仓库,可以开始进行版本控制操作。
代码示例:
git init
二、克隆远程仓库(不常用,必备)
命令:git clone <远程仓库地址>
用途:从远程仓库克隆一个完整的项目到本地。入职或加入一个新的项目开发团队都要用到,记得克隆完关联一下对应的远程仓库,以便后续拉取代码和提交代码。
使用详解:
当你想要获取一个远程仓库中的项目时,可以使用git clone
命令。例如,远程仓库地址是https://github.com/username/repository.git
,输入git clone https://github.com/username/repository.git
,Git 会将这个远程仓库中的所有文件和版本历史克隆到本地的一个新文件夹中。克隆完成后,你可以在本地对这个项目进行修改、提交等操作。
代码示例:
git clone https://github.com/username/repository.git
三、设置用户名(不常用,必备)
命令:git config --global user.name "Your Name"
用途:设置 Git 的用户名,用于标识提交者。入职新公司基本都需要配置自己的用户名,以便查看是谁提交的代码。
使用详解:
在使用 Git 进行版本控制时,需要设置用户名,以便在提交时记录提交者的信息。例如,输入git config --global user.name "John Doe"
设置用户名为 “John Doe”。这些设置是全局的,适用于所有的 Git 仓库。如果只希望在特定的仓库中设置用户名,可以去掉--global
参数,在仓库目录下执行命令。
代码示例:
git config --global user.name "前端拾光者"
四、设置邮箱(不常用,必备)
命令:git config --global user.email "[email protected]"
用途:设置 Git 的邮箱,用于标识提交者。和用户名一起,入职新公司时都要配置。
使用详解:
输入git config --global user.email "[email protected]"
设置邮箱为 “[email protected]”。这些设置是全局的,适用于所有的 Git 仓库。如果只希望在特定的仓库中设置邮箱,可以去掉--global
参数,在仓库目录下执行命令。
代码示例:
git config --global user.email "[email protected]"
五、关联远程仓库(不常用,必备)
命令:git remote add <远程仓库别名> <远程仓库地址>
用途:将本地仓库与远程仓库关联起来。关联后才能提交到指定的远程仓库。
使用详解:
当你在本地克隆了一个远程仓库或者创建了一个新的本地仓库后,可以使用这个命令将本地仓库与远程仓库关联起来。例如,输入git remote add origin https://github.com/username/repository.git
,将本地仓库与远程仓库关联起来,并给远程仓库起别名为 “origin”。之后,你可以使用 “origin” 来指代这个远程仓库进行拉取、推送等操作。
代码示例:
git remote add origin https://github.com/username/repository.git
六、更改关联的远程仓库(不常用)
命令:git remote set-url <远程仓库别名> <新的远程仓库地址>
用途:更改已关联的远程仓库地址。
使用详解:
如果远程仓库的地址发生了变化,或者你想要将本地仓库关联到另一个远程仓库,可以使用这个命令。例如,假设之前关联的远程仓库地址发生了变化,输入git remote set-url origin https://new-url.com/username/repository.git
,将关联的远程仓库地址更改为新的地址。这样,后续的拉取和推送操作将使用新的远程仓库地址。
代码示例:
git remote set-url origin https://new-url.com/username/repository.git
七、添加文件到暂存区(不常用,一般在vscode或idea等软件操作)
命令:git add <文件名>
或git add.
用途:将文件添加到暂存区,准备提交。
使用详解:
-
git add <文件名>
:如果只想添加特定的一个文件,可以使用这个命令,将指定的文件添加到暂存区。例如,有一个文件名为file1.txt
,输入git add file1.txt
,就会把这个文件添加到暂存区,准备进行下一步的提交操作。 -
git add.
:这个命令会将当前目录下的所有修改过的文件以及新添加的文件添加到暂存区。它非常方便,当你对多个文件进行了修改或者添加了多个新文件时,不需要逐个列出文件名,直接使用这个命令就可以一次性将它们都添加到暂存区。
代码示例:
git add helloWorld.html
八、提交代码到本地(常用,必备)
命令:git commit -m "提交说明"
用途:将暂存区的文件提交到项目本地git仓库。
使用详解:
在将文件添加到暂存区后,需要使用git commit
命令来正式创建一个版本。-m
参数后面跟着的是提交说明,这是对本次提交的一个简短描述,应该清晰地说明本次提交做了哪些更改。例如,git commit -m "第一次提交,添加了两个文件"
,这个提交说明告诉其他人这次提交是第一次提交,并且添加了两个文件。提交后,Git 会为这次提交分配一个唯一的哈希值,用于标识这个版本。
代码示例:
git commit -m "feat: 新增一键加薪按钮功能"
九、查看状态(不常用)
命令:git status
用途:查看仓库当前的状态,包括哪些文件被修改、哪些文件在暂存区等。
使用详解:
在进行了一些操作后,可能不确定当前仓库的状态,这时可以使用git status
命令。它会显示出当前仓库的状态信息,比如哪些文件被修改了但还没有添加到暂存区(显示为 “Changes not staged for commit”),哪些文件已经在暂存区准备提交(显示为 “Changes to be committed”),以及当前所在的分支等信息。通过这个命令,可以清楚地了解当前仓库的状态,以便决定下一步的操作。
代码示例:
git status
十、查看当前本地分支提交历史记录(常用,必备)
命令:git log
用途:查看提交历史记录。
使用详解:
输入git log
命令后,会显示出每次提交的详细信息,包括提交的哈希值、提交的作者、提交时间以及提交说明。通过查看历史记录,可以了解项目的发展过程,以及每个版本的具体更改内容。可以使用--oneline
参数来显示简洁的提交历史,只显示哈希值和提交说明,例如git log --oneline
。
代码示例:
git log
十一、查看包括已撤销的提交记录(不常用,必备)
命令:git reflog
用途:查看 Git 仓库的引用日志,包括所有的提交、分支切换、重置等操作记录,即使某些提交被撤销也能看到。需要回退到某些被撤销的历史提交记录时,可以先用git reflog查看对应提交记录的哈希值(commitId),然后用git reset --hard <commitId>回退到那个提交记录。
使用详解:
输入git reflog
后,会显示出一个按时间顺序排列的操作记录列表。每一行代表一个操作,包括操作的哈希值、操作类型和简短描述。例如,可能会看到类似 “HEAD@{0}: commit: Added new feature” 这样的记录,表示在某个时间点进行了一次提交操作。通过这个命令,可以找回不小心丢失的提交或者恢复到之前的某个状态。
代码示例:
git reflog
十二、拉取远程仓库更新(git pull)
命令:git pull
用途:从远程仓库拉取最新的更改并合并到本地分支。用git pull --rebase更好些,可以避免一些需要合并代码的情况。
使用详解:
如果与远程仓库有连接,并且其他人在远程仓库上进行了提交,你可以使用git pull
命令来拉取远程仓库的更新。这个命令实际上是git fetch
(从远程仓库获取最新的提交)和git merge
(将获取的提交合并到本地分支)两个命令的组合。输入git pull
后,Git 会先从远程仓库获取最新的提交,然后尝试将这些提交合并到当前所在的本地分支。如果有冲突,需要手动解决冲突后才能完成拉取操作。
代码示例:
git pull
十三、拉取远程仓库更新并使用变基(常用,必备)
命令:git pull --rebase
用途:从远程仓库拉取最新的更改,并使用变基操作将本地分支的提交应用到远程分支的最新提交之上。(这个相当于自己本地新的提交记录永远排在最前面,远程新的提交记录插在历史提交记录和自己本地新的提交记录之间)。
使用详解:
这个命令结合了git pull
和git rebase
的功能。当你想要拉取远程仓库的更新,并使本地分支的历史更加整洁时,可以使用这个命令。例如,输入git pull --rebase
,Git 会先从远程仓库获取最新的提交,然后尝试使用变基操作将本地的提交应用到远程分支的最新提交之上。如果有冲突,需要手动解决冲突后才能完成操作。
代码示例:
git pull --rebase
十四、切换分支(常用,必备)
命令:git checkout <分支名>
用途:切换到指定的分支。
使用详解:
当你需要在不同的分支上工作时,可以使用这个命令进行切换。例如,有 “master” 和 “feature” 两个分支,输入git checkout feature
就可以切换到 “feature” 分支进行开发工作。切换分支后,工作目录会变为目标分支的状态,你可以在这个分支上进行修改、提交等操作。
代码示例:
git checkout xh_dev_1
十五、创建并切换分支(常用,必备)
命令:git checkout -b <分支名>
用途:创建一个新分支并切换到该分支。
使用详解:
当你想要开始一个新的功能开发或者进行特定的任务时,常常需要创建一个新的分支来隔离这些更改,以免影响主分支或其他稳定的分支。使用git checkout -b <分支名>
可以一步完成创建新分支和切换到新分支的操作。例如,输入git checkout -b new_feature
,就会创建一个名为 “new_feature” 的分支,并立即切换到这个分支。这样,你可以在这个新分支上进行开发工作,而不会影响到其他分支的稳定性。如果后续想要查看当前所有分支,可以使用git branch
命令,当前所在的分支前面会有一个星号(*)标识。
代码示例:
git checkout -b xh_dev_2
十六、合并分支(常用,必备)
命令:git merge <要合并的分支名>
用途:将一个分支的更改合并到当前分支。会多生成一条用于记录合并操作的提交记录,不太推荐。
使用详解:
假设在 “new_branch” 分支上进行了一些修改并提交,现在想要将这些更改合并到主分支上。首先切换到主分支,然后输入git merge new_branch
,Git 会尝试将 “new_branch” 分支的更改合并到主分支。如果没有冲突,合并会顺利完成;如果有冲突,需要手动解决冲突后再进行提交。
代码示例:
git merge xh_dev_1
十七、变基操作(常用,必备)
命令:git rebase <目标分支>
用途:将当前分支的提交变基到目标分支上。这个也有合并功能,合并后提交记录清晰明了,非常推荐。
使用详解:
假设你在一个分支上进行了一些开发,而与此同时,另一个分支也有了新的提交。为了使你的分支的历史更加整洁,可以使用git rebase
命令将你的分支变基到另一个分支上。例如,你在 “feature” 分支上进行开发,而主分支 “master” 有了新的提交。输入git rebase master
,就会将 “feature” 分支的提交应用到 “master” 分支的最新提交之上,使 “feature” 分支的历史看起来像是在 “master” 分支的最新提交之后进行的开发。需要注意的是,变基操作可能会引入冲突,需要手动解决冲突后才能完成变基。
代码示例:
git rebase xh_dev_1
十八、挑选特定的一个提交记录合并到当前分支(不常用,必备)
命令:git cherry-pick <提交哈希值>
用途:将指定的提交应用到当前分支。从一个分支中挑选特定的一个提交记录,合并到当前分支上。
使用详解:
有时候,你可能想要从一个分支中挑选特定的一个提交,并将其应用到另一个分支上。例如,在分支 A 中有一个非常重要的提交,你希望将这个提交也应用到分支 B 上。这时可以使用git cherry-pick
命令,输入git cherry-pick <提交哈希值>
,其中提交哈希值是你想要挑选的提交的唯一标识。Git 会将这个提交应用到当前所在的分支上。需要注意的是,如果挑选的提交与当前分支的历史有冲突,需要手动解决冲突后才能完成操作。
代码示例:
git cherry-pick d591e0f64c89a48ad1f9a250e7a6dea0cca511a6
十九、中止合并操作(常用,必备)
命令:git merge --abort
用途:中止正在进行的合并操作,恢复到合并之前的状态。
使用详解:
当进行合并操作时出现了问题,或者不想继续进行合并,可以使用这个命令。例如,在执行git merge new_branch
后,如果出现了难以解决的冲突或者其他问题,可以输入git merge --abort
来中止合并,恢复到合并之前的分支状态。
代码示例:
git merge --abort
二十、中止变基操作(常用,必备)
命令:git rebase --abort
用途:中止正在进行的变基操作,恢复到变基之前的状态。
使用详解:
如果在进行变基操作时遇到了问题或者不想继续进行变基,可以使用这个命令。例如,在执行git rebase master
后,如果出现了复杂的冲突或者其他问题,可以输入git rebase --abort
来中止变基,恢复到变基之前的分支状态。
代码示例:
git rebase --abort
二十一、中止挑选提交操作(不常用,必备)
命令:git cherry-pick --abort
用途:中止正在进行的挑选提交操作,恢复到挑选提交之前的状态。
使用详解:
如果在进行挑选提交操作时遇到了问题或者不想继续进行挑选提交,可以使用这个命令。例如,在执行git cherry-pick <提交哈希值>
后,如果出现了冲突或者其他问题,可以输入git cherry-pick --abort
来中止挑选提交,恢复到挑选提交之前的分支状态。
代码示例:
git cherry-pick --abort
二十二、重置到远程分支状态(不常用,必备)
命令:git reset --hard origin/远程分支名
用途:将本地分支强制重置为远程分支的状态。相当于将指定远程分支的提交记录覆盖本地提交记录,本地提交记录会丢失。
使用详解:
当本地分支与远程分支出现严重不一致的情况,或者你想要放弃本地的所有更改并恢复到与远程分支完全一致的状态时,可以使用这个命令。但需要谨慎使用,因为这个操作会丢弃本地未提交的更改。例如,输入git reset --hard origin/master
,如果当前远程仓库的主分支是 “master”,那么本地的 “master” 分支就会被强制重置为与远程 “master” 分支完全一样的状态。
代码示例:
git reset --hard origin/xh_dev
二十三、设置本地分支关联的远程指定分支(常用,必备)
命令:git branch --set-upstream-to=origin/远程分支名
用途:设置本地分支关联的远程指定分支,以便进行拉取远程指定分支代码和提交代码到远程指定分支。
使用详解:
在使用 Git 进行分支管理时,设置上游分支可以方便地进行拉取和推送操作。例如,输入git branch --set-upstream-to=origin/develop
,如果当前本地分支是 “develop”,那么就会将远程仓库的 “develop” 分支设置为本地 “develop” 分支的上游分支。这样,在进行git pull
和git push
操作时,Git 就知道要从哪个远程分支拉取更新和推送到哪个远程分支。
代码示例:
git branch --set-upstream-to=origin/xh_dev
二十四、推送本地更改到远程仓库(常用,必备)
命令:git push
用途:将本地的提交推送到远程仓库。
使用详解:
在进行了一些本地提交后,如果想要与其他人共享你的更改,就需要将本地的提交推送到远程仓库。输入git push
,如果是第一次推送,可能需要设置远程仓库的地址等信息。然后 Git 会将本地的提交推送到远程仓库,其他人就可以看到你的更改了。推送时需要注意,如果远程仓库上有其他人的提交,并且与你的本地提交有冲突,可能需要先拉取远程仓库的更新,解决冲突后再进行推送。
代码示例:
git push
二十五、强制推送(常用,必备)
命令:git push -f
用途:强制推送本地分支到远程仓库,覆盖远程分支的历史。如果本地分支是最新且正确的,但远程分支有其他提交记录,会导致本地分支提交不上去,这个时候可以用 git push -f 强制覆盖远程分支。
使用详解:
这个命令应该谨慎使用,因为它会覆盖远程分支的历史,可能导致其他开发者的工作出现问题。一般情况下,只有在确定需要覆盖远程分支历史时才使用,比如修复了本地的错误提交并希望强制更新远程分支。例如,如果本地分支出现了错误的提交,并且已经修复,想要强制将本地分支推送到远程分支以覆盖错误的历史,可以使用git push -f
。但在使用之前,最好先与团队成员沟通,确保不会影响其他人的工作。
代码示例:
git push -f
文档将会持续更新,如果错误的地方,欢迎指出,大家一起进步(〃’▽’〃)
标签:git,仓库,代码,--,详解,提交,远程,分支 From: https://blog.csdn.net/jxnd123456/article/details/142260130