Git Manual
目录
安装Git
sudo apt-get install git版本库
创建版本库
mkdir tgit #创建一个tgit的文件夹
cd tgit
git init #git init命令把这个目录变成Git可以管理的仓库配置
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config命令的--global参数表示你这台机器上所有的Git仓库都会使用这个配置
把文件添加到版本库
1,在tgit目录下新建一个文件, 2,使用git add把文件添加到仓库. 3,用命令git commit告诉Git,把文件提交到仓库.
git add text.txt#没有任何反馈就是成功了
#在commit之前git add <file>,可反复多次使用,添加多个文件
git commit -m "text"#-m后面输入的是本次提交的说明,可以输入任意内容,

时光机
git status命令可以查看当前仓库状态, 如果没有改动 git status反馈"无文件要提交,干净的工作区" 如果我现在修改了刚才的text.txt文件,再使用git status命令会显示我们修改了text.txt如果要查找修改的内容,可以使用git diff命令.
提交修改和提交新文件是一样的两步:
第一步 git add * 第二步 git commit -m
在执行第二步git commit之前,我们再运行git status会反馈将要修改包括text.txt
存档功能
1,git log命令显示从最近到最远的提交日志 2,在Git中,用HEAD表示当前版本上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100.
退回到上个版本:
git reset --hard HEAD^
cat text.txt #查看文件的内容后悔命令
Git提供了一个命令git reflog用来记录你的每一次命令:
git reflog回到刚才回去之前的存档
git reset --hard xxxxx#xxx是版本号,写前几位就可以暂存区的概念

修改
每次修改,如果不add到暂存区,不会那就加入到commit中
撤销修改
git checkout -- text.txt删除文件
rm test.txt #删掉了工作区的文件,此时版本库还有文件
#如果现在是删错了可以使用git checkout恢复工作去区文件.
#如果要删除版本库就要继续git status
#用命令git rm删掉,并且git commit
#如果版本库被删除后想恢复文件可以使用---来从暂缓区恢复
git reset --hard xxxxx#xxx是版本号,写前几位就可以

github
第1步:创建SSH Key.
ssh-keygen -t rsa -C "[email protected]"
在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面添加公钥的内容.
第3步:将我的密钥添加到已知密钥列表中
ssh-add ~/.ssh/id_rsa第4步:关联一个远程库
git remote add origin [email protected]:xyt571/tgit.git
git push -u origin master #第一次推送master分支的所有内容
git push origin master#推送最新修改
从远程克隆一个库
git clone [email protected]:这里是用户名/项目名.git
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快.
分支管理
创建分支和合并分支
git branch dev #创建
git checkout dev #切换
git checkout -b dev#git checkout命令加上-b参数表示创建并切换
git branch #查看当前分支
git checkout master #切换回master分支
git merge dev #合并到master分支
git branch -d dev #删除dev分支
#如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除

分支管理策略
使用--no-ff参数合并:
git merge --no-ff -m "merge with no-ff" dev
#因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
储藏工作区
git stash
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,用git status查看工作区,就是干净的
git stash list#查看储藏起来的工作去区.
git stash apply恢复,但是恢复后,藏匿内容并不删除,需要你用git stash drop来删除 另一种方式是用git stash pop,恢复的同时把stash内容也删了
多人协作
git remote#查看远程库的信息
git remote -v#显示更详细的信息
git push origin master#把该分支上的所有本地提交推送到远程库。
#如果git pull提示“无跟踪信息”,则说明本地分支和远程分支的链接关系没有创建,用命令
git branch --set-upstream branch-name origin/branch-name。创建远程origin的dev分支到本地
git checkout -b dev origin/dev多人协作一般步骤:
1,试图用git push origin branch-name推送自己的修改 2,如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并 3,如果合并有冲突,则解决冲突,并在本地提交. 4,再推送git push origin branch-name
master分支是主分支,因此要时刻与远程同步.
标签管理
创建标签
git branch
git checkout master
git tag <name>#新建标签
#默认标签是打在最新提交的commit上
git tag v0.9 1111#1111是commit的id
#标签不是按时间顺序列出,而是按字母排序的。可以用:
git show <tagname>
#创建带有说明的标签,用-a指定标签名,-m指定说明文字:
git tag -a v0.1 -m "version 0.1 released" 3628164

还可以通过-s用私钥签名一个标签:
签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错.
git tag -s v0.2 -m "signed version 0.2 released" fec145a
git show <tagname>#可以看到PGP签名信息
命令git tag可以查看所有标签。
操作标签
删除标签
git tag -d v0.1 #删除未推送到远程的标签
git push origin v1.0 #推送某个标签到远程
git push origin --tags #一次性推送全部尚未推送到远程的本地标签
#如果标签已经推送到远程,要删除远程标签就麻烦一点.
git tag -d v0.9 #删除未推送到远程的标签
git push origin :refs/tags/v0.9 #删除一个远程标签Git官网
系列:Manual
该系列自动来自分类: Manual