git部分命令

来源:互联网 发布:linux 调整根目录大小 编辑:程序博客网 时间:2024/05/21 07:56
git部分命令:


git config --global user.name "yourname"
git config --global user.email "email"   
//以上两个命令用于指定自己的GIT用户名和邮箱地址


git reset HEAD <file> //将暂缓区的文件撤销(不会改变工作区的文件内容)
git reset --hard HEAD //将当前工作区文件回退到最后一次提交版本(工作区、暂缓区和版本库一致)常用来彻底恢复到某一个版本状态
git reset --soft HEAD //将版本库回退到最后一次提交版本(工作区、暂缓区不改变,版本库改变),常用来只是回退版本库,不想改变工作区和暂缓区内容
git reset --mixed HEAD //将版本库回退到最后一次提交版本(工作区保持不变,暂缓区和版本库改变一致),常用来撤销暂缓区到某个版本状态


git checkout -- <file>  //这里有两种情况:
一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。




git log --pretty==oneline //可以查看当前分支版本提交记录
git log --graph --pretty=oneline --abbrev-commit //用带参数的git log也可以看到分支的合并情况
git tag //查看当前分支tag


git branch -d feature-vulcan //删除分支
git branch -D feature-vulcan //强行删除分支


git stash //把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash list //查看已经储存的工作现场列表
stash@{0}: WIP on dev: 6224937 add merge
需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除
 git stash apply stash@{0}
 git stash drop stash@{0}
另一种方式是用git stash pop,恢复的同时把stash内容也删了:
 git stash pop stash@{0} 




//////////////////////将本地仓库和远程仓库关联起来,并将本地内容推送到远程仓库上
$ git remote add origin git@github.com:michaelliao/learngit.git
请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。


下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 13.73 KiB, done.
Total 23 (delta 6), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
////////////////////////////////////////




git tag <标签> //默认标签是打在最新提交的commit上的
git tag v0.9 6224937 //待在某一次提交的commitId上
注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息:
$ git show v0.9
commit 622493706ab447b6bb37e4e2a2f276a20fed2ab4
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Thu Aug 22 11:22:08 2013 +0800
    add merge
...
git tag -a v0.1 -m "version 0.1 released" 3628164  //还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字
因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
如果要推送某个标签到远程,使用命令git push origin <tagname>:
git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
 * [new tag]         v1.0 -> v1.0


或者,一次性推送全部尚未推送到远程的本地标签:
git push origin --tags  //一次性推送全部尚未推送到远程的本地标签
Counting objects: 1, done.
Writing objects: 100% (1/1), 554 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
 * [new tag]         v0.2 -> v0.2
 * [new tag]         v0.9 -> v0.9


如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
git tag -d v0.9
Deleted tag 'v0.9' (was 6224937)
然后,从远程删除。删除命令也是push,但是格式如下:
git push origin :refs/tags/v0.9
To git@github.com:michaelliao/learngit.git
 - [deleted]         v0.9




//Git fetch和git pull的区别
Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge
    
Git fetch origin master
git log -p master..origin/master
git merge origin/master


    以上命令的含义:
   首先从远程的origin的master主分支下载最新的版本到origin/master分支上
   然后比较本地的master分支和origin/master分支的差别
   最后进行合并
   上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp
git diff tmp 
git merge tmp


    从远程获取最新的版本到本地的test分支上
   之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master


上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
结束