Git实践
Git在开发过程中的实用场景操作。
使用git怎么撤销本地(工作区)修改,暂存区修改,版本区(本地仓库)
一、手动合并冲突
手动合并 Git 冲突的步骤如下:
首先,使用
git status命令查看哪些文件存在冲突。然后,使用
git diff命令查看冲突的具体内容,例如:1
git diff <branch1> <branch2> -- <file>
其中,
<branch1>和<branch2>分别表示要合并的两个分支,<file>表示存在冲突的文件名。打开冲突的文件,查看冲突的内容。Git 会在冲突的地方添加特殊的标记,例如:
1
2
3
4
5<<<<<<< HEAD
// 本地修改
=======
// 远程修改
>>>>>>> branch2其中,
HEAD表示当前分支的修改,branch2表示要合并的分支的修改。在这个例子中,=======以上的部分是当前分支的修改,=======以下的部分是要合并的分支的修改。根据需要,选择保留哪些修改,删除哪些修改,或者进行修改。在解决冲突后,将文件保存并关闭。
使用
git add命令将解决冲突后的文件添加到暂存区,例如:1
git add <file>
其中,
<file>表示解决冲突后的文件名。最后,使用
git commit命令提交合并后的代码,例如:1
git commit -m "Merge branch1 and branch2"
其中,
-m参数表示提交信息,用于描述本次提交的内容。
需要注意的是,解决冲突时需要仔细查看冲突的内容,并进行适当的修改。同时,解决冲突后需要将修改提交到 Git 仓库中,以便其他人能够获取到最新的代码。
二、修改代码前忘切换分支
在 Git 中,如果你在进行分支切换前有未提交的修改,可以使用以下命令将修改暂存起来:
1 | git stash |
这个命令会将当前工作目录中的所有修改暂存起来,并清空工作目录,使其回到干净的状态。暂存的修改会被保存在 Git 的一个栈中,可以使用以下命令查看:
1 | git stash list |
这个命令会列出所有暂存的修改,每个修改都有一个唯一的标识符。
如果你需要切换分支,可以使用以下命令:
1 | git checkout <branch> |
其中,
如果你需要恢复之前暂存的修改,可以使用以下命令:
1 | git stash apply <stash> |
其中,
需要注意的是,如果在恢复修改后发现有冲突,需要手动解决冲突后再提交修改。
四、合并提交——git变基
变基其实就是合并提交的过程,可以理解为将树的多个节点合并为一个节点。
在 Git 中,使用 git rebase 命令可以将当前分支的修改放到要变基的分支之后,形成一个新的提交。具体步骤如下:
首先,使用
git checkout命令切换到要变基的分支,例如:1
git checkout branch2
其中,
branch2表示要变基的分支的名称。然后,使用
git pull命令从远程仓库拉取最新的代码,以便在变基之前使用最新的代码。接着,使用
git rebase命令将当前分支的修改放到要变基的分支之后,例如:1
git rebase branch1
其中,
branch1表示要变基的分支的名称。如果在变基的过程中出现冲突,需要手动解决冲突并使用
git add命令将修改添加到暂存区,然后使用git rebase --continue命令继续变基操作。最后,使用
git push --force命令将变基后的代码推送到远程仓库,例如:1
git push --force origin branch2
其中,
--force参数表示强制推送,用于覆盖远程仓库中的代码。需要注意的是,强制推送可能会覆盖其他人的修改,因此需要谨慎使用。
需要注意的是,变基操作会改变 Git 历史记录,因此需要谨慎使用。如果其他人已经基于当前分支进行了开发,那么变基操作可能会破坏他们的工作。因此,建议在进行变基操作之前与其他人进行沟通,并在变基之前备份代码。
七、实践
修改代码前,看一眼分支,pull一下
修改代码后,合并到st并push后马上切换回开发分支。
六、git的配置
6.1 gitconfig文件
(1)是什么?
.gitconfig 文件是 Git 的配置文件,在系统上一般位于用户主目录下。这个文件包含了 Git 的一些全局配置,例如 Git 用户名、邮箱地址、文本编辑器等。
(2)怎么用?
通过修改 .gitconfig 文件,可以定制 Git 的行为。下面是一些可以在 .gitconfig 文件中设置的常用配置:
user.name:设置 Git 的用户名,例如git config --global user.name "Your Name"。user.email: 设置 Git 的邮箱地址,例如git config --global user.email "youremail@example.com"。core.editor:设置 Git 使用的文本编辑器,例如git config --global core.editor "vim"。core.autocrlf:将文本文件在 Windows 和 Unix 之间自动进行换行符转换,以便在不同平台之间协作,例如git config --global core.autocrlf true。alias:自定义 Git 命令别名,例如git config --global alias.st status将git status命令设置为git st命令的别名。
可以通过运行以下命令打开 .gitconfig 文件:
1 | git config --global --edit |
这将在系统中打开 Git 配置文件,可以进行编辑。在 .gitconfig 文件中进行修改后,新的设置会对所有 Git 仓库生效。
6.2 gitignore_global文件
(1)是什么?
.gitignore_global 文件是 Git 的全局忽略文件。在这个文件中写入的文件或文件夹将不会被 Git 追踪或提交到远程仓库中。这个文件不同于普通的 .gitignore 文件,它适用于所有的 Git 仓库,而不仅仅是单个项目。
.gitignore_global 文件的作用是防止 Git 追踪某些类型的文件或目录。例如,Windows 系统自动生成的 Thumbs.db 文件、macOS 下的 .DS_Store 文件以及 Python 等语言生成的 .pyc、.pyo 文件等都可以在这个文件中被忽略。当对多个 Git 仓库工作时,这是非常有用的,可以避免在未意识到的情况下提交不必要的文件,从而节省仓库的空间和管理工作。
(2)怎么用?
要在 Git 中启用全局忽略文件,请在命令行中运行以下命令:
1 | git config --global core.excludesfile ~/.gitignore_global |
其中 ~/.gitignore_global 是 .gitignore_global 文件的路径,可以根据实际情况修改路径。运行此命令后,Git 将不再追踪或提交 .gitignore_global 文件中列出的任何文件或目录。
(3)文件怎么配置?
在 ~/.gitignore_global 文件中,您可以放置您希望在所有 Git 仓库中忽略的文件或文件夹的模式(通配符格式)。这将使 Git 忽略这些文件或文件夹,即使它们没有被放入 .gitignore 文件中。
例如,如果您希望 Git 在所有仓库中忽略 .DS_Store 文件和 __pycache__ 文件夹,可以创建一个 ~/.gitignore_global 文件,并在其中添加以下内容:
1 | # Ignore all .DS_Store files |
然后,使用 git config 命令将路径添加到 Git 全局配置中,使其生效:
1 | git config --global core.excludesfile ~/.gitignore_global |
这样,在任何 Git 仓库中,都将忽略 .DS_Store 文件和 __pycache__ 文件夹。