1) 远程仓库相关命令
检出仓库:$ git clone git://github.com/jQuery/jquery.git
查看远程仓库:$ git remote -v 或者$git remote show [remotename]
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote 远程仓库名 set-url [url]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]
*如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:
$git push origin test:master // 提交本地test分支作为远程的master分支
$git push origin test:test // 提交本地test分支作为远程的test分支
2)分支(branch)操作相关命令
查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
删除远程分支:$git branch -dr [name]
3)版本(tag)操作相关命令
查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]
合并远程仓库的tag到本地:$ git pull origin --tags
上传本地tag到远程仓库:$ git push origin --tags
创建带注释的tag:$ git tag -a [name] -m 'yourMessage'
4)恢复和比较
$git reflog 查看提交的版本信息
$git reset 版本名 将暂存区和本地仓库恢复到指定版本
$git reset --hard 版本名 将暂存区、本地仓库、工作区恢复到指定版本
$git reset --hard HEAD~3 恢复到最后第三次的版本
$git reset --sorf 版本名 将缓冲区恢复为哪个版本,工作区不变
$git checkout * 恢复暂存区所有文件到工作区
$git checkout 文件名 恢复暂存区指定文件到工作区
$git diff 比较工作区与暂存区的区别
$git diff --cached 比较暂存区与当前分支仓库区别
$git diff 远程主机名(仓库)/远程分支名 本地分支 比较远程分支和本地分支的区别
=====================
Git 常用命令
git config --list 看所有用户
git常用命令:
git init #创建一个git文件,用作在本地创建git仓库
git add 文件 #添加指定文件到暂存区(跟踪文件)
git rm --cached -r 文件 #删除缓冲区文件(即删除追踪)
git rm -rf文件 #删除暂存区里的文件和工作区,多个用空格分开
git ls-files 查看暂存区里的文件
git mv 旧文件名 新文件名 #将工作区的文件名改了添加到暂存区
git commit -m "message" #将暂存区里的内容提交到仓库(当前分支版本)
git checkout 文件名 #将暂存区的某个文件恢复到工作区
git checkout * #恢复暂存去所有文件到工作区
git reset --hard 分支(即分支仓库) #恢复某个分支版本库到暂存区和工作区
git remote add 远程主机名 地址 #添加远程仓库git remote add origin https://www.github.com/LeiLeee/family
git remote #查看远程仓库名
git remote -v #查看远程仓库和详细信息
git branch -r #查看远程分支
git branch -a #查看所有分支
git checkout -b 分支名 #创建分支且切换到该分支
git checkout tag名字 #切换到tag版本
git branch 分支名 #创建分支
git checkout 分支名 #切换到该分支
git branch -d 分支名 #删除本地分支
git branch -dr 分支名 #删除远程分支
git status #查看当前分支修改的文件且还未提交
git diff #查看工作区和暂存区有什么不同
git diff --cached #查看暂存区与当前分支仓库(当前分支仓库)有什么不同
git diff 远程主机名 分支 #查看当前分支仓库与远程仓库有什么不同git fetch 远程主机 分支 #取回远程仓库的分支(即分支版本库)
理解 fetch 的关键, 是理解 FETCH_HEAD,FETCH_HEAD指的是: 某个branch在服务器上的最新状态’。这个列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行对应于远程服务器的一个分支。当前分支指向的FETCH_HEAD, 就是这个文件第一行对应的那个分支.一般来说, 存在两种情况:
- 如果没有显式的指定远程分支, 则远程分支的master将作为默认的FETCH_HEAD.
- 如果指定了远程分支, 就将这个远程分支作为FETCH_HEAD.
git fetch origin branch1
这个操作是git pull origin branch1的第一步, 而对应的pull操作,并不会在本地创建新的branch。设定当前分支的 FETCH_HEAD' 为远程服务器的branch1分支`。这个命令可以用来测试远程主机的远程分支branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常.git fetch origin branch1:branch2
首先执行上面的fetch操作,下载远程branch1分支在本地创建branch2(但不会切换到该分支),如果本地不存在branch2分支, 则会自动创建一个新的branch2分支,如果本地存在branch2分支, 并且是`fast forward', 则自动合并两个分支, 否则, 会阻止以上操作.
fetch更新本地仓库两种方式:
//方法一 $ git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master $ git log -p master.. origin/master//比较本地的仓库和远程参考的区别 $ git merge origin/master//把远程下载下来的代码合并到本地仓库,远程的和本地的合并 //方法二 $ git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp $ git diff temp//比较master分支和temp分支的不同 $ git merge temp//合并temp分支到master分支 $ git branch -d temp//删除temp
git merge 分支名 #合并该分支到本分支 (一般加上 --allow-unrelated-histories)
git pull 远程主机名 远程分支:本地分支 #取回远程仓库的分支(即分支版本库)并合并到本分支
git push 远程主机名 本地分支 :远程分支 #将本地分支仓库推送到远程仓库的固
定分支
git log #查看所有提交的版本信息
git reflog #查看所有操作记录和对应版本
git reset 版本名 #将暂存区和本地仓库恢复到该版本时的情况
git reset --hard 版本名 #将暂存区和本地仓库和工作区恢复到该版本时的情况
git reset --hard HEAD~3 #恢复到最后第三次提交时的版本 HEAD表示当前版本、
HEAD^最后一次提交的版本
git clone 版本库网址 本地目录名 #如 git clone
https://github.com/jquery/jquery.git 从远程仓库克隆指定版本到本地
git push 被拒绝的情况
1.因为当前分支的最新提交落后于其对应的远程分支,所以我们先从远程库fetch到更新再和本地库合并,之后就可以git push操作了。
![rejected] non-fast-forward
2.在网站上改了README.md文件,添加一些项目的说明,然后用git push时,需要没有将远程仓库合并在本地(更新服务器变化)然后在push
![rejected] fetch-firstgit log 看你commit的日志
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
---------------------------------------------------------