zoukankan      html  css  js  c++  java
  • git:版本管理器

    1. 安装git

    sudo apt-get install git

    需要设置这台电脑上的 git 用户名与邮箱

    git config --global user.name "xx"
    git config --global user.email "xxx@abc.edu.cn"

    2. 创建版本库(repository)

    git init

    当前文件夹下回出现 .git 文件夹,属于隐藏文件。

    3. git 结构

    工作区(working directory):当前文件夹下所有文件及内容,叫做工作区

    暂存区(stage,一般在.git/index/目录下):版本库 .git 中保存的信息包括 stage 和版本记录,每次 git add 就是将工作区的更新传到 stage,git commit 就是将 stage 中的内容上传到版本记录中(默认 master分支)。

    HEAD指针:在版本记录中有各个版本,HEAD指向当前版本,HEAD^ 表示之前一个版本,HEAD^^ 表示之前的之前一个版本,HEAD~100 表示 100个之前的版本。

    4. 添加文件,提交更新

    git add * # 将当前文件夹下的所有文件/文件夹都放进新的版本
    git commit -m "Initiated this repository with mNPA1.0"  # -m 后面是备注,今后查看提交的这个版本时,就能看到这个备注

    所以每次更改了一个文件以后,都可以如上提交一次更新存档。按我理解,git记录的是相对上个版本的变化,而不是copy每个版本一份(那样太占空间)。所以,有了 git, 可以方便地穿越到过去存档的任何一个版本,然后再穿越回来。

    5.常用命令

    git status 		# 查看当前版本状态,会显示未提交的更新
    git diff file 		# 查看工作区文件 file 与暂存区文件 file 之间的区别
    git log 		# 查看提交记录,即查看所有存档版本(版本号),以及备注说明
    git reflog  		# 每一次 git 命令的记录
    git checkout .      	#(危险!)用暂存区文件 file 代替工作区文件 file
    git rm file          	# 从工作区、暂存区删除 file
    git rm --cached file 	# 仅从暂存区删除 file
    git blame file  	# 查看file的修改史
    

    6. 切换版本

    git reset --hard HEAD^ #回退到上一个版本

    也可以用 git log, git reflog 得到各个版本的版本号,如果需要退回到版本号“106a.....”,可以命令

    git reset --hard 106a #版本回退,git 会自动寻找以"106a"开头的版本号

    7. 分支:branch

    7.1 创建分支

    git branch haha
    

    即创建分支 haha, 注意,是复制当前所有状态,包括工作区、暂存区、版本库,全部复制一份成为分支 haha。

    7.2 查看分支

    git branch
    

    即可显示当前所有分支

    7.3 切换分支

    git checkout haha
    

    即可转到 haha 分支

    7.4 合并分支

    git merge haha
    

    如果有合并冲突,工作区的文件中会出现冲突细节,例如

    <?php
    <<<<<<< HEAD
    echo 3;
    =======
    echo 5;
    >>>>>>> change_site
    ?>
    

    编辑冲突文件(似乎可以任意编辑),然后添加并提交

    git add .
    git commit -m "merge change_site"
    

    即完成 merge。再做 git merge change_site,系统会提示“Already up to date”。所以似乎是这样:怎么merge(丢弃什么留下什么)完全是由用户决定,但是git系统会记录merge记录与结构。

    7.5 clone 远程仓库指定分支

    git clone -b dev https://gitee.com/luyi07/pvpc.git
    

    8. 标签:git tag

    添加标签:

    git tag v1.1 -m "update v1.1"
    

    9. 创建gitee仓库,与本地仓库关联

    前一阵 github 上不去。以往 github 上去了也有点慢。所以用一下国内的 gitee。

    https://gitee.com 上,按照提示,创建gitee账户。
    在 gitee 网站上按照提示,创建一个新仓库(repository),会有选择Lisence等选项。
    给远程仓库添加key
    1)生成 key
    在自己的终端:ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
    -t 是指定 key 的 type,这里是 rsa 类型,-C 是加一个 comment
    终端会让你给 key 一个名字,然后输入密码(可以不加密码),然后生成两个文件,*pub的那个里面就是公钥。
    2) 远程仓库录入公钥
    在网页上进入自己的 repository,然后 settings -> key management -> deployed key,添加一个 key,然后把刚才生成的 *pub 文件里的内容粘贴进网页,即可完成公钥录入。
    3)电脑端录入私钥
    在终端上,录入私钥:我做的很简单,我把私钥文件重命名为 ~/.ssh/id_rsa,然后
    ssh-add
    因为这个名字在 ssh-add 的默认查找范围,所以会自动录入。如果不这样做,估计
    ssh-add xx
    也可以(xx是私钥文件)。
    4)测试:
    ssh -T git@gitee.com
    如果出现如下回应,就是成功了:
    Hi luyi07 (DeployKey)! You've successfully authenticated, but GITEE.COM does not provide shell access.
    Note: Perhaps the current use is DeployKey.
    Note: DeployKey only supports pull/fetch operations
    本地仓库关联远程仓库
    git remote # 查看远程仓库
    git remote add gitee https://gitee.com/luyi07/pvpc.git # 添加远程仓库 pvpc.git
    git push -f gitee master # 强制(-f)把本地仓库推送到远程仓库,第一次可以强制,以后慎用 -f 模式
    貌似只推当前版本到远程仓库,本地的历史版本并不会全推到远程仓库。
    git 手册:http://gitref.justjavac.com/

    10. 推送至远程仓库分支

    git push origin dev # 如果远程仓库没有分支 dev,就会需要输入远程仓库的用户名+密码,给远程仓库添加分支 dev
    免密推送:

    luyi@Swagger:~/PVPC$ git config --global credential.helper store
    

    然后下一次push,输入的用户名和密码会被储存,再下一次push就不用输入用户名密码了。

    11. 鸣谢

    廖雪峰的git教程:
    "https://www.liaoxuefeng.com/wiki/896043488029600">https://www.liaoxuefeng.com/wiki/896043488029600
    菜鸟教程:
    https://www.runoob.com/git/git-server.html

  • 相关阅读:
    java栈的实现复习
    条件判断语句--linux
    转义符&脚本参数--linux
    linux备份脚本-模板
    github的搜索使用技巧
    sonarqube7.9安装部署(linux)
    openjdk与oraclejdk下载
    gitlab重写历史,清理历史大文件
    nexus私服搭建过程
    nexus私服关联本地maven配置
  • 原文地址:https://www.cnblogs.com/luyi07/p/12942438.html
Copyright © 2011-2022 走看看