转自:https://www.zybuluo.com/markheng/note/231956
- Git学习
- git init
- git add file
- git commit -m "comment"
- git status
- git log
- git reflog
- git reset --hard HEAD
- git reset --hard HEAD^(^^^..)
- git reset --hard HEAD~20
- git diff file
- git checkout -- filename
- git rm file
- git remote add origin [giturl]
- git push -u origin master
- git push origin master
- git remote
- git remote -v
- git pull
- git checkout -b branch-name origin/branch-name
- git checkout -b dev
- git branch dev
- git checkout dev
- git checkout
- git merge dev
- git branch -d
- git log --graph
- git merge --no-ff -m 'comments' dev
- git stash
- git stash list
- git stash apply
- git stash drop
- git stash pop
- git stash apply stash@{0}
- git branch -D
- git tag
- git tag
- git tag -a -m "blabalba.."
- git push origin
- git push origin --tags
- git tag -d
- git push origin :refs/tags/
新建一个目录,进入目录后用
git init
可以将当前目录创建为git的一个仓库repository
git add file
将文件加入暂存区
git commit -m "comment"
将暂存区修改提交到仓库并且留下comment留言
git status
查看当前仓库状态
git log
查看当前版本之前的各个commit记录,会因为reset而被消除一部分
git reflog
查看所有的操作记录
git reset --hard HEAD
查看当前版本说明
git reset --hard HEAD^(^^^..)
回退的之前的一(二三四...)个版本
git reset --hard HEAD~20
会退到之前的第二十个版本,从一开始(HEAD~1 = HEAD^)
git diff file
查看file的不同
git checkout -- filename
命令git checkout -- readme.txt
意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
git rm file
删除文件,与add类似
远程库
git remote add origin [giturl]
添加远程库
git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
git push origin master
将本地master分支推送到远程origin库
git remote
查看远程仓库名称
git remote -v
查看远程仓库详细信息
git pull
拉取远程分支内容到本地分支
git checkout -b branch-name origin/branch-name
创建与远程分支对应的本地分支
多人协作
多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
分支管理
git checkout -b dev
创建并切换到分支dev
相当于一下两条
git branch dev
创建dev分支
git checkout dev
切换到dev分支
git checkout
查看当前已经存在的分支
git merge dev
将当前分支与dev分支合并
git branch -d
删除分支
分支冲突时git status可以查看冲突的详细情况
git log --graph
查看分支合并的情况
git merge --no-ff -m 'comments' dev
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
git stash
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash list
查看暂存的分支情况
git stash apply
回复存档
git stash drop
删除存档
git stash pop
恢复并删除存档
git stash apply stash@{0}
恢复指定的存档
git branch -D
强制删除一个没有合并的分支
标签
git tag
在当前分支的commit处打上标签
git tag
为id为commit-id的commit打上标签
git tag -a -m "blabalba.."
为标签加上说明
git push origin
可以推送一个本地标签
git push origin --tags
可以推送全部未推送过的本地标签
git tag -d
可以删除一个本地标签
git push origin :refs/tags/
可以删除一个远程标签。