初探Git:理解和使用版本控制的魔法 - StarLikeRain
source link: https://www.cnblogs.com/StarLikeRain/p/17951299
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.
初探Git:理解和使用版本控制的魔法 - StarLikeRain - 博客园
遥远的古代,有一位美丽的仙女叫做嫦娥。她的丈夫后羿获得了令人长生不老的鹿骨露。一天,嫦娥在好奇心的驱使下,独自偷喝了这瓶仙药。 喝下仙药的瞬间,嫦娥发现自己开始飘起,越飘越高,最后飘向了月亮。嫦娥惊慌失措,她突然意识到,自己做了一个错误的决定,她非常后悔,但一切已经无法改变,她只能在月亮上度过寂寞的生活。 如果嫦娥的世界有Git这样的版本控制工具,事情可能会完全不同。她偷喝仙药的决定就像我们在编程时对代码的修改,而她后悔的感觉,就像我们在发布代码后发现了重大的错误。 如果之前喝仙药的决定被记录在Git中,像进行一次commit操作,嫦娥就可以使用`git revert`撤销这个决定,就像撤销一次错误的代码提交。或者她可以使用`git reset --hard`命令,回到偷喝仙药之前的状态,就像我们将代码回滚到之前的某个版本。 重写的故事也许有些荒诞,但它生动地描绘了Git工具的强大之处。在代码的世界里,我们有能力前进也可以后退;我们可以修正错误,也可以尝试新的可能。这种灵活性让我们可以更有信心地进行工作,因为我们知道,即使我们做了错误的决定,也总有机会改正它。这也正是Git所带给我们的,掌控历史进程的能力。下面就让我们一起来学习这个强大的工具吧。
二、为什么使用Git?
三、常用Git命令
1.新建与配置
git init
在当前目录新建一个Git代码库。git clone [url]
下载一个项目及其整个代码历史。
git config --list
显示当前的Git配置。git config -e [--global]
编辑Git配置文件。
2.增加与删除文件
-
git add [file1] [file2] ...
:用于将指定文件添加到暂存区。你可以一次添加多个文件,只需要在git add
后面列出文件的名字即可。 -
git add [dir]
:此命令用于将指定目录(包括子目录)的所有文件添加到暂存区。 -
git add .
:此命令用于添加当前目录的所有文件到暂存区。 -
git rm [file]
: 此命令用于删除工作区的文件,并且将这次删除添加到暂存区。 -
git rm --cached [file]
:此命令用于删除版本库的文件信息,但保留工作区的文件。这通常用于文件已经被纳入版本控制,但你希望忽略它们。例如,当你不小心将不需要提交的文件(比如包含敏感信息的配置文件)添加到了版本库,你需要移除版本库中的该文件,但在本地保留。这时,你可以使用git rm --cached [file]
命令,接着在.gitignore
文件中添加对应要忽略的文件名,防止今后误提交。
3.代码提交
git commit -m [message]
提交暂存区到仓库区。git commit [file1] [file2] ... -m [message]
提交暂存区的指定文件到仓库区。git commit --amend -m [message]
使用新的commit,替代上一次的提交。git commit -a
: 自动把所有已经跟踪过的文件的更改(新增、修改、删除)都放到暂存区,然后执行一次 commit。- git cherry-pick <commit-hash> 将特定的提交从一个分支应用(或称挑选)到另一个分支,生成新的【hash值不同的】提交。用于想要在不同的分支上修复同一个 bug,或者想要在主分支上迅速应用一个特性分支上的某个提交
4.分支新建与切换
git branch
:这个命令用于查看本地所有的分支。git branch -r
:查看远程所有分支。git branch [branch-name]
:新建一个分支,但仍停留在当前分支。git checkout -b [branch-name]
:新建一个分支,并切换到该分支。git checkout <branch-name> :
将当前的工作目录切换成<branch-name>
分支的代码。git switch <branch-name> :
将当前的工作目录切换成<branch-name>
分支的代码。(checkout 命令和撤销修改相关,容易混淆,建议使用 Switch)
5.分支合并
git merge [branch]
:将指定分支合并到当前分支。- 无冲突git merge xxx快速合并
- 有冲突CONFLICT (content): Merge conflict in readme.txtAutomatic merge failed; fix conflicts and then commit the result.Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,需要修改后提交:
- $ git add readme.txt
- $ git commit -m "conflict fixed"
- 用带参数的git log也可以看到分支的合并情况:$ git log --graph --pretty=oneline --abbrev-commit
- 当你合并两个分支时,如果一个分支是另一个分支的直接祖先,Git会默认使用 "Fast-forward" 的方式将二者合并,即直接将指针向前移动。但如果它们的历史不完全一样,Git 会进行 "three-way merge",并自动创建一个新的 commit。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK