创建目录
$
mkdir learngit
$
cd learngit
$
pwd
初始化仓库
$
git init
添加到缓存
$
git add file1.txt
提交本地仓库
$
git commit -m
"add 3 files."
查看仓库状态
git status
命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
比较不同
git diff
顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个“distributed”单词。
查看日志
$
git log --pretty=oneline
$
git log
git log --graph
命令可以看到分支合并图。
回滚重置代码
首先,Git必须知道当前版本是哪个版本,在Git中,用
HEAD
表示当前版本,也就是最新的提交
3628164...882e1e0
(注意我的提交ID和你的肯定不一样),上一个版本就是
HEAD^
,上上一个版本就是
HEAD^^
,当然往上100个版本写100个
^
比较容易数不过来,所以写成
HEAD~100
$ git re
set
--hard HEAD^
页可以指定提交号,前几位可以辨别就好
$ git re
set
--hard
3628164
revert 和reset
git checkout -- file
可以丢弃工作区的修改:
$
git checkout -- readme.txt
命令
git checkout -- readme.txt
意思就是,把
readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是
readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是
readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次
git commit
或
git add
时的状态。
删除文件
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用
rm
命令删了:
$
rm test.txt
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,
git status
命令会立刻告诉你哪些文件被删除了:
$
git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: test.txt
#
no changes added to commit (use
"git add"
and
/
or
"git commit -a"
)
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令
git rm
删掉,并且
git commit
:
$ git rm test.txtrm 'test.txt'$ git
commit
-m
"remove test.txt"
[master d17efd8] remove test.txt
1
file changed,
1
deletion(-)
delete
mode
100644
test.txt
现在,文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$
git checkout -- test.txt
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作
本地仓库与远程关联
$
git remote add origin git
@github
.
com:
michaelliao/learngit.git
git remote rm origin 删除关联 origin可以自定义
git remote -v 查看远程仓库信息
克隆远程仓库到本地
$
git clone git
@github
.
com:
michaelliao/gitskills.git
分支
查看分支:
git branch
创建分支:
git branch <name>
切换分支:
git checkout <name>
创建+切换分支:
git checkout -b <name>
合并某分支到当前分支:
git merge <name>
删除分支:
git branch -d <name> 大写D表示强制删除
贮藏工作区分支
$
git stash 贮藏未commit的代码
$
git stash list 查看贮藏文件
一是用
git stash apply
恢复,但是恢复后,stash内容并不删除,你需要用
git stash drop
来删除;
另一种方式是用
git stash pop
,恢复的同时把stash内容也删了:
查看远程仓库信息
$
git remote
$
git remote -v 详细信息
$
git push origin master 远程仓库名 +分支名
git push --set-upstream origin dev 推送新分支到远程
- 首先,可以试图用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 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,如果有冲突,要先处理冲突。
Tag使用
- 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
- git tag -a <tagname> -m "blablabla..."可以指定标签信息;
- git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
- 命令git tag可以查看所有标签。
- 命令git push origin <tagname>可以推送一个本地标签;
- 命令git push origin --tags可以推送全部未推送过的本地标签;
- 命令git tag -d <tagname>可以删除一个本地标签;
- 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
手写添加忽略文件
.gitignore
merger和rebase的区别
查看拉取远程分支
git checkout -b 本地分支名x origin/远程分支名x
http://zhidao.baidu.com/link?url=cuqJsL9skJJn5c556zXfP1dgCAOUK37CDXkNIw_sS0YKmvoROTI0HP7-PbKjgs6Lv4XrGleG2fjg5AaNgASlxgmt00c7rsC5gpPryKR_D_G
git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:
1. 找一个干净目录,假设是git_work
2. cd git_work
3. git clone
http://myrepo.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录
4. cd project
5. git branch -a,列出所有分支名称如下:
remotes/origin/
dev
remotes/origin/release
7. git checkout -b release origin/release,作用参见上一步解释
8. git checkout dev,切换回dev分支,并开始开发。
用git commit提交版本时没有加-m,会进入vim,如何写入提交说明然后退出
git修改远程仓库地址
1.修改命令
git remote set-url origin [url]
例如:git remote set-url origin git@git.shuiditech.com:frontend/package/sd-statistics.git
2.先删后加
git remote rm origin
git remote add origin [url]
3.直接修改config文件
git查看远程仓库地址命令:
$git remote -v
git 重置回顾
本地仓库关联远程方法 看红字
Git 全局设置:
git config --global user.name "小兮"git config --global user.email "helloworld107@163.com"
创建 git 仓库:
mkdir watercd watergit inittouch README.mdgit add README.mdgit commit -m "first commit"
git remote add origin git@gitee.com:MyDreamLy/water.gitgit push -u origin master
已有项目?
cd existing_git_repo
git remote add origin git@gitee.com:MyDreamLy/water.git
git push -u origin master