Git入门:边玩边学

mac2024-10-03  56

Git是一个开源的分布式版本控制系统。它占用资源小,具有闪电般的快速性能。

工作流程

你的本地存储库由git维护的三棵“树”组成。第一个是Working Directory保存实际文件的文件。第二个是Index充当暂存区,最后一个HEAD指向你所做的最后一次提交。

配置:

列出配置设置:

git config --list

设置用户名和电子邮件:

git config --global user.name "xxx" git config --global user.email "xxx@apple.com"

保存用户名和密码,而不用每次推/拉(push/pull)的时候都输入:

git config --global credential.helper store

创建存储库

创建一个新目录,打开它并执行:

git init

这会在本目录创建一个新的.git仓库

检出存储库

git clone git://github.com/foo/bar.git

添加并提交

可以使用提议更改(将其添加到Index):

git add <filename> git add *

这是基本git工作流程的第一步。要实际提交这些更改,请使用:

git commit -m "Commit message"

现在文件已提交到HEAD,但尚未提交到远程存储库中。

推送到远程库

要将这些更改发送到远程存储库,请使用:

git push origin master

修改master可以将更改推送到的任何分支。 如果你尚未克隆现有存储库,并且想要将存储库连接到远程服务器,则需要使用远程添加:

git remote add origin <server>

分支

分支用于开发彼此隔离的特征。创建存储库时,master分支是“默认”分支。使用其他分支进行开发,并在完成后将其合并回master分支。 创建使用命名一个新的分支feature_x并且切换到该分支:

git checkout -b feature_x

切换回master分支,并且删除删除feature_x:

git checkout master git branch -d feature_x

重命名分支:

git branch -m <branch name> <new branch name>

删除本地和远程分支:

git branch -d <branch name> git push origin --delete <branchName>

显示本地和远程分支:

git branch -a git branch -lv git branch -rv

更新和合并

将本地存储库更新为最新提交:

git pull

将另一个分支合并到当前活动分支:

git merge <branch>

在两种情况下git均尝试自动合并更改。不幸的是,这并非总是成功的,有时会导致冲突,这时候我们通过编辑git显示的文件来手动合并这些冲突。更改后,需要将它们标记为已合并:

git add <filename>

标签

建议为软件版本创建标签,可以这样创建一个名为1.0.0的标签:

git tag 1.0.0 git tag 1.0.0 1b2e1d63ff

1b2e1d63ff代表你想用你的标签来引用提交ID的前10个字符,如果没有设置就默认为HEAD。

删除远程标签:

git push origin --delete tag <tagname>

重命名标签:

git tag new old git tag -d old git push origin :refs/tags/old git push --tags

日志

可以以最简单的形式来研究存储库的历史记录:

git log

也可以添加许多参数来使日志看起来像您想要的。比如仅查看某个作者的提交:

git log --author=simpleiot

要查看一个压缩得很厉害的日志,其中每个提交都是一行:

git log --pretty=oneline

仅查看哪些文件已更改:

git log --name-status

使用reflog查找丢失的提交:

git reflog

替换本地变更

可以使用如下命令替换本地更改,它将工作树中的更改替换为HEAD中的最后一个内容。已经添加到索引的更改以及新文件将被保留。:

git checkout -- <filename>

如果想删除所有本地更改和提交,请从服务器获取最新历史记录,然后将本地master分支指向该服务器:

git fetch origin git reset --hard origin/master

从存储库中删除未跟踪的文件和目录:

git clean -fd
最新回复(0)