git学习笔记

openBSD安全的系统

安装git

git init

ls -la //查看.git 隐藏文件,无论windows还是linux如果文件前面为点,就是隐藏文件

配置源码作者和邮箱
git config --global user.name 'wilson'
git config --global user.email 'wilson@yahoo.com'

进入家目录,windows和linux都有家目录,如c/users/wilson。
cat .gitconfig可以查看刚刚配置的源码作者和邮箱

id可以查看用户

再返回新建的源码目录
ls -l .git
cat .git/config
git config user.name ''
git config user.email ''

working directory
staging area
repository

git commit -a or git add git commit

git add main.c //就加到staging area,也就是ls -l .git可以查看多了一个index文件

git commit -m "init project" //把staging area放到了repository

rm -f main.c //删除

git checkout -f HEAD //可以恢复

blob:叶子节点,主要用来存储文件
tree:多个目录
commit:把版本提交为一个简单的树

git  hash-object main.c //sha1 的hash值
git add .//把当前目录下所有的都加入
ls -l .git/objects/fc //fc+下面文件名,就是hash值

commit -m "" //引号里面是备注

find .git/objects/ -type f //可以查看.git下面所有的文件

git show fc047f //修可以显示main.c的内容

git cat-file -t 0593 //查看文件类型

tree里面就是各种指针,
git ls-tree 0593 //可以查看tree文件里面的内容

内容和文件名会分离,commit就是快照,一些指向树和作者时间戳等信息。

git show -s --pretty=raw 2364 //可以查看commit里面的内容

head是指针,也就是正在工作的commit。

tag object标签对象,主要用于版本发布时特殊时刻的标记。

head remote branch 都可以为reference。

cat .git/head //就是head指针

tag 可以是对象也可以是指针。轻量级tag和重量级tag。
ls -l .git/refs/tags/
git tag v1.0
cat .git/refs/tags/v1.0
git cat-file -t 9e7b //是个commit

git tag -a milestone1.0 -m "This" //一个全面的信息,除了1.0以外还有一个注释,所以为对象
cat .git/refs/tags/milestone1.0 //指向一个tag

git archive --format=tar --prefix=ruby/ v1.0 | gzip > /tmp/ruby1.0.tar.gz //提取之前的tag,v1.0,进行发布。

tar zxvf ruby1.0.tar.gz

创建分支
license2 readme test.rb
git init
git add .
git commit -m "1st commit" //find .git/objects/ -type f | wc -l 得到5个
git branch //得到master,缺省分支
cat .git/HEAD
cat .git/refs/heads/master //指向commit对象
vi test.rb
git commit -a -m "2nd commit"
vi readme
git commit -a -m "3rd commit"
git branch testing //创建分支testing
cat .git/head
cat .git/refs/heads/master //两个指针指向同一个对象
cat .git/refs/heads/testing //两个指针指向同一个对象
git checkout testing //切换head为testing
git branch //查看两个分支testing和master
cat .git/head //指向了testing
vi test.rb //修改test.rb
git commit -a -m "testing 4th commit"
cat .git/refs/heads/master //两个指针指向不同一个对象
cat .git/refs/heads/testing //两个指针指向不同一个对象

这样切换那个就可以使用那个test.rb
cat test.rb //testing的test.rb
git checkout master
cat test.rb //master的test.rb

合并需要确定以谁为主,如以master为主。合并可能冲突
git checkout master //先切换到master
git merge testing //进行merge

删除分支
git branch -D testing

合并算法:three-way merge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值