命令学习:Learn Git Branching
Git 命令大全:Git 大全
版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。关键时刻,可以回退版本。
除了项目源代码,你可以对任何类型的文件进行版本控制。
方便个人管理项目文件。
大多都是采用某种简单的数据库来记录文件的历次更新差异。
为解决开发者协同合作问题而生。
都有一个单一的集中管理的服务器,可以保存所有文件的修订版本,协同工作的开发者们都可以通过客户端连到这台服务器,取出最新的文件或者提交更新。
有两个问题:
为解决上面的问题面世,比如:Git
有以下几个优点:
在使用 Git 进行开发时,常用的操作流程包括:
创建 Git 仓库:使用 git init
命令初始化一个新的 Git 仓库。也可以使用 git clone
命令克隆一个远程仓库到本地。
添加文件到暂存区:使用 git add
命令将修改的文件添加到 Git 的暂存区中。
提交修改:使用 git commit
命令提交修改。可以使用 -m
参数指定提交的注释信息。
分支操作:使用 git branch
命令创建、删除、查看分支。使用 git checkout
命令切换分支。
合并分支:使用 git merge
命令将一个分支合并到当前分支。
推送修改:使用 git push
命令将本地修改推送到远程仓库。
拉取修改:使用 git pull
命令从远程仓库拉取最新修改。
查看修改历史:使用 git log
命令查看提交历史。
撤销修改:使用 git reset
命令撤销某次提交。可以使用 --soft
参数保留修改到暂存区,使用 --mixed
参数保留修改到工作区,使用 --hard
参数彻底删除修改。
标签操作:使用 git tag
命令创建、删除、查看标签。标签可以用于标记某个版本,便于后续查找和发布。
working =add=>
index =commit=>
HEAD =push=>
远程仓库
在工作目录中修改文件。 – 即写代码
暂存文件,将文件的快照放入暂存区域。 – 即表示已修改,文件变蓝色
提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录中。
文件的快照:就是指 文件的数据。是 Git 版本控制的核心。
指令:git -- version
Git有三个主要的配置文件:
三个配置文件的优先级是 ① < ② < ③
① 系统全局配置(–system):包含了适用于系统所有用户和所有仓库(项目)的配置信息,存放在 Git 安装目录下:C:\Program Files\Git\etc\gitconfig
② 用户全局配置(–global):当前系统用户的全局配置,存放用户目录:C:\Users\[系统用户名]\.gitconfig
。
③ 仓库/项目配置(–local):仓库(项目)的特定配置,存放在项目目录下:.git/config
#查看git配置
git config --list
git config -l
#查看系统配置
git config --system --list
#查看当前用户(global)全局配置
git config --list --global
#查看当前仓库配置信息
git config --local --list
Git Flow 是一种基于 Git 版本控制工具的分支管理工作流程,它定义了一套完整的分支模型,包括主分支、开发分支、功能分支、修复分支等,旨在优化团队协作、版本发布和代码质量等方面的工作流程。
有两种方法:
在当前项目目录中初始化仓库:
右键点击 Git Bash Here
进入窗口运行 git init
命令,该命令将创建一个名为 .git
的子目录,代表已经加入版本控制。
从一个服务器(远程仓库)克隆一个现有的 Git 仓库:
进入希望项目存放的目录地址,运行 git clone [url] 自定义文件夹名称
命令。
注意,使用Git
命令克隆的方式可以和 原项目 随时保持更新同步。
克隆本地仓库
git clone /path/to/repository
添加、删除、改名:
# 添加指定文件到暂存区,包括被修改的文件
$ git add [file1] [file2] ...
# 添加当前目录的所有文件到暂存区
$ git add .
# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...
# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]
提交:
git commit -m "代码提交信息"
– 此时已提交到了本地仓库中touch README.md
git checkout
查看本地 Git 仓库已经关联的远程仓库:git remote -v
关联远程仓库:git remote add origin
推送分支:git push origin master[分支名称]
origin
是远程仓库的名称,是远程仓库的 URL。
命令:git remote remove origin
在使用 IntelliJ IDEA 进行 Git 操作时,更新项目时会出现如下两个选项:
Update Project
使用的是普通合并(merge)的方式,它会将远程分支上的最新代码拉取到本地,然后将本地分支上的代码与远程分支上的代码合并。如果有冲突,需要手动解决冲突并提交代码。这种方式会生成一个新的合并提交,保留了本地分支和远程分支的所有提交历史。Update Project with Rebase
使用的是变基(rebase)的方式,它会将本地分支上的所有提交临时保存,然后将远程分支上的最新代码拉取到本地,并用变基的方式将本地分支上的所有提交重新基于远程分支的最新提交。如果有冲突,需要手动解决冲突并提交代码。这种方式会生成一系列新的提交,覆盖了本地分支的所有提交历史。需要注意的是,使用变基操作会改变提交历史,可能会影响其他人的开发分支。因此,在多人协作开发中,建议使用普通合并(merge)操作,只在特定情况下使用变基操作,例如在开发分支上进行调整和整理提交历史。
在选择更新方式时,可以根据实际情况选择合适的选项。如果当前分支与远程分支的差异较小,可以使用普通合并;如果差异较大,或者需要整理提交历史,可以使用变基操作。无论选择哪种方式,都需要谨慎处理未提交的修改,以免造成代码冲突和数据丢失。
如果你已经将代码提交到本地仓库或远程仓库,你仍然可以回滚代码更改。回滚操作可以还原到之前的提交状态,撤销先前的更改。
下面是一些常用的回滚命令:
回滚到上一次提交:
git revert HEAD
回滚到指定提交(使用提交哈希值):
git revert <commit-hash>
回滚到指定提交并将后续提交合并为一个新的提交:
git revert <commit-hash>..HEAD
这些命令会创建一个新的提交,该提交会撤销指定的更改。请注意,这些命令会创建一个新的提交,而不是直接删除或修改历史提交记录。
如果你要回滚到之前的提交,并且希望删除回滚之后的提交记录,可以使用 git reset
命令。但是,请注意,git reset
命令会修改历史提交记录,因此在使用之前请确保你了解其影响。
如果你已经将代码推送到远程仓库,回滚后可能需要使用 git push
命令将回滚提交推送到远程仓库。
请注意,回滚操作是不可逆的,因此在执行回滚前,请确保你已经备份了重要的更改或提交。对于使用 Git 的版本控制系统,强烈建议在进行敏感操作之前,先熟悉 Git 的基本操作和相关命令,并在安全的环境中进行测试。
如果你已经将代码提交并推送到远程仓库,但后来想要撤销该提交。以下是一些可能的情况:
git reset
或 git revert
来撤销提交。这不会影响其他人的工作。git reset
会将HEAD指针移动到以前的提交,将历史记录修改为不包含该提交。但是,这会删除提交的历史记录,可能会导致冲突。git revert
会创建一个新的提交,该提交撤销了以前的提交,保留了历史记录。这是更安全的方法,因为不会破坏历史记录。已经推送到远程仓库,但还没被人拉取的情况
如果你的提交已经被推送到远程仓库,但尚未被其他人拉取,你可以使用以下步骤来撤销该提交:
注意: 这个过程将修改你的本地历史记录,因此如果你正在与其他人协作,最好与他们协商并确保其他人知道你要执行这个操作。
查看提交历史: 使用以下命令查看提交历史,找到你想要撤销的提交的哈希值(SHA-1):
git log
撤销提交: 使用以下命令来撤销提交,将
替换为你想要撤销的提交的哈希值:
git reset --hard <commit-hash>
这将将你的 HEAD 指针和工作目录还原到指定提交的状态,同时删除了该提交之后的所有提交。
强制推送到远程仓库: 由于你已经修改了历史记录,你需要使用 --force
(或-f
)选项来强制推送到远程仓库:
git push --force origin <branch-name>
其中,
是你当前工作的分支名称。
请注意,强制推送可能会破坏其他人的工作副本,因此在执行此操作之前,请确保你已与团队协商,以确保不会引发问题。
此外,由于这个操作可能会删除历史记录,只有在你确定没有其他人在使用这个历史记录或有备份的情况下才应该执行。