首页 > 数据库 > 数据库开发技术 > 如何正确使用Git版本管理工具
Git 是什么?Git 是目前世界上最先进的分布式版本控制系统。 那什么是版本控制系统呢?我们都有过用 Word 写论文的经历,有时候我们想删除某个段落,但是又担心后续用到找不回来了,那么怎么办呢?我们通常会将当前文档另存为一个文档,然后接着修改文档,随着修改次数的增加,我们的文档会越来越多,当过了一个月后,我们再想找回某个被删除的的段落,但是记不清楚在哪个文档了,只好一个一个去找,甚是麻烦。 而 Git 可以帮我们自动记录每次的改动,并且可以和其他人共同协作,如果想查看某次改动,只需要在打开 Git 历史记录,岂不是很方便。
SVN是集中式的版本控制系统。Git是分布式的版本控制系统。sudo apt-get install git
./config、make、sudo make install这几个命令安装就好了。homebrew,具体方法请参考 homebrew 的文档:http://brew.sh/。brew install git
MacPorts,具体方法请参考:https://www.macports.org/install.php。sudo port install git
Users/casey/workspace/gitDemogit init
.git的目录,这个目录是 Git 来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把 Git 仓库给破坏了。git add告诉 Git,把文件添加到仓库git add readme.txt
注意:如果你想添加当前目录所有改动的文件到 Git,可以使用 git add .
git commit告诉 Git,把文件提交到仓库git commit -m "add a readme file"
-m参数后面输入的是本次提交的说明,可以输入任意内容,这样你就能从历史记录里方便地找到改动记录。
add,commit一共两步呢?因为 commit 可以一次提交很多文件,所以你可以多次 add 不同的文件。比如:git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files"
I modified a readme.txt file
git status

git diff这个命令了:git diff readme.txt

git diff顾名思义就是查看 difference,显示的格式正是 Unix 通用的 diff 格式。I modified a readme.txt file。git status命令看看仓库的当前状态:git status

小结
git status可以查看当前仓库状态git diff可以查看当前修改的提交内容
I modified a readme.txt file again
I modified a readme.txt file
I modified a readme.txt file again
git loggit log

git log命令显示从最近到最远的提交日志。如果嫌输出信息太多,可以试试加上--pretty=oneline参数:git log --pretty=oneline

HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^数不过来,所以写成HEAD~100。git reset进行回退git reset --hard HEAD^
cat readme.txt
I modified a readme.txt file
git log看下当前 Git 仓库的状态。git log

commit id就可以了。Git 贴心的为我们提供了一个命令git reflog用来记录你的每一次命令:git reflog

git reset --hard 862c07a
小结:
HEAD指向的是当前版本,使用git reset --hard commit_id可以在不同的历史版本中任意穿梭。穿梭前,用 git log可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用 git reflog查看命令历史,以便确定要回到未来的哪个版本。
.git,就是Git的版本库。stage的暂存区。git add把文件添加进去,实际上就是把文件修改添加到暂存区;git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。因为我们创建 Git 版本库时,Git 自动为我们创建了一个 main 分支,所以,现在,git commit就是往 main 分支上提交更改。git restore这个命令来撤销本次修改。git restore readme.txt
git restore --staged这个命令来撤销添加到暂存区的操作。git restore --staged readme.txt
git restore命令来撤销修改的内容。git restore readme.txt
test.txt到 Git。git rm或者git add删掉,并且git commit。这样 test.txt 就从 Git 仓库中删除了。git restore test.txt
GitHub网站,那就不难理解了。这个网站就是提供 Git 仓库托管服务的,所以,只要注册一个 GitHub 账号,就可以免费获得 Git 远程仓库。实际工作中,我们会搭建 GitLab 作为公司的远程仓库。有了远程仓库,再也不用担心我的硬盘了,我们可以随时随地的修改我们的代码了
gitDemo,又想在 GitHub 创建一个 Git 仓库,名字也叫 gitDemo,并且让这两个仓库进行远程同步。git remote add origin git@github.com:eyesmoons/gitDemo.git
git push -u origin main
由于远程库是空的,我们第一次推送 main 分支时,加上了 -u参数,Git 不但会把本地的main 分支内容推送的远程新的 main 分支,还会把本地的 main 分支和远程的 main 分支关联起来,在以后的推送或者拉取时就可以简化命令。
git clone git@github.com:eyesmoons/gitDemo2.git
git checkout -b dev
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
git branch dev
git checkout dev
git branch命令查看当前分支git branch
git branch命令会列出所有分支,当前分支前面会标一个*号。
git checkout main
git merge dev
git branch -d dev
小结:
查看分支: git branch创建分支: git branch branchName切换分支: git checkout branchName创建并切换分支: git checkout -b branchName合并某分支到当前分支: git merge branchName删除分支: git branch -d branchName
git merge合并分支时,有可能出现冲突,这时候需要我们手动解决冲突,然后再重新提交。stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:git stash
git stash pop
git stash apply stash@{0}
往期推荐
原文作者:毛毛小妖的笔记;如有侵权,请联系管理员删除。