一、远程提交本地代码到github.com上或者提交到远程的服务器上

 git remote add origin https://github.com/gong620/testgit.git

 git push -u origin master    第一次(远程服务器上没有代码的时候)提交加上-u参数,以后就不用啦


提交分支的代码:

git push origin branch(分支名字)

二、切换到某个工作分支

git checkout 'gong'  或者git checkout master

三、查看当前工作分支

git branch


四、查看git 操作日志

git log

五、添加文件到暂存区

git add filename

六、提交文件到版本库

git commit -m "gong modified gong"    -m"备注提交信息"

七、回退到上一版本

git reset --hard HEAD^

回退到100个版本

git reset --hard HEAD~100

八、查看历史纪录的版本号id

git reflog

九、从远程库中克隆

git clone

十、删除分支

git branch -d name

创建分支:

git branch name

创建并切换分支

git checkout -b name  <<=====>> git branch dev    和  git checkout dev

切换分支:

git checkout branch_name


合并某分支到当前分支:

git merge branch_name

删除远程分支:

git branch -r -d origin/gong    只是删除了本地对远程分支的track

正确的操作:

git push origin :branch-name


十一、git pull

此命令用于获取远程分支中更新。

语法:git pull 远程主机 远程分支:本地分支如:git pull origin master:master,表示将远程主机origin中的master分支跟新到本地分支master。


十二、将远程版本库的更新,更新到本地库

git fetch origin

如果只更新某个分支,git fetch origin master


十三、恢复删除文件或者彻底从版本库中删除文件

当我们写代码的时候,经常使用rm直接将没用的文件直接删除,尽管这样git也能发现你删除了什么文件,用git status查看,会显示删除了什么文件,切记这时还没有commit提交到版本库中,如果执行了commit,那版本库中就没有了该文件就恢复不了啦;如果没有commit,那就可以用下面的命令恢复回来:

git checkout -- filename

实现一键还原

十四、标签管理

为分支打标签:

git tag  v1.0

查看标签

git tag

如果需要将以前的信息打上标签,或者之前在某个地方忘记打标签啦,可以后补上

git log --pretty=oneline --abbrev-commit

这样可以针对commit id 来打标签

git tag v0.9 6224937

查看标签信息

git show v1.0

给标签加上说明:

git tag -a v0.9 -m "version 1.0 released" 3628164

-a : 指定标签名

-m: 说明文字

删除本地标签:

git tag -d v1.0

将本地标签推送到远程:

git push origin v1.0

一次性推送多个本地标签:

git push origin --tags

删除远程标签:

    1、先删除本地标签:

git tag -d v1.0

    2、删除远程的标签:

git push origin :refs/tags/v0.9


十五、多人协作

当你从远程仓库克隆时,实际上git 自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin

查看远程库的信息:

git remote

显示更详细的信息:

git remote -v

推送分支:

git push origin master

推送其他的分支:eg:dev

git push origin dev


关系:

master分支是主分支,因此要时刻与远程同步;

dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步。

bug分支只用于本地修复bug,就没必要推送到远程了.

feature分支是否推到远程 ,取决于自己和开发的小伙伴。


工作模式:

1、首先 ,可以试图用git push origin branch-name推送自己的修改

2、如果推送失败,则因为远程分支也在更新,需要试图合并

3、如果合并有冲突,则解决冲突,并在本地提交

4、没有冲突或者解决掉冲突,再用git push origin branch-name推动成功

十六、Feature分支

进行一个全新的功能时,要先创建一个新的分支

git checkout -b feature-vulcan

切回dev,准备合并:

git checkout dev

如果因为各种原因,想取消此分支:(没有被合并过的分支)

git  branch -D feature-vulcan

十七、bug分支

当你在工作时,临时修复bug:(git提供了一个stash功能,可以把当前工作现场"隐藏"起来,等以后恢复现场后继续工作)

git stash   (要先add添加到工作区,不用commit提交到暂存区)

之后查看工作区:

git status(干净的,可以放心的干活啦)

确定在哪个分支上修复bug

git checkout branch-name(切换分支)

创建分支:

git checkout -b issue-101

修复完bug之后

git add filename

 git commit -m “fix bug 101"

切换到master分支,并完成合并,最后删除issue-110bug分支

git checkout  master

git merge --no-ff -m "merged bug fix 101" issue-101

git  branch -d issue-101

切回之前工作分支:

git  checkout dev

git status    查看工作区还是干净的

查看之前的工作现场存到哪里去了?

git stash list

有两种恢复现场的方法:

1、git stash apply,但是恢复后,stash内容并不删除,需要用git stash drop 来删除

2、git stash pop ,恢复的同时把stash内容也删了。*********

十八、--no-ff

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward 合并就看不出来曾经做过合并。

十九、删除远程分支


1、直接删除远程的分支

git push origin --delete  branch-name

2、 推送一个空分支到远程分支

git push origin :<branchName>

二十、删除tag

删除本地tag

1、

git tag -d <tagname>

git push origin :refs/tags/<tagname>

2、

git push origin --delete tag <tagname>



附:

Git基本常用命令如下:

   mkdir:         XX (创建一个空目录 XX指目录名)

   pwd:          显示当前目录的路径。

   git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。

   git add XX       把xx文件添加到暂存区去。

   git commit –m “XX”  提交文件 –m 后面的是注释。

   git status        查看仓库状态

   git diff  XX      查看XX文件修改了那些内容

   git log          查看历史记录

   git reset  –hard HEAD^ 或者 git reset  –hard HEAD~ 回退到上一个版本

                        (如果想回退到100个版本,使用git reset –hard HEAD~100 )

   cat XX         查看XX文件内容

   git reflog       查看历史记录的版本号id

   git checkout — XX  把XX文件在工作区的修改全部撤销。

   git rm XX          删除XX文件

   git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库

   git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库

   git clone https://github.com/tugenhua0707/testgit  从远程库中克隆

   git checkout –b dev  创建dev分支 并切换到dev分支上

   git branch  查看当前所有的分支

   git checkout master 切换回master分支

   git merge dev    在当前的分支上合并dev分支

   git branch –d dev 删除dev分支

   git branch name  创建分支

   git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作

   git stash list 查看所有被隐藏的文件列表

   git stash apply 恢复被隐藏的文件,但是内容不删除

   git stash drop 删除文件

   git stash pop 恢复文件的同时 也删除文件

   git remote 查看远程库的信息

   git remote –v 查看远程库的详细信息

   git push origin master  Git会把master分支推送到远程库对应的远程分支上




$ git log --pretty=format:"%h - %an, %ar : %s"

ca82a6d - Scott Chacon, 11 months ago : changed the version number

085bb3b - Scott Chacon, 11 months ago : removed unnecessary test code

a11bef0 - Scott Chacon, 11 months ago : first commit

表 2-1 列出了常用的格式占位符写法及其代表的意义。

选项     说明

%H      提交对象(commit)的完整哈希字串

%h      提交对象的简短哈希字串

%T      树对象(tree)的完整哈希字串

%t      树对象的简短哈希字串

%P      父对象(parent)的完整哈希字串

%p      父对象的简短哈希字串

%an     作者(author)的名字

%ae     作者的电子邮件地址

%ad     作者修订日期(可以用 -date= 选项定制格式)

%ar     作者修订日期,按多久以前的方式显示

%cn     提交者(committer)的名字

%ce     提交者的电子邮件地址

%cd     提交日期

%cr     提交日期,按多久以前的方式显示

%s      提交说明