git learn (1)

网友投稿 718 2022-08-27

git learn (1)

git learn (1)

版本库(代码仓库)

分布式版本控制系统git是用C写的。 本机器上的Git仓库配置(用户名和Email地址)

$ git config --global user.name "userName"$ git config --global user.email "email@**.com"

版本库(代码仓库)repository git可以跟踪文件的修改操作,任何时候都能追踪历史并还原。 二进制文件只能知道是否改动了,但是改动了什么是无法获知的。word就是二进制格式。 字符设置最好是UTF-8 windows的记事本编辑文件时会在文件的开头加上0xefbbbf(十六进制)的字符。

创建一个版本库:

[~]$ mkdir git_test[~]$ cd git_test[git_test]$ git init

管理组员

查看组内成员所有的情况:

$ cat /etc/groupman:x:15: #group_name:passwd:GID:user_list#查看某一个组内的所有成员:$ cat /etc/group |grep groupnameedemon:x:1000:sambashare:x:128:edemon# 第四列如果什么都没有表明该组内组名组员就是唯一的成员。$ sudo groupadd jordan #添加组#先将新成员加入组,再设置密码。不然会提示,用户已存在 $ sudo useradd -G jordan y1 # 添加组成员y1$ sudo passwd y1 $ sudo groupdel jordan #删除组jordan$ sudo vim /etc/group #编辑文件/etc/group,可以删除某一个组内的成员

文件操作

向仓库中添加文件 (add + commit):

$ git config --global user.name "username"$ git config --global user.email "email"$ vim test.txt$ lstest.txt$ git add test.txt$ git commit -m "add test.txt file"[master(根提交) bd36aeb] add test.txt file 1 file changed, 2 insertions(+) create mode 100644 test.txt

分布式系统

分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,工作的时候就不需要联网了。分布式版本控制系统通常也有一台充当“中央服务器”的电脑,用来方便“交换”大家的修改。

修改文件并提交

git status 查看当前git的状态

$ git status# 位于分支 master# 无文件要提交,干净的工作区$ lstest.txt$ vim test.txt // 修改test.txt$ git add test.txt$ git status# 位于分支 master# 要提交的变更:# (使用 "git reset HEAD ..." 撤出暂存区)## 修改: test.txt#$ git commit -m "change and commit test.txt"[master 9c04872] change and commit test.txt 1 file changed, 1 insertion(+), 1

可以用git diff查看改动的内容

注意,在commit之前查看!

$ git diff test.txtdiff --git a/test.txt b/test.txtindex 01bc9f2..62c2a74 100644--- a/test.txt+++ b/test.txt@@ -1,2 +1,2 @@-hello, this is a test file.+hello, world. this is a test file.

查看git日志

$ git logcommit c76ada5b16f28252b7cf7950f5803f1535618d2fAuthor: username Date: Wed Jul 27 13:49:37 2016 +0800 3rd changecommit 9c0487219879f5afcd41e7f3005f18e003948aabAuthor: username Date: Wed Jul 27 13:10:41 2016 +0800 change and commit test.txtcommit bd36aebc6854d6ac6ae19318437b5a66534e4137Author: username Date: Wed Jul 27 12:51:38 2016 +0800 add test.txt

改动版本到任意阶段

回到过去:

$ git reset --hard bd36aebc6854d6ac // hard参数后面添加commit的ID号即可

此时再查看日志,就不包含“未来”的记录了:

$ git logcommit bd36aebc6854d6ac6ae19318437b5a66534e4137Author: username Date: Wed Jul 27 12:51:38 2016 +0800 add test.txt

为了穿越到未来,可以使用 git reflog

$ git reflogbd36aeb HEAD@{0}: reset: moving to bd36aebc6854d6acc76ada5 HEAD@{1}: commit: 3rd change9c04872 HEAD@{2}: commit: change and commit test.txtbd36aeb HEAD@{3}: commit (initial): add test.txt file

第一列就是commit id 返回未来:

$ git reset --hard c76ada5HEAD 现在位于 c76ada5 3rd change$ cat test.txthello, world. this is a test file.all server for git.this is 3rd chenge.

暂存区与工作区

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。 文件提交的两步: 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区; // 实现多次修改,一次提交 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

删除文件

当我们删除工作区的文件,和版本库中的文件情况不符,使用git status可以发现提示信息:

$ git status# 位于分支 master# 尚未暂存以备提交的变更:# (使用 "git add/rm ..." 更新要提交的内容)# (使用 "git checkout -- ..." 丢弃工作区的改动)## 删除: t.txt#

修改尚未加入提交(使用 “git add” 和/或 “git commit -a”) 查看工作区的文件已经删除:

$ rm t.txt$ lstest.txt

可以通过​​git checkout ​​恢复过来:

$ git checkout -- t.txt$ lstest.txt t.txt

也可以彻底删除:

$ git rm t.txtrm 't.txt'$ lstest.txt

git管理的是文件的修改,所以我们可以多次修改,多次git add,最后一次性的 ​​​git commit -m "message"​​

关联远程库github

GitHub创建一个Git仓库,让备份的github和本地仓库同步。 GitHub官网,右上角创建repository.

公钥的目录:

edemon@ubuntu:~/.ssh$ ls -a. .. id_rsa id_rsa.pub known_hosts

一个常见的问题: ​​​fatal: remote origin already exists.​​​ 解决方法: ​​​$ git remote rm origin​​

push

命令行传送文件至远程库:

echo "# wei_workspace" >> README.md #建立一个说明文件git initgit add README.mdgit commit -m "first commit" #提交文件git remote add origin push -u origin master #传送文件到远程库,并且-u将本地的master分支和远程库的master分支关联起来$ git push origin master #之后不用-u参数了,已经关联了。

clone

克隆一个仓库: ​​​git clone git@github.com:×××/wei_workspace.git ~/wei_workspace

注意到这两种地址格式是不同的,git@github.com:×××/wei_workspace.git是ssh的,​​ 速度慢,每次推送都必须输入口令.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:进程间的通信
下一篇:windows+CentOS+git服务器搭建记录
相关文章

 发表评论

暂时没有评论,来抢沙发吧~