2024年3月22日发(作者:)

分布式版本控制系统基本原理

1,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这样,

每个本地机器都具备一个git版本库,修改完文件之后可以提交到自己的版本库中,也可以

查看历史记录。

2,直接记录快照,而非差异比较

为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。

3,文件的三种状态

对于任何一个文件,在 Git 在本地内都只有三种状态:已修改(modified)和已暂存(staged),

已提交(committed)。

基本的 Git 工作流程如下:1. 在工作目录中修改某些文件。 2. 对修改后的文件进行快照,

然后保存到暂存区域。 3.提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

4,分支

分支:一个指向当前版本快照的一个指针。

Git基本命令:

1,创建新的 Git 仓库 并将当前工作目录加入git:

cd 工作目录

git inti

git add .

git commit –m “init git”

2,从现有仓库克隆

git clone szhao@192.168.2.71:/home/szhao/work/mygit gitcopy

3,文件提交到仓库

检查当前文件状态:git status

跟踪文件并将文件加入提交清单:git add 文件名

提交更新到本地仓库:git commit –m “xxx”

注:用git status查看文件状态时,个字段的意义如下:

“Untracked files”:文件未跟踪

“Changes to be committed”:已暂存状态

“Changed but not updated”:跟踪文件的内容发生了变化,但还没有放到暂存区

4,移除文件

删除本地及暂存区中的文件并取消对文件的跟踪:git rm filename

删除暂存区中的文件并取消对文件的跟踪:git rm –cache filename

5,查看历史记录

-p选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:git log -p -2

--stat,仅显示简要的增改行数统计:git log --stat

--pretty=oneline 将每个提交放在一行显示:git log --pretty=oneline

format定制要显示的记录格式,%s 显示提交说明:git log --pretty=format:"%s"

6,撤消操作

使用暂存区中新的文件快照覆盖刚才失误的提交:git commit –amend –m “xxx”

取消对文件的暂存:

git reset HEAD filename

将文件恢复到当前版本(即取消对文件所作的修改):git checkout filename

7,远程仓库

查看当前的远程库 (-v 选项显示对应的克隆地址):git remote –v

建立远程仓库对应的本地引用名:git remote add gitname szhao@192.168.2.71:/home/szhao/work/mygit2

到远程仓库中拉取所有你本地仓库中还没有的数据:git fetch remote_git_name

到远程仓库中拉取本地仓库中还没有的数据并且自动与本地对应分支合并:git pull remote_git_name branch_name

建立与远程分支对应的本地分支:git checkout -b local_branch_name origin/remote_branch_name

推送数据到远程仓库, 缺省情况下,将当前分支的改动push到远程对应分支:

git push remote_git local_branch:remote_branch

创建一个remote branch: git branch new_branch ; git push origin new_branch

修改某个远程仓库在本地的简短名称:git remote rename old_name new_name

删除远程仓库对应的本地引用名:git remote rm gitname

8,Git配置

配置用户信息: git config --global "John Doe"

git config --global johndoe@

配置文本编辑器 :git config --global emacs

配置差异分析工具:git config --global vimdiff