Merge pull request #3 from SugarCrash2077/main

Created Chinese Language Support
6 Files added:
reverting-a-commit.zh.cn.md
removing-branch-from-your-repository.zh.cn.md
resolving-merge-conflicts.zh.cn.md
resetting-a-branch.zh.cn.md
moving-a-commit-to-a-different-branch.zh.cn.md
removing-a-file.zh.cn.md
This commit is contained in:
JonatanRosali
2025-05-13 21:08:32 +08:00
committed by GitHub
6 changed files with 174 additions and 0 deletions
@@ -0,0 +1,25 @@
# 移动提交到不同的分支
假设你提交了一个更改,然后意识到你提交到了错误的分支。
你该如何更改呢?这篇教程将为你解答。
## 将最新的提交移动到现有分支
为此,请输入以下命令:
```git reset HEAD~ --soft``` - 撤销上一个提交,但保留更改。
```git stash``` - 记录当前目录的状态。
```git checkout name-of-the-correct-branch``` - 切换到正确的分支。
```git stash pop``` - 恢复最近的存储状态。
```git add .``` - 或者尝试单独添加文件。
```git commit -m "your message here"``` - 保存并提交更改。
现在你的更改已经在正确的分支上了。
### 将最新的提交移动到新分支
为此,请输入以下命令:
```git branch newbranch``` - 创建一个新分支,保存所有提交。
```git reset --hard HEAD~#``` - 将 master 分支回退 # 个提交。记住,这些提交将从 master 中消失。
```git checkout newbranch``` - 切换到你创建的新分支,所有提交都会在该分支中。
记住:任何未提交的更改将会丢失。
@@ -0,0 +1,23 @@
# 从 Git 中移除文件
有时你可能想要从 Git 中移除一个文件,但不想从你的计算机中删除它。你可以使用以下命令来实现:
``git rm <file> --cached``
## 那么发生了什么?
Git 将不再跟踪被移除文件的更改。对 Git 来说,就像你删除了这个文件一样。如果你在文件系统中找到这个文件,你会发现它依然存在。
注意,在上述示例中使用了 `--cached` 标志。如果我们没有加上这个标志,Git 将不仅从仓库中移除文件,还会从你的文件系统中删除它。
如果你使用 `git commit -m "Remove file1.js"` 提交更改,并通过 `git push origin master` 推送到远程仓库,远程仓库也会删除该文件。
## 其他功能
- 如果你想删除多个文件,可以将它们全部包含在同一命令中:
`git rm file1.js file2.js file3.js --cached`
- 你可以使用通配符(*)删除相似的文件。例如,如果你想从本地仓库中删除所有 `.txt` 文件:
`git rm *.txt --cached`
@@ -0,0 +1,31 @@
# 从你的仓库中移除分支
如果你已经按照教程进行到此,我们的 `<add-your-name>` 分支已经完成了它的使命,是时候将其从你本地机器的仓库中删除了。虽然这不是必须的,但该分支的名称显示了它的特殊用途,因此它的生命周期可以相应地短一些。
首先,让我们将你的 `<add-your-name>` 合并到你的 master 分支中,因此切换到 master 分支:
```
git checkout master
```
`<add-your-name>` 合并到 master:
```
git merge <add-your-name> master
```
在你本地机器的仓库中移除`<add-your-name>` :
```
git branch -d <add-your-name>
```
现在你已经删除了你本地机器上的 `<add-your-name>` 分支,一切看起来整洁干净。
不过,在此时,你应该仍然在你的 GitHub 分叉中有 `<add-your-name>` 分支。然而,在删除之前,请记住,你是从这个远程分支向我的仓库提交了一个 "Pull request"。因此,除非我已经合并了这个请求,否则不要删除这个分支。
然而,如果我已经合并了你的分支,并且你想删除远程分支,可以使用:
```
git push origin --delete <add-your-name>
```
现在,你知道如何整理你的分支了。
随着时间的推移,我的公共仓库会添加很多提交。而你本地机器和 GitHub 分叉的 master 分支将不会保持同步。因此,为了保持你的仓库与我的同步,请按照下面的步骤进行操作。
#### [保持你的分叉与仓库同步](keeping-your-fork-synced-with-this-repository.zh-cn.md)
@@ -0,0 +1,18 @@
# 重置一个分支
`reset` 是一个可以用来重置仓库(相对于某个提交或分支)的命令。正如其名字所示,重置会丢弃当前(基础)分支上的所有内容,并使其与我们选择重置的目标分支(称为原始分支)完全相同。这实际上意味着,我们将得到一个原始分支的副本,名称为基础分支。<br/>
然而,问题是,为什么我们不直接删除基础分支,然后从原始分支中检出一个新的基础分支呢?从技术角度来看,这将与重置具有相同的效果,但在一些工业场景下,我们无法删除分支,或者我们不能删除分支,因为删除分支可能会干扰/破坏 CI/CD 流水线,或者影响正在进行的工作流。因此,为了避免这种可能导致停机的情况,我们建议在需要重置某个分支时使用 `git reset`
## 命令
执行 `git reset` 重置分支非常简单。
```
git reset <base_branch> <origin_branch>
```
一个示例如下:
```
git reset stage master --hard
```
上述命令将 `stage` 分支重置为 `master`,因此 `stage` 分支将与 `master` 完全相同。
你可能会想,为什么要使用 `--hard` 标志?这是为了忽略在重置之前或之后被暂存的所有更改。
@@ -0,0 +1,36 @@
# 什么是合并冲突?
当你尝试将另一个分支合并到当前工作分支时,你是在将另一个上下文的更改与当前工作文件结合在一起。
如果两个人修改了同一文件的相同行,或者一个人决定删除该文件,而另一个人决定修改它,Git 无法识别哪个版本是正确的。Git 会标记该文件为存在冲突 - 在解决冲突之前,你无法继续工作。
# 如何解决合并冲突?
当遇到合并冲突时,Git 会通过在文件中将问题区域包裹在“<<<<<<<< HEAD”和“>>>>>>>>>>[other branch name]”中来标记冲突。
第一个标记后的内容来自你当前的工作分支。尖括号后,Git 会告诉我们更(改来自哪个分支)。一个“=======”行将两个冲突的更改分开。
我们的任务是清理这些行:当我们完成后,文件应该看起来正是我们想要的样子。建议咨询写入冲突更改的队友,决定哪个版本应该是最终的。可能是你们其中一个的版本,也可能是两者的混合。
例如:
```
<<<<<<< HEAD:mergetest
This is my third line
=======
This is a fourth line I am adding
>>>>>>> 4e2b407f501b68f8588aa645acafffa0224b9b78:mergetest
```
`<<<<<<<`:表示合并冲突行的开始。第一组行来自你试图合并更改的文件。
`=======`:表示用于比较的断点。分隔用户提交的更改(上方)和来自合并的更改(下方),以便直观地看到差异。
`>>>>>>>`:表示合并冲突行的结束。
你可以通过编辑文件来解决冲突,然后手动合并 Git 难以合并的部分。这可能意味着丢弃你的更改或别人的更改,或者两者的混合。你还需要删除文件中的 '<<<<<<<'、'=======' 和 '>>>>>>>'。
一旦解决了冲突,请使用 `git add` 命令。不要忘记运行测试,因为你需要确保已正确解决冲突。
你还可以根据所使用的 IDE 下载不同的插件,以便更轻松地解决合并冲突。
# 如何撤销合并?
如果你想撤销合并,可以使用 `git merge --abort`
@@ -0,0 +1,41 @@
# 撤销一个提交
撤销一个提交意味着创建一个全新的提交,撤销之前提交所做
的所有更改。这就像在 Git 中执行 `CTRL + Z`
在 Git 中,撤销操作变得更加简单,因为你推送到远程仓库的每个提交都有一个唯一的字母数字键(称为 SHA,安全哈希算法)与之关联。
这意味着只要你有该提交的 SHA,你就可以撤销任何提交。
但你必须小心按顺序撤销操作,以免破坏你的仓库。
为了获取我们想要撤销的特定提交的 SHA,查看所有提交的日志会很有帮助。
要获取此信息,我们可以运行命令:
```git log --oneline ```
仅运行 ```git log``` 命令也会给我们返回 SHA(长格式)。
但使用 ```--oneline``` 标志会告诉 Git 我们希望以简洁(单行)的方式显示,以便更容易阅读。
当你运行此命令时,显示的前 7 个字符就是所谓的简短提交哈希。
例如,运行 ```git log --oneline``` 时,我得到的输出如下:
```
389004d added spacing in title
c1b9fc1 Merge branch 'master' into tutorials
77eaafd added tutorial for reverting a commit
```
这表明,通过使用 ```git log --oneline```,我们可以获取仓库中所有提交的列表,并附带每个提交的前 7 个字符的 SHA。
现在,假设我想撤销我提交的 "在标题中添加了空格" 这个更改,以下是我将采取的步骤:
* 复制该提交的 SHA,在本例中是 ```389004d```
* 然后运行命令 ```git revert 389004d```
这将打开我的文本编辑器,并提示我编辑提交信息。
你可以选择保留 Git 的默认提交信息,该信息以 `Revert` 开头,
也可以根据自己的喜好自定义提交信息。
* 接下来,我将保存并关闭文本编辑器。
* 返回命令行。
* 运行 ```git push origin <branch-name>``` 将撤销的更改推送到 GitHub。
就这样,变更被撤销。在这种情况下,我的仓库将恢复到 ```c1b9fc1``` 时的状态。