yum install git-core
或 apt-get install git
查看版本git --version
,我的是git version 1.7.9.5
创建SSH Key:ssh-keygen -t rsa -C "424211755@163.com"
,一路回车,会在用户主目录/root/.ssh/id_rsa
里面建立两个文件id_rsa
和id_rsa.pub
,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人,然后把id_rsa.pub
打开复制后放到github网站上面。
测试是否连接上ssh -T git@github.com
。如果显示You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。
然后配置自己的仓库:
git config --global user.name abc
git config --global user.email abc@163.com
如果你只是想创建本地仓库,不与远端的连接可以不用上面的配置,如果要管理远端仓库就需要上面操作。远端的仓库如github或者中国的www.oschina.net。
如果有更多的需求可以尝试下面的配置:
如果不想加入管理一些文件,每次git status
都会显示Untracked files
可以编写.gitignore文件,每行一个文件名或者目录。
起别名:git config --global alias.st status
。以后git status
就可以省略为git st
。
取消别名:git config --global --unset alias.st
加上--global
是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
每个仓库的Git配置文件都放在.git/config
文件中
当前用户的Git配置文件放在home/用户主目录下的一个隐藏文件.gitconfig
中
改颜色:git config --global color.ui true
新建空目录,git init,产生.git目录 编写文件
git add a.txt b.txt
git commit -m "git add"
Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD,git commit 就是提交到这个分支
改了哪个文件,git status
,显示修改过的文件名
根据上一步找到的文件名,git diff a.txt
,查看具体怎么改的。
提交修改和提交新文件是一样的 git add a.txt
然后提交修改 git commit -m "second add"
查看提交的log,git log
或git log a.txt也可以加参数–pretty=oneline,显示在一行
用HEAD表示当前版本 上一个版本就是HEAD^,上上一个版本就是HEAD^^,上100个版本写成HEAD~100
回到某一个版本git reset --hard 00f7c
或者 git reset --hard HEAD^
回到某一个版本后查看的git log只是前面的,不包括后面的版本号了,应该使用查看命令历史git reflog
没有添加过的文件状态是Untracked。
工作区:就是你在电脑里能看到的目录
版本库:工作区有一个隐藏目录.git,这个不算工作区
版本库里存了很多东西,其中最重要的就是称为stage
(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master的一个指针叫HEAD
git add
把文件修改添加到暂存区
git commit
把暂存区的所有内容提交到当前分支
需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改
1.命令git checkout -- readme.txt
意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
总之,就是让这个文件回到最近一次git commit或git add时的状态
2.如果提交到暂存区了, git reset HEAD readme.txt
可以把暂存区的修改撤销掉,重新放回工作区
3.已经提交了不合适的修改到版本库时,想要撤销本次提交,可以版本回退,如果已经推送到远端就没法修改了
git rm test.txt
,再提交git commit
,git checkout -- test.txt
,git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支 每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长 当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上 新提交一次后,dev指针往前移动一步,而master指针不变: 把dev合并到master上。直接把master指向dev的当前提交,就完成了合并,甚至可以删除dev分支
git branch
查看当前分支
git branch dev
创建dev分支
git checkout dev
切换到dev分支
git checkout -b dev
也可以,创建dev分支,然后切换到dev分支
之前master分支的.gitignore文件不存在了
可以提交修改了,换到master后会发现没有变化
git merge dev
合并指定分支到当前分支
git branch -d dev
删除分支
clone 远程的仓库到本地git clone git@github.com:abc/firstgit.git
,不用git init
把一个已有的本地仓库与远程仓库关联 git remote add origin git@github.com:abc/first.git
远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
把本地库的所有内容推送到远程库上:git push -u origin master
以后可以:git push origin master
git push命令会将本地仓库推送到远程服务器。
git pull命令则相反,更新不需要添加其他东西。
查看当前分支:git branch
切换分支:git checkout master
git tag
查看所有标签
git tag v1.0
打新标签,默认为HEAD,也可以指定一个commit id
git tag -a <tagname> -m "blablabla"
可以指定标签信息;