Linux使用git完成项目版本控制

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件1。与其它的版本控制系统的最大的区别就是它可以提交到本地,也就是意味着,它可以单机工作,不一定需要向远程服务端提交代码,如github.下面本文将介绍最基本的github入门和使用指南。

基本的上传和下载

任务目标:创建项目并且上传代码
1.创建github帐户(网页端即可解决),此时会拥有一个帐户名和密码以及邮箱名以及用户名。注意帐户和用户名称的区别,帐户名和密码是用来登录的,而用户名则是类似于nick名
2.新建一个项目(网页端可解决)
3.下载安装git

$ sudo apt-get install git

4.克隆代码到本地
git项目地址可很容易从网页端获得.(github网站已升级为https)

$ cd ~/Desktop
$ git clone "https://github.com/username/xxx.git"

5.本地git初始化

$ cd xxx
$ git init  #初始化git,将会创键.git文件

6.添加或修改文件
将文件添加到该目录下,然后加入git版本的控制范围之内

# <filename> 为用户名
$ git add <filename>

7.提交修改

$ git commit -m 'comment content'

首次运行会出现下面错误:

*** Please tell me who you are.
Run
    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    to set your account's default identity.
    Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@Block-IIA.(none)')

根据提示运行相应的命令添加全局的邮箱名称和名称即可。该命令会在$HOME目录下增加一个.gitconfig文件,里面的内容大致如下:

[user]
    email = you@example.com
    name = Yourname

8.添加远程(用于合并项目)

# <origin>为项目名称
$ git remote add <origin> https://github.com/xxxx/xxx.git

如果报错,出现:

fatal : remote orgin already exists

那么可移除该名称

$ git remote rm <origin>

9.最后提交代码

$ git push <origin> master

免密码登陆push代码

# <usrname> 是用户名,类似于nick名称,而不是帐户名
# <password> 用户名对应的密码
$ echo "https://<username>:<password>@github.com" >> ~/.git-credentials
$ git config --global credential.helper store

执行完成后可查看$HOME/.gitconfig文件,会多一项:

$ cat ~/.gitconfig
[credential]
    helper = store

永久删除文件(包括历史记录)

当你一小心上传有着个人用户的密码帐号等信息的文件之后,那么正常删除的方式都无法解决其历史版本的存在,这个时候就需要永久的删除远程仓库的某些文件。
对于这种情况下,可以先在当前文件先克隆一份,然后修改完成之后,再强推到远程仓库,如果使用原本就有的本地仓库,建议要复制一份,然后再扫行此操作,因为这种删除方式会导致本地仓库相关文件删除
在当前git控制的目录下

$ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path-to-your-remove-file' --prune-empty --tag-name-filter cat -- --all

其中 path-to-your-remove-file 指的是相对于主分支的相对文件路径。
然后强推repo

$ git push <origin> master --force

最后清理和回收空间

$ rm -rf .git/refs/original/
$ git reflog expire --expire=now
$ git gc --prune=now
$ git gc --aggressive --prune=now

References

此条目发表在LINUX, 软件安装分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。