git init
git add file.txt 添加
git commit -m "XXX" 提交
git status
git diff
git log 查看提交历史
git log --pretty=oneline 历史一行一行显示
git reset --hard head^(回退到上一个版本)
git reset --hard 版本号前几位
git reflog 查看命令历史
git checkout -- readme.txt 丢弃工作区的修改
git reset HEAD file 不但改乱了⼯工作区某个⽂文件的内容,还添加到了暂存区时,想丢弃修改,分两步 1、reset 2、checkout
删除文件:
rm 文件名
git rm 文件名
git commit -m "rm 文件名"
rm 文件名
git checkout -- test.txt
$ git push origin master 本地master分⽀支的最新修改推送⾄至GitHub
git remote add origin git@server-name:path/repo-name.git ; 关联一个远程库
git push -u origin master 第一次推送master分⽀支的所有内容;
从远程库克隆
git clone [email protected]:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
$ cd gitskills
$ ls
README.md
$ git checkout -b dev 创建dev分支,然后切换到dev分⽀支:
git checkout 命令加上 -b 参数表⽰示创建并切换,相当于以下两条命令:
$ git branch dev 查看分支
$ git checkout dev 切换分支
$ git branch 查看当前分支
* dev
master
git branch 命令会列出所有分⽀支,当前分⽀支前⾯面会标⼀一个*号。
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支: git checkout -b name
合并某分支到当前分支: git merge name
删除分支: git branch -d name
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
git log --graph --pretty=oneline --abbrev-commit 查看分支的合并情况
合并分支时,如果可能,Git会⽤用“Fast forward”模式,删除分支后,会丢掉分支信息。
如果要强制禁用“Fast forward”模式,Git就会在merge时生成一个新的commit,这
样,从分支历史上就可以看出分⽀支信息。
git merge --no-ff -m "merge with no-ff" dev --no-ff参数,表示禁用“Fast forward”
因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
git stash 把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git checkout -b issue-编号 增加bug的分支
git merge --no-ff -m "merged bug fix 101" issue-101 bug合并到主干
git branch -d issue-编号 删除bug分支
git stash list 查刚才的工作现场
git stash apply 恢复现场 git stash apply stash@{0}
git stash drop 删除stash内容
git stash pop 恢复现场的同时,删除stash内容
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过 git branch -D name 强行删除。
git remote 查看远程库的信息
git remote -v 查看远程库,显示更详细的信息
多人协作
查看远程库信息,使用 git remote -v ;
• 本地新建的分支如果不推送到远程,对其他人就是不可见的;
• 从本地推送分支,使用 git push origin branch-name ,如果推送失败,先用git pull抓
取远程的新提交;
• 在本地创建和远程分支对应的分支,使用 git checkout -b branch-name origin/branch-
name ,本地和远程分支的名称最好一致;
• 建立本地分支和远程分支的关联,使用 git branch --set-upstream branch-name
origin/branch-name ;
• 从远程抓取分支,使用 git pull ,如果有冲突,要先处理冲突。
标签
git tag v1.0 创建标签
git tag 查看标签
git log --pretty=oneline --abbrev-commit 找到历史提交的commit id
git tag 版本号 commit id 对某次的提交打标签
git show 版本号 查看标签信息
还可以创建带有说明的标签,⽤用-a指定标签名,-m指定说明⽂文字:
$ git tag -a v0.1 -m "version 0.1 released" 3628164
还可以通过-s⽤用私钥签名⼀一个标签:
$ git tag -s v0.2 -m "signed version 0.2 released" fec145a
签名采⽤用PGP签名,因此,必须⾸首先安装gpg(GnuPG),如果没有找到gpg,或者没有
gpg密钥对,就会报错:
gpg: signing failed: secret key not available
error: gpg failed to sign the data
error: unable to sign the tag
如果报错,请参考GnuPG帮助⽂文档配置Key。
git tag -d 版本号 删除标签
git push origin 版本号 推送某个标签到远程
git push origin --tags 一次性推送全部尚未推送到远程的本地标签
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
$ git tag -d v0.9
然后,从远程删除。删除命令也是push,但是格式如下:
$ git push origin :refs/tags/v0.9
git的其他设置
$ git config --global color.ui true 让Git显示颜色,会让命令输出看起来更醒目:
配置别名
$ git config --global alias.st status