git笔记

设置用户名、密码

1
2
3
4
5
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

git remote //查看远程库信息
git remote -v显示更详细的信息

提交文件

1
2
git add readme.txt
git commit -m "message"

查看状态

1
2
3
4
5
git status  告诉你有文件被修改过
git diff 可以查看修改内容。
git diff HEAD -- readme.txt 查看工作区与版本库最新版的区别
git log 命令显示从最近到最远的提交日志,
git log --pretty=oneline 一行显示

版本回退

1
2
git reset --hard HEAD^   //回退到上一版本
git reset --hard commit_id //回退到指定版本

撤销修改

1
2
3
git checkout -- file  //丢弃工作区修改
git reset HEAD <file> //缓存区回退到工作去
如果修改已经提交到版本区,使用版本回退

删除

1
2
3
a.rm test.txt  //删除本地工作去文件   (误删可用git checkout --test.txt把误删的文件恢复到最新版本)
b.git rm test.txt //删除版本库文件
d.git commit -m <message>

上传到github

1
2
3
4
5
6
1.生成ssh key:  $ ssh-keygen -t rsa -C "youremail@example.com"

2.git remote add origin git@github.com:michaelliao/learngit.git 要关联一个远程库

3.$ git push -u origin master 本地库的所有内容推送到远程库上:由于远程库是空的,我们第一次推送master分支时,加上了-u参数
git push origin master推送最新修改

从远程库克隆

1
2
3
 git clone git@github.com:lingengxiong/testAgain.git

(还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。)

分支管理

查看分支:

1
git branch

创建分支:

1
git branch <name>

切换分支:

1
git checkout <name>

创建+切换分支:

1
git checkout -b <name>

合并某分支到当前分支:

1
git merge <name>

删除分支:

1
2
git branch -d <name>
git branch -D <name> //强行删除未合并的分支

查看分支合并情况

1
git log --graph --pretty=oneline --abbrev-commit

分支管理策略

1
git merge --no-ff -m "merge with no-ff" dev              --no-ff参数,表示禁用Fast forward

保存工作现场

1
git stash

查看现场保存情况

1
git stash list

回复现场

1
2
git stash pop
git stash apply stash@{0} 多次stash,恢复时,指定stash

创建远程origin的dev分支到本地

1
git checkout -b dev origin/dev

指定本地dev分支与远程origin/dev分支的链接

1
git branch --set-upstream-to=origin/dev dev

多人协作

1
2
3
4
5
6
7
8
9
10
11
因此,多人协作的工作模式通常是这样:

首先,可以试图用git push origin <branch-name>推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。

标签管理

创建标签

1
git tag <name>  //如git tag v1.0

查看标签

1
git tag

补打标签

1
2
3
4
5
git log --pretty=oneline --abbrev-commit  //查看历史提交的commit id
git tag v0.9 f52c633

git tag -a v0.1 -m "version 0.1 released" 1094adb //创建带有说明的标签,用-a指定标签名,-m指定说明文字
git show <tagname>可以看到说明文字

删除标签

1
2
3
git tag -d v0.1

git push origin :refs/tags/v0.9 //从远程删除

推送标签

1
2
3
git push origin <tagname>

git push origin --tags //一次性推送全部尚未推送到远程的本地标签