Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
ubuntu上的命令:
$ sudo apt-get install git
如果是其他版本的Linux可以通过源码安装。
先从官网下载源码,然后解压,依次输入:./config , make , sudo make install这几个命令。
在Mac上安装推荐从APPSTORE安装。
从git官网下载程序安装,按默认一直点下一步就可以。
安装完成后,在开始菜单或者右键里可以找到git/git bash here点击运行出现类似命令行窗口的东西,恭喜你git安装成功了!
然后在命令行里配置你的用户名和email地址。
$ git config --global user.name "youname"
$ git config --global user.eamil "youemail"
仓库就是版本库,英文名repository ,每个文件的修改、删除都在版本库里并且可以被追踪。
命令:
$ mkdir Learn //创建文件夹
$ cd Learn //进入文件夹Learn
$ git init //初始化,把这个目录变成git仓库
这时文件夹里会出现一个.git目录,如果没有看到那就打开隐藏文件。
$ git add README.txt //git add <file>可以多次使用,添加多个文件
$ git comnit -m "新建一个README.txt"
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git diff README.txt
注:如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
$ git log //如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数
$ git log --pretty=oneline
$ git reset --hard commit_id //commit_id是版本号
$ git reflog
$ git checkout -- file
$ git rm README.txt
$ ssh-keygen -t rsa -C "youremail@example.com" //一路回车,使用默认值即可
完成之后可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
$ git remote add origin git@github.com:zhaozhifu-catshak/Learn.git
关联后,使用命令git push -u origin master第一次推送master分支的所有内容,此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改
用命令git clone克隆一个远程库到本地
$ git clone git@github.com:zhaozhifu-catshak/Learn.git
$ git checkout -b read
Switched to a new branch 'read'
$ git branch read //创建read分支
$ git checkout read //切换到read分支
Switched to branch 'read'
$ git branch
* read
master
然后,我们就可以在read分支上正常提交。
$ git merge read
Updating d46f35e..b17d20e
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
注:如果要合并到master主分支,要先切换到master主分支
$ git branch -d read
Deleted branch dev (was b17d20e).
$ git branch
* master
用git log –graph命令可以看到分支合并图.
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
$ git merge --no-ff -m "merge with no-ff" read
//-m参数可以把commit描述写进去。
$ git push origin read
$ git branch
* read
master
$ git checkout master
Switched to branch 'master'
$ git tag v1.0
//$ git tag v0.9 commit id
//可以用commit id 给固定版本打标签
$ git tag
//v0.9
v1.0
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
$ git tag -d v0.1
Deleted tag 'v0.1' (was f15b0dd)
命令git push origin :refs/tags/tagname 可以删除一个远程标签
命令git push origin tagname 可以推送一个本地标签;
命令git push origin –tags可以推送全部未推送过的本地标签;
让git显示颜色
$ git config --global color.ui true
$ git lfs env:
$ git lfs checkout:
$ git lfs fetch:
$ git lfs fsck:
$ git lfs install:
$ git lfs lock:
$ git lfs locks:
$ git lfs logs:
$ git lfs ls-files:
$ git lfs migrate:
$ git lfs prune:
$ git lfs pull:
$ git lfs push:
$ git lfs status:
$ git lfs track:
$ git lfs uninstall:
$ git lfs unlock:
$ git lfs untrack:
$ git lfs update:
$ git lfs version: