git基础教程

一、取得项目的 Git 仓库

------------------------------------ 1、初始化git仓库

***首先在本地创建一个版本库,比如 D:\testgit,然后再cd到版本库目录下面执行如下命令***

git init
	 执行之后目录下面会生成.git目录,git所需要的数据都在这个目录下面,但是现在只是按照既有的框架初始化好了里面的目录和文件

---------------------------------2、从现有的仓库克隆

git  clone [url]

git clone git://github.com/schacon/grit.git 
这会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的 grit 目录,你会看到项目中的所有文件已经在里边了,准备好后续的开发和使用 

下面是自定义目录
$ git clone git://github.com/schacon/grit.git mygrit

------------------3、设置账户和邮箱

git config --global user.name xxx
git config --global user.email xxx@foxmail.com

二、git基础 -记录每次更新到仓库

----------------------- 1、检查当前文件的状态

git status


$ git status
On branch master
nothing to commit, working directory clean      这种说明你的工作目录很干净上次提交之后没有更改过


-------未跟踪文件
$ touch 234.txt
$ git status
Untracked files:#未跟踪的文件
  (use "git add <file>..." to include in what will be committed)
        234.txt
文件没有进行跟踪,意思就是之前提交的里面没有这个文件

-----------------------------------2、跟踪文件

git add 把文件添加进暂存区,同时未曾跟踪过的文件标记为需要跟踪

git add 文件名


$ touch 123.txt  创建一个文件
$ git add 123.txt 跟踪一个文件
$ git status  查询本地当前文件的状态
On branch master

No commits yet

Changes to be committed:#要提交的更改
  (use "git rm --cached <file>..." to unstage)
        new file:   123.txt

含义是123.txt已经被跟踪,且处于跟踪状态

----------------------------------- 3、暂存一修改的文件

假设我们修改已经跟踪的文件123.txt
-----------------修改文件
$ vi 123.txt
$ git status
Changes not staged for commit:#未暂存已提交的更改
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   123.txt

含义:
Changes not staged for commit” 下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行 git add 命令

--------暂存修改的文件
$ git add 123.txt
$ git status
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   234.txt
        modified:   123.txt

备注:每次编辑文件后都需要执行git add把文件暂存之后再提交,否则提交的都是最近一次执行git add 时的版本

----------------------------------- 4、忽略某些文件

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。

文件 .gitignore 的格式规范如下:

所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式最后跟反斜杠(/)说明要忽略的是目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 09 的数字)。

我们再看一个 .gitignore 文件的例子:

#此为注释 – 将被 Git 忽略
#忽略所有 .a 结尾的文件
*.a
#但 lib.a 除外
!lib.a
#仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
#忽略 build/ 目录下的所有文件
build/
#会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
#忽略 doc/ 目录下所有扩展名为 txt 的文件
doc/**/*.txt

**\通配符从 Git 版本 1.8.2 以上已经可以使用。

------------------------------------查看已暂存和未暂存的更新 git diff

假设我们修改了已经暂存的文件,还没有再次暂存,但是需要查看修改的内容,只需要使用git diff就可以

$ git diff
warning: LF will be replaced by CRLF in 123.txt.
The file will have its original line endings in your working directory
diff --git a/123.txt b/123.txt
index 4741c73..521cc39 100644
--- a/123.txt
+++ b/123.txt
@@ -1 +1 @@
-我是?
+kkkkkkk

此命令比较的是暂存区和当前文件内容的内容变化

---------------------------------------------- 6、查看本次暂存和上次暂存的数据变化

git diff --cached 或者 git diff --staged

----------------------------$ git diff --staged--------------------
$ git diff --cached
diff --git a/123.txt b/123.txt
new file mode 100644
index 0000000..521cc39
--- /dev/null
+++ b/123.txt
@@ -0,0 +1 @@
+kkkkkkk
diff --git a/234.txt b/234.txt
new file mode 100644
index 0000000..e69de29
-----------------------------------$ git diff --staged-------------------------
________________MRlv@DESKTOP-23MQS9F MINGW64 /d/testgit (master)
$ git diff --staged
diff --git a/123.txt b/123.txt
new file mode 100644
index 0000000..521cc39
--- /dev/null
+++ b/123.txt
@@ -0,0 +1 @@
+kkkkkkk
diff --git a/234.txt b/234.txt
new file mode 100644
index 0000000..e69de29

________________MRlv@DESKTOP-23MQS9F MINGW64 /d/testgit (master)

------------------------------- 7、提交更新 git commit

执行git commit之后会弹出vim编辑器以输入本次提交代码的说明

或者执行如下命令:

$ git commit -m "Story 182: Fix benchmarks for speed"
[master 463dc4f] Story 182: Fix benchmarks for speed
 2 files changed, 3 insertions(+)
 create mode 100644 README

-m后面的参数是本次提交的说明

-------------------------8、跳过使用暂存区域 git commit -a

Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add


$ git commit -a
warning: LF will be replaced by CRLF in 8.txt.
The file will have its original line endings in your working directory
[master d504dc2] 再次提交文件
 1 file changed, 1 insertion(+)

----记住:这个命令会提交所有git add过的文件并且提交的是当前目录的最新数据

-------------------------------9、移除文件

如果我们需要移除一个文件,首先需要在本地删除这个文件,然后再执行命令git rm删除暂存清单的数据进行彻底删除

------首先,删除本地目录的文件
rm 111.txt  


------然后,执行git status可以看到暂存列表里面文件还在
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   111.txt



-------最后,执行 git rm 111.txt 文件彻底删除
$ git rm 111.txt
rm '111.txt'


---------------------10、删除暂存区的文件
git rm --cached 文件名

$ git rm --cached 12.txt
rm '12.txt'

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        12.txt

nothing added to commit but untracked files present (use "git add" to track)

#从结果可以看出来12.txt是未跟踪文件,也就是暂存区已经没有12.txt文件了

-------------11、用正则删除文件

$ git rm log/\*.log
删除log下面所有以.log结尾的文件

$ git rm \*~
会递归删除当前目录及其子目录中所有 ~ 结尾的文件。

-----------------12、移动文件 git mv 原文件 目标文件

前提:
这个命令只能执行暂存区的文件重命名,并且暂存之后没有再次被修改过,都是最新的数据

$ git mv 123.txt 567.txt

________________MRlv@DESKTOP-23MQS9F MINGW64 /d/testgit (master)
$ ls
12.txt   55.ttx   8.txt
234.txt  567.txt  selenium高级自动化(图文教程)-抢先版.pdf




其实,运行 git mv 就相当于运行了下面三条命令:

$ mv README.txt README
$ git rm README.txt
$ git add README

三、git基础 -查看提交历史

1、查看提交历史

$ git log

commit d504dc222f5117e04e1b8dd0083cbe070796affe
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 17:46:50 2019 +0800

    再次提交文件

commit ecccc902fbddd51fd721c7f515975bfc34970eb8
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 17:42:23 2019 +0800

    提交文件8.txt

commit 7e018a7b885276c7ec6667787ff0c6d620afaa72
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 17:11:47 2019 +0800

    测试一下

commit a42523693b902f49b9aac2bb90fe28010ae12942 (origin/tty, tty)
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 16:23:27 2019 +0800

结果按照降序排列

----------------2、查看最近n次的更新 git log -p -n

$ git log -p -3
commit 651109022de787ebf133fb08995d1a63f5ac88d3 (HEAD -> master)
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 19:26:27 2019 +0800

    再第三次提交

diff --git a/3.txt b/3.txt
index e69de29..04f2b40 100644
--- a/3.txt
+++ b/3.txt
@@ -0,0 +1 @@
+mmmmmmmmmmmmmmmmmmmm

commit 20af18e6966eaceb6fe583dc5f0882e79c6f1131
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 19:25:47 2019 +0800

    再第二次提交

diff --git a/2.txt b/2.txt
index e69de29..859bcfd 100644
--- a/2.txt
+++ b/2.txt
@@ -0,0 +1 @@
+jjjjjjjjjjjjjjjjjjj

commit cc8648d3c770c2b3df18c147cadef97b2870f767
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 19:24:54 2019 +0800

    再一次提交

diff --git a/1.txt b/1.txt
index e69de29..af80ce4 100644
--- a/1.txt
+++ b/1.txt
@@ -0,0 +1 @@
+kkkkkkkkkkkkkkkkkkkkkkkkkkkk



--------------3、单词层面的对比–word-diff,默认上下文的行数Un

$ git log -p -3 --word-diff -U2
commit 651109022de787ebf133fb08995d1a63f5ac88d3 (HEAD -> master)
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 19:26:27 2019 +0800

    再第三次提交

diff --git a/3.txt b/3.txt
index e69de29..04f2b40 100644
--- a/3.txt
+++ b/3.txt
@@ -0,0 +1 @@
{+mmmmmmmmmmmmmmmmmmmm+}

commit 20af18e6966eaceb6fe583dc5f0882e79c6f1131
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 19:25:47 2019 +0800

    再第二次提交

diff --git a/2.txt b/2.txt
index e69de29..859bcfd 100644
--- a/2.txt
+++ b/2.txt
@@ -0,0 +1 @@
{+jjjjjjjjjjjjjjjjjjj+}

commit cc8648d3c770c2b3df18c147cadef97b2870f767
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 19:24:54 2019 +0800

    再一次提交

diff --git a/1.txt b/1.txt
index e69de29..af80ce4 100644
--- a/1.txt
+++ b/1.txt
@@ -0,0 +1 @@
{+kkkkkkkkkkkkkkkkkkkkkkkkkkkk+}


备注:新增加的单词被 {+ +} 括起来,被删除的单词被 [- -] 括起来

------------------------------4、显示简要的增改行数统计

$ git log -p -3 --stat
commit 651109022de787ebf133fb08995d1a63f5ac88d3 (HEAD -> master)
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 19:26:27 2019 +0800

    再第三次提交
---
 3.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/3.txt b/3.txt
index e69de29..04f2b40 100644
--- a/3.txt
+++ b/3.txt
@@ -0,0 +1 @@
+mmmmmmmmmmmmmmmmmmmm

commit 20af18e6966eaceb6fe583dc5f0882e79c6f1131
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 19:25:47 2019 +0800

    再第二次提交
---
 2.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/2.txt b/2.txt
index e69de29..859bcfd 100644
--- a/2.txt
+++ b/2.txt
@@ -0,0 +1 @@
+jjjjjjjjjjjjjjjjjjj

commit cc8648d3c770c2b3df18c147cadef97b2870f767
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 19:24:54 2019 +0800

    再一次提交
---
 1.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/1.txt b/1.txt
index e69de29..af80ce4 100644
--- a/1.txt
+++ b/1.txt
@@ -0,0 +1 @@
+kkkkkkkkkkkkkkkkkkkkkkkkkkkk

----------------------------5、–pretty 选项

------------------------------pretty=full

$ git log -p -3 --stat  --pretty=full
commit 651109022de787ebf133fb08995d1a63f5ac88d3 (HEAD -> master)
Author: hopelv <512044050@qq.com>
Commit: hopelv <512044050@qq.com>

    再第三次提交
---
 3.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/3.txt b/3.txt
index e69de29..04f2b40 100644
--- a/3.txt
+++ b/3.txt
@@ -0,0 +1 @@
+mmmmmmmmmmmmmmmmmmmm

commit 20af18e6966eaceb6fe583dc5f0882e79c6f1131
Author: hopelv <512044050@qq.com>
Commit: hopelv <512044050@qq.com>

    再第二次提交
---
 2.txt | 1 +


-----------------------pretty=fuller

$ git log -p -3 --stat  --pretty=fuller
commit 651109022de787ebf133fb08995d1a63f5ac88d3 (HEAD -> master)
Author:     hopelv <512044050@qq.com>
AuthorDate: Sat Oct 12 19:26:27 2019 +0800
Commit:     hopelv <512044050@qq.com>
CommitDate: Sat Oct 12 19:26:27 2019 +0800

    再第三次提交
---
 3.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/3.txt b/3.txt
index e69de29..04f2b40 100644
--- a/3.txt
+++ b/3.txt
@@ -0,0 +1 @@
+mmmmmmmmmmmmmmmmmmmm

commit 20af18e6966eaceb6fe583dc5f0882e79c6f1131
Author:     hopelv <512044050@qq.com>
AuthorDate: Sat Oct 12 19:25:47 2019 +0800
Commit:     hopelv <512044050@qq.com>
CommitDate: Sat Oct 12 19:25:47 2019 +0800

---------------------------pretty=short

$ git log -p -3 --stat  --pretty=short
commit 651109022de787ebf133fb08995d1a63f5ac88d3 (HEAD -> master)
Author: hopelv <512044050@qq.com>

    再第三次提交
---
 3.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/3.txt b/3.txt
index e69de29..04f2b40 100644
--- a/3.txt
+++ b/3.txt
@@ -0,0 +1 @@
+mmmmmmmmmmmmmmmmmmmm

commit 20af18e6966eaceb6fe583dc5f0882e79c6f1131
Author: hopelv <512044050@qq.com>

    再第二次提交
---
 2.txt | 1 +
 1 file changed, 1 insertion(+)


--------------------------------pretty=oneline

$ git log -p -3 --stat  --pretty=oneline
651109022de787ebf133fb08995d1a63f5ac88d3 (HEAD -> master) 再第三次提交
 3.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/3.txt b/3.txt
index e69de29..04f2b40 100644
--- a/3.txt
+++ b/3.txt
@@ -0,0 +1 @@
+mmmmmmmmmmmmmmmmmmmm
20af18e6966eaceb6fe583dc5f0882e79c6f1131 再第二次提交
 2.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/2.txt b/2.txt
index e69de29..859bcfd 100644
--- a/2.txt
+++ b/2.txt
@@ -0,0 +1 @@
+jjjjjjjjjjjjjjjjjjj
cc8648d3c770c2b3df18c147cadef97b2870f767 再一次提交
 1.txt | 1 +
 1 file changed, 1 insertion(+)
代码片

---------------6、format

$ 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```

作者(author):指的是实际作出修改的人
提交者(committer):指的是最后将此工作成果提交到仓库的人

在这里插入图片描述
------------------------------7、–graph

展示ASCII 字符串表示的简单图形

$ git log --pretty=format:"%h %s" --graph
* 2d3acf9 ignore errors from SIGCHLD on trap
*  5e3ee11 Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 Added a method for getting the current branch.
* | 30e367c timeout code and tests
* | 5a09431 add timeout protection to grit
* | e1193f8 support for heads with slashes in them
|/
* d6016bc require time for xmlschema
*  11d191e Merge branch 'defunkt' into local
* 

在这里插入图片描述

------------------8、限制输出长度

$ git log --since=2.weeks   查看最近两周的提交

例子:
#2008 年 10 月期间,Junio Hamano 提交的但未合并的测试脚本(位于项目的 t/ 目录下的文件)

$ git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \
   --before="2008-11-01" --no-merges -- t/
5610e3b - Fix testcase failure when extended attribute
acd3b9e - Enhance hold_lock_file_for_{update,append}()
f563754 - demonstrate breakage of detached checkout wi
d1a43f2 - reset --hard/read-tree --reset -u: remove un
51a94af - Fix "checkout --track -b newbranch" on detac
b0ad11e - pull: allow "git pull origin $something:$cur



9、git图形化界面

命令行输入:
gitk

四、git基础-撤销操作

---------------1、修改最后一次提交

$ git commit --amend

-------------------2、取消已经暂存的文件

git reset HEAD 文件

$ git reset HEAD 0.txt

再次查看文件已经是未跟踪状态了
$ git status
On branch master
Your branch is ahead of 'origin/master' by 10 commits.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        0.txt

-----------------3、取消对文件的修改

$ git checkout -- 0.txt  取消了上次对0.txt的暂存操作

五、 Git 基础 - 远程仓库的使用

------------------1、查看当前的远程库

$ git remote
origin-------------默认克隆仓库的名字



-------------2、显示对应克隆库的地址

git   remote -v 

$ git remote -v
origin  https://github.com/hopelv/PROJECT (fetch)
origin  https://github.com/hopelv/PROJECT (push)

-------------3、添加远程仓库

git remote add 自定义的名字 仓库地址

$ git remote add pb git://github.com/paulboone/ticgit.git

------------4、从远程仓库抓取数据

 git fetch 定义的名字或地址

$ git fetch git://github.com/koke/grit.git
$ git fetch pd


-----------5、推送数据到远程仓库

 git push 远程服务器名称 分支名称
 
 #把本地的 master 分支推送到 origin 服务器上(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字)
 $ git push origin master

------------6、查看远程仓库的信息

git remote show 远程服务器名称

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/hopelv/PROJECT
  Push  URL: https://github.com/hopelv/PROJECT
  HEAD branch: master
  Remote branches:
    master tracked
    tty    tracked
  Local branches configured for 'git pull':
    master merges with remote master
    tty    merges with remote tty
  Local refs configured for 'git push':
    master pushes to master (up to date)
    tty    pushes to tty    (up to date)










随着使用 Git 的深入,git remote show 给出的信息可能会像这样:

$ git remote show origin
* remote origin
  URL: git@github.com:defunkt/github.git
  Remote branch merged with 'git pull' while on branch issues
    issues
  Remote branch merged with 'git pull' while on branch master
    master
  New remote branches (next fetch will store in remotes/origin)
    caching
  Stale tracking branches (use 'git remote prune')
    libwalker
    walker2
  Tracked remote branches
    acl
    apiv2
    dashboard2
    issues
    master
    postgres
  Local branch pushed with 'git push'
    master:master
它告诉我们,运行 git push 时缺省推送的分支是什么(译注:最后两行)。它还显示了有哪些远端分支还没有同步到本地(译注:第六行的 caching 分支),哪些已同步到本地的远端分支在远端服务器上已被删除(译注:Stale tracking branches 下面的两个分支),以及运行 git pull 时将自动合并哪些分支(译注:前四行中列出的 issues 和 master 分支)。

------------------7、远程仓库的删除和重命名

--------------重命名
git remote rename 仓库名
$ git remote rename pb pual

$ git remote
origin
pual


-----------删除仓库
git remote remove 仓库名

$ git remote remove pual

$ git remote
origin

六、git基础-打标签

--------------------------1、查看已有的标签

git tag

#搜索特定的标签
$ git tag -l 'v1.4.2.*'
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4

---------------------------2、标签分类
Git 使用的标签有两种类型:轻量级的(lightweight)和含附注的(annotated)
建议使用含附注的 ,如果是临时加标注就用轻量级的

----------------------------3、含附注标签

$ git tag -a v1.5 -m '测试新建附注标签'

-m 选项则指定了对应的标签说明,Git 会将此说明一同保存在标签对象中。如果没有给出该选项,Git 会启动文本编辑软件供你输入标签说明

#查看标签信息
git show v1.5
签署标签
$ git tag -s v1.5 -m '签署这个标签'

-----------4、轻量级标签

--------------------------创建
$ git tag v1.9

----------------------------查看
$ git show v1.9
commit 879f459983f08b537c20518417f8dc6456717d78 (HEAD -> master, tag: v1.9, tag: v1.5, origin/master)
Author: hopelv <512044050@qq.com>
Date:   Sat Oct 12 20:56:04 2019 +0800

    5555

diff --git a/0.txt b/0.txt
index dca9f61..10c225c 100644
--- a/0.txt
+++ b/0.txt
@@ -1,2 +1,2 @@

-oooooooooooooooooooppppppppppp
+oooooooooooooooooooppppppppppprrrrrrrrrrrrrrrrr


-------------------------5、验证标签

git tag -v 标签名

----------------------6、后期加注标签

如果之前漏掉了打标签,现在只要在打标签的时候跟上对应提交对象的校验和(或前几位字符)

$ git tag -a v1.2 9fceb02

-------------------7、分享标签

 git push origin 标签名     推送标签到远程服务器
 git push origin --tags     批量推送本地标签

七、技巧和窍门

-----------------1、命令别名

格式: git config --global alias.别名  命令名

$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status

设置最后一次提交的别名
$ git config --global alias.last 'log -1 HEAD'

git last 查看最后一次提交

2、对外部的脚本设置别名

$ git config --global alias.visual '!gitk'

九、分支

---------------------------------1、创建分支

git branch 分支名称

------------------------------------2、切换分支

git checkout  分支名
git checkout  testing

十、分支的新建于合并

开发某个网站。
为实现某个新的需求,创建一个分支。
在这个分支上开展工作。
假设此时,你突然接到一个电话说有个很严重的问题需要紧急修补,那么可以按照下面的方式处理:

返回到原先已经发布到生产服务器上的分支。
为这次紧急修补建立一个新分支,并在其中修复问题。
通过测试后,回到生产服务器所在的分支,将修补分支合并进来,然后再推送到生产服务器上。
切换到之前实现新需求的分支,继续工作。

-------------1、分支的新建和切换

 git checkout-b 分支名
 
 git checkout -b  test 相当于新建了分支并且切换到了新建的分支上面

-------------------------2、分支的合并

git  merge  分支名a         --把a合并到当前分支
$ git checkout master
$ git merge hotfix

----------------------3、删除分支

$ git branch -d 分支名
$ git branch -d hotfix

-------------------------------4、遇到冲突合并分支
使用git status查看具体的修改内容,然后进行修改

十一、分支的管理

---------------1、查看分支清单

git branch

----------------2、查看已经合并和没有合并的分支

$ git branch --merged 查看合并的分支

$ git branch --no-merged查看没有合并的分支


十二 Git 分支 - 远程分支

------------------1、推送本地分支

#把本地分支推送到远程仓库分支
git push  远程仓库名  分支名
$ git push origin serverfix

#把本地分支推送到远程仓库并且命名
git push  远程仓库名  本地分支名:新命名的分支名
git push origin serverfix:serverfix 

  

-----------------------2、跟踪远程分支

#把远程仓库的内容合并到当前分支
git merge 远程仓库名/分支名
git merge origin/serverfix

#把远程仓库的内容合并到新的分支且命名和远程分支一样且切换至这个分支
$ git checkout --track远程仓库名/分支名
$ git checkout --track origin/serverfix

#把远程仓库的内容合并到新的分支
$ git checkout -b 新的分支名 远程仓库名/分支名
$ git checkout -b serverfix origin/serverfix

---------------3、删除远程分支

gut push 远程名  分支名
git push origin :serverfix
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值