GIT 常用配置命令集

研究背景说明

这么多年一直用vss /svn 想研究一下git ,问一个同事,结果像是喂他吃了苍蝇一样,算了,自己研究一下,能有啥的。研究结果push 给大家分享。
网上p~iao了些同仁的资料,学习测试研究过程记录给大家,供大家参考。
我使用的远程库是 gitee 库,其他库大同小异,以后用到在研究

GIT全局配置

git config --global user.name "xxx"
git config --global user.email "xxxxxxjin@126.com"

其中, --global 指定为全局配置,不使用该参数,则为当前所在仓库配置。

GIT 日常操作

创建本地库

初始化本地库

git init 

创建 README.md 文件(可选)

touch README.md
或
vi README.md
也可以使用本地编辑器进行创建编辑

编辑README文件(可选)

vi READMIN.md 也可以本地文本编辑器编辑

创建忽略描述文件 .gitignore(可选)

vi .gitignore
window系统创建这个文件有点费劲,使用vi比较方便

加载文件到缓存区

git add .  //当前文件夹下的编辑文件全部提交到缓存区,语法同unix 的语法
或 
git add 文件名/文件夹 //指定文件夹或文件提交至缓存区

提交到本地库

git commit // 会弹出描述编辑器,编写描述
或
git commit -m "描述内容" //带描述提交,一般使用这种方式

日常操作

查看仓库状态

可以查看目前各个库的状态,以判断我们是否需要提交等动作

git status

示例:

$ git status
On branch master
nothing to commit, working tree clean

示例2:
$ git status
On branch master
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:   README.md

no changes added to commit (use "git add" and/or "git commit -a")


查看修改内容

git diff    // 查看版本库中所有的改动
或
git diff 文件        // 查看具体文件的改动

示例1:

$ git diff
diff --git a/README.md b/README.md
index e69de29..7e37670 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,2 @@
+测试修改
+

示例2:

$ git diff README.md
diff --git a/README.md b/README.md
index e69de29..7e37670 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,2 @@
+测试修改
+

查看提交历史记录

在 git log 的输出内容中,可以看到每次提交的 ID,是一个 40 位的字符串

git log     // 显示所有提交的历史记录
git log --pretty=oneline    // 单行显示提交历史记录的内容

示例:

$ git log
commit af668c47df700ff923b12222a227dec9227bf3ba (HEAD -> master, origin/master)
Author: wangwj <wangwanjin@126.com>
Date:   Wed Jun 29 12:59:07 2022 +0800

    test01

commit 805bcd94e76bfbffba91132998c2353c7d7e5efe
Author: wangwj <wangwanjin@126.com>
Date:   Wed Jun 29 12:04:44 2022 +0800

    test


示例2

$ git log --pretty=oneline
af668c47df700ff923b12222a227dec9227bf3ba (HEAD -> master, origin/master) test01
805bcd94e76bfbffba91132998c2353c7d7e5efe test

版本退回

通过 git log 来查看提交的历史记录,就可以通过 git reset --hard来回退到我们需要的特定版本,然后使用当时的代码进行各种操作。

git reset --hard HEAD^        // 回退到上一个提交版本
git reset --hard HEAD^^        // 回退到上上一个提交版本
git reset --hard 'commit_id'    // 会退到 commit_id 指定的提交版本

--hard 参数表明后续的修改都将被丢弃,去掉hard ,则后续的修改标记为未提交,后续如果要丢弃,按照放弃修改操作。

示例:

$ git log --pretty=oneline
18d76242414ce910bb2014baa65e6d209b0191ba (HEAD -> master, origin/master) 0004
569ce9c6244822c22952ba423a2f8e0bcd0abf3a 0003
103ac1bdeeda3603d39a06339891d257994e3fba 0002
d4676896b68564cd1a38468e040aade22934c504 0001
2a7818d1780a59bb5b7b1b1f90756b145b747d5e null
f801e0c55aaa89b108b3c5dff10d6fea7e4986e1 test0001
43e9c74ef689e400c1cc3715ac4c23c959d2c892 test04
4201c1e2146076a57f78c4acc0b9c3988854d1de test03
af668c47df700ff923b12222a227dec9227bf3ba test01
805bcd94e76bfbffba91132998c2353c7d7e5efe test


回退上一个版本
$ git reset --hard HEAD^
HEAD is now at 569ce9c 0003

提交提交历史0004 被清掉
$ git log --pretty=oneline
569ce9c6244822c22952ba423a2f8e0bcd0abf3a (HEAD -> master) 0003
103ac1bdeeda3603d39a06339891d257994e3fba 0002
d4676896b68564cd1a38468e040aade22934c504 0001
2a7818d1780a59bb5b7b1b1f90756b145b747d5e null
f801e0c55aaa89b108b3c5dff10d6fea7e4986e1 test0001
43e9c74ef689e400c1cc3715ac4c23c959d2c892 test04
4201c1e2146076a57f78c4acc0b9c3988854d1de test03
af668c47df700ff923b12222a227dec9227bf3ba test01
805bcd94e76bfbffba91132998c2353c7d7e5efe test


退回到上上个版本
$ git reset --hard HEAD^^
HEAD is now at d467689 0001

wangwj3@wangwj3 MINGW64 /d/test2 (master)
$ git log --pretty=oneline
d4676896b68564cd1a38468e040aade22934c504 (HEAD -> master) 0001
2a7818d1780a59bb5b7b1b1f90756b145b747d5e null
f801e0c55aaa89b108b3c5dff10d6fea7e4986e1 test0001
43e9c74ef689e400c1cc3715ac4c23c959d2c892 test04
4201c1e2146076a57f78c4acc0b9c3988854d1de test03
af668c47df700ff923b12222a227dec9227bf3ba test01
805bcd94e76bfbffba91132998c2353c7d7e5efe test

回到指定版本
$ git reset --hard "805bcd94e76bfbffba91132998c2353c7d7e5efe"
HEAD is now at 805bcd9 test

wangwj3@wangwj3 MINGW64 /d/test2 (master)
$ git log --pretty=oneline
805bcd94e76bfbffba91132998c2353c7d7e5efe (HEAD -> master) test


查看回退提交信息

当退回到某个提交的版本以后,再通过 git log 是无法显示在这之后的提交信息的。只能通过 git_reflog 查看历史的提交回退记录

git reflog

示例:

$ git reflog
805bcd9 (HEAD -> master) HEAD@{0}: reset: moving to 805bcd94e76bfbffba91132998c2353c7d7e5efe
d467689 HEAD@{1}: reset: moving to HEAD^^
569ce9c HEAD@{2}: reset: moving to HEAD^
18d7624 (origin/master) HEAD@{3}: pull origin master: Fast-forward
569ce9c HEAD@{4}: reset: moving to HEAD^
18d7624 (origin/master) HEAD@{5}: commit: 0004
569ce9c HEAD@{6}: commit: 0003
103ac1b HEAD@{7}: commit: 0002
d467689 HEAD@{8}: commit: 0001
2a7818d HEAD@{9}: commit (merge): null
f801e0c HEAD@{10}: commit: test0001
805bcd9 (HEAD -> master) HEAD@{11}: reset: moving to HEAD^^
4201c1e HEAD@{12}: reset: moving to HEAD^
43e9c74 HEAD@{13}: commit: test04
4201c1e HEAD@{14}: commit: test03
af668c4 HEAD@{15}: commit: test01
805bcd9 (HEAD -> master) HEAD@{16}: initial pull

版本恢复

通过git reflog 查找reset 过程进行恢复,仍然使用 git reset --hard 进行切换

git reset --hard 'commit_id' // --hard 后续的修改都被丢弃
git reset --keep "commit id" //如果提交后有修改的内容,则不会恢复,修改的内容将被保留,不建议使用
git reset //回复至上一次提交版本

示例:

查看历史回退记录
$ git reflog
805bcd9 (HEAD -> master) HEAD@{0}: reset: moving to 805bcd94e76bfbffba91132998c2353c7d7e5efe
d467689 HEAD@{1}: reset: moving to HEAD^^
569ce9c HEAD@{2}: reset: moving to HEAD^
18d7624 (origin/master) HEAD@{3}: pull origin master: Fast-forward
569ce9c HEAD@{4}: reset: moving to HEAD^
18d7624 (origin/master) HEAD@{5}: commit: 0004
569ce9c HEAD@{6}: commit: 0003
103ac1b HEAD@{7}: commit: 0002
d467689 HEAD@{8}: commit: 0001
2a7818d HEAD@{9}: commit (merge): null
f801e0c HEAD@{10}: commit: test0001
805bcd9 (HEAD -> master) HEAD@{11}: reset: moving to HEAD^^
4201c1e HEAD@{12}: reset: moving to HEAD^
43e9c74 HEAD@{13}: commit: test04
4201c1e HEAD@{14}: commit: test03
af668c4 HEAD@{15}: commit: test01
805bcd9 (HEAD -> master) HEAD@{16}: initial pull

回退到0003 的修改
$ git reset --hard "569ce9c"
HEAD is now at 569ce9c 0003

放弃修改

放弃修改有两种情况,一种在工作空间,一种进入缓存区(git add 命令后),commit后已经进入本地库,通过版本恢复。

放弃工作区的修改
git checkout -- README.md    // 如果 Readme.md 文件在工作区,则丢弃其修改
git checkout -- .            // 丢弃当前目录下所有工作区中文件的修改

示例:

$ git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

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:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

$ git checkout -- README.md
此时再查看 README.md文档,文档内容已经恢复到原状态
丢弃缓存区的修改

只是 git add 的逆向操作,从缓存中库中丢弃修改(工作区的修改还在),如果要完整恢复,就需要结合 git checkout – 撤回本地修改命令才行。如果已提交commit ,需要恢复版本。

git reset HEAD README.md // 将 README.md 恢复到提交缓存修改前
git reset HEAD . //撤回当前文件夹的所有提交缓存的修改
git reset HEAD //撤回到上次执行 add 命令之前

示例:

$ git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md

//恢复
$ git reset HEAD README.md
Unstaged changes after reset:
M       README.md


$ git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   README.md.bak
//只是撤回了提交到缓存的动作
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:   README.md

//撤回本地库修改才能真正的恢复
$ git checkout -- README.md

wangwj3@wangwj3 MINGW64 /d/test2 (master)
$ git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   README.md.bak
        

删除文件

  • 在没进入缓存之前,文件可以直接进行删除;

  • 如果进入缓存 ,可以使用 git reset HEAD 命令撤回,然后执行没进入缓存前的的做法;

  • 如果已经提交,则使用 git rm 进行删除;

    • 也可以本地进行删除,然后通过 git add 和git commit 将删除内容进行同步
git rm README.md.bak // 删除已经被提交过的 README.md.bak

示例:

$ git add . //加载到缓存区

$ git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   README.md.bak


$ git commit -m "测试文件删除" //提交到版本库
[master f82b372] 测试文件删除
 1 file changed, 1 insertion(+)
 create mode 100644 README.md.bak

$ ls -l
total 2
-rw-r--r-- 1 wangwj3 1049089 84 Jun 29 14:19 README.md
-rw-r--r-- 1 wangwj3 1049089 26 Jun 29 14:07 README.md.bak


$ git rm README.md.bak //删除版本库文件
rm 'README.md.bak'

$ ls -l
total 1
-rw-r--r-- 1 wangwj3 1049089 84 Jun 29 14:19 README.md

示例2:

wangwj3@wangwj3 MINGW64 /d/test2 (master)
$ ls
README.md  README.md.bak

wangwj3@wangwj3 MINGW64 /d/test2 (master)
$ rm -rf README.md.bak

wangwj3@wangwj3 MINGW64 /d/test2 (master)
$ ls -l
total 1
-rw-r--r-- 1 wangwj3 1049089 85 Jun 29 14:39 README.md

wangwj3@wangwj3 MINGW64 /d/test2 (master)
$ git add .

wangwj3@wangwj3 MINGW64 /d/test2 (master)
$ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 2 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    README.md.bak


wangwj3@wangwj3 MINGW64 /d/test2 (master)
$ git commit -m "deleted"
[master 82494f8] deleted
 1 file changed, 17 deletions(-)
 delete mode 100644 README.md.bak

wangwj3@wangwj3 MINGW64 /d/test2 (master)

分支操作

保存的文件未告诉git 进行管理,则通过多个分支创建的文件,使用git add . 命令,最终会把未跟踪的文件加载到当前分支中。所以建议在分支内的修改,在已经确定修改了,在当前分支内 加载到缓存区,然后使用保存草稿 git stash ,进行保存。

查看分支

当前分支 前带星号

git branch        // 查看本地分支信息
git branch -v     // 查看相对详细的本地分支信息
git branch -av     // 查看包括远程仓库在内的分支信息

示例1:

$ git branch
* master   //当前分支 前带星号

示例2

$ git branch -v
* master 82494f8 [ahead 3, behind 1] deleted

示例3

$ git branch -av
* master                82494f8 [ahead 3, behind 1] deleted
  remotes/origin/master 18d7624 0004 //远程仓库分支版本信息

创建分支

一般用于对源码暂时不动,进行逻辑调整,bug测试等等,确定没问题后在合并到主枝上

注:目前在再哪个分支下创建新的分支,则复制当前分支到目标分支

git branch test01 // 新建一个名称为 test01 的分支

示例:

$ git branch test01

xxx@xxx MINGW64 /d/test2 (master)
$ git branch
* master
  test01

xxx@xxx MINGW64 /d/test2 (master)
$ git branch -av
* master                82494f8 [ahead 3, behind 1] deleted
  test01                82494f8 deleted   // todo 研究一下意思
  remotes/origin/master 18d7624 0004

切换分支

创建完分支后,要切换到目标分支,否则任何修改都在原来的枝条上

git checkout test01 // 新建完 test01 分支以后,通过该命令切换到 test01 分支

示例:

$ git checkout test01
Switched to branch 'test01'

xxx@xxx MINGW64 /d/test2 (test01)
$ git branch
  master
* test01 //已经切换到test01 分支

创建并切换分支

一般情况创建分支直接切换到分支上,而不需要先创建,在切换,集合了

git checkout -b test02 // 新建 test02 分支,并切换到该分支上

示例:

$ git checkout -b test02
Switched to a new branch 'test02'

xxx@xxx MINGW64 /d/test2 (test02)
$ git branch
  master
  test01
* test02
合并分支

当修复或调整完成,我们需要将新的内容合并到主枝上,需要分两个步骤,先切回主枝,在将分支向主枝合并。注意有可能会引起冲突

git checkout master        // 切换回 master 分支
git merge test01            // 将 test01 分支的修改合并回 master 主枝

示例:

$ git checkout master
Switched to branch 'master'
M       README.md
Your branch and 'origin/master' have diverged,
and have 3 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

xxx@xxx MINGW64 /d/test2 (master)
$ git merge test02
Already up to date.

删除分支

当分支使用完成后,可以删除分支

git branch -d test02 // 删除 test02 分支

示例:

$ git branch
* master
  test01
  test02

xxx@xxx MINGW64 /d/test2 (master)
$ git branch -d test02
Deleted branch test02 (was 82494f8).

xxx@xxx MINGW64 /d/test2 (master)
$ git branch
* master
  test01

临时操作

临时保存修改

有时,我们需要在同一个项目的不同分支上工作。当需要切换分支时,偏偏本地的工作还没有完成,此时,提交修改显得不严谨,但是不提交代码又无法切换分支。这时,你可以使用 git stash 将本地的修改内容作为草稿储藏起来。

前提是告诉库要跟踪,但是还没决定提交的情况下暂存

git stash 

示例:

$ git add br02_stash.txt
warning: LF will be replaced by CRLF in br02_stash.txt.
The file will have its original line endings in your working directory

xxx@xxx MINGW64 ~/Desktop/tst (br02)
$ git stash
Saved working directory and index state WIP on br02: cf1fe4b 都提交  //提示 保存工作,在上[cf1fe4b 都提交]之后的修改 

xxx@xxx MINGW64 ~/Desktop/tst (br02)
$ git status
On branch br02
Your branch is up to date with 'origin/br02'.

nothing to commit, working tree clean

示例2:

为让git 管理的文件,临时保存不起作用,只是在本地保存了个文件

xxx@xxx MINGW64 ~/Desktop/tst (br02)
$ vi br02_stsh02.txt

xxx@xxx MINGW64 ~/Desktop/tst (br02)
$ git stash
No local changes to save

xxx@xxx MINGW64 ~/Desktop/tst (br02)
$ git status
On branch br02
Your branch is up to date with 'origin/br02'.

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

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


查看临时保存清单
git stash list

示例:

$ git stash list
stash@{0}: WIP on br02: cf1fe4b 都提交

删除临时保存
git stash drop stash@{0}

示例:

xxx@xxx MINGW64 ~/Desktop/tst (br02)
$ git stash drop stash@{0}
Dropped stash@{0} (19f81c294d1b7041720e063ed1132bea70fa93f6)
删除所有临时保存
git stash clear
读取临时保存
git stash apply stash@{0}

远程库操作

本地库和远程库关联存在三种场景

  • 根据远程库创建本地库,加入团队,从远程库创建本地库参与项目
  • 本地库发布远程库,本地已有完整的库,需要大家相互协作发布远程库
  • 本地库关联远程库,本地已经有库,远程库也已经使用,即有冲突的库关联

1. 根据远程库创建本地库

  • 创建本地库文件夹,在文件夹中进行库初始化
mkdir harmony-learn
cd harmony-learn
  • 当前文件夹下初始化仓库
git init 
  • 添加远程仓库
git remote add origin https://gitee.com/w-wanjin/harmony-learn.git //远程库https链接或其他类型链接

  • 拉取远程项目到本地

    如果本地没有内容,拉取一个远程仓库本地编辑

git pull origin master # 拉取远程库 master 分支

2. 本地已有库创建远程库

  • 手工创建远程库

    最好不好初始化!!

  • 为本地库和远程库建立联系

git remote add origin https://gitee.com/w-wanjin/harmony-learn.git //远程库https链接或其他类型链接

如果远程库已经创建readme 文件,进行了初始化,需要先进性pull 然后才能将本地代码提交到远程仓,如果没有初始化,可以忽略,出现冲突,按照冲突解决方法进行处理

git pull origin master # 拉取远程库 master 分支
  • 提交本地仓库到远程库

第一次提交时要带上 -u 参数(不带好像也没设么影响),在将本地的 master 分支推送到远程新的 master 分支的同时,还会把本地的 master 分支和远程的 master 分支关联起来。

git push -u origin “master” // 第一次推送时使用
git push origin “master”    // 将本地 master 分支推送到 origin 远程分支

3.本地和远程均已初始化关联

一般不会有这种情况,出现的基本上是因为都是初始化了,要么重建一端再关联,要么强行合并两个独立的仓库历史

  • 为本地库和远程库建立联系
git remote add origin https://gitee.com/w-wanjin/harmony-learn.git //远程库https链接或其他类型链接

  • 先pull 远程库,合并仓库历史
git pull origin master --allow-unrelated-histories (该选项可以合并两个独立启动仓库的历史)
  • 提交本地仓库到远程库

第一次提交时要带上 -u 参数(不带好像也没设么影响),在将本地的 master 分支推送到远程新的 master 分支的同时,还会把本地的 master 分支和远程的 master 分支关联起来。

git push -u origin “master” // 第一次推送时使用
git push origin “master”    // 将本地 master 分支推送到 origin 远程分支

获取远程库内容

git fetch origin master    
	 git merge origin/master 合并修改
git pull origin master

git fetch 和 git pull 之间的区别:

  • git fetch 是仅仅获取远程仓库的更新内容,并不会自动做合并。
  • git pull 在获取远程仓库的内容后,会自动做合并,可以看成 git fetch 之后 git merge

示例1:

xxx@xxx MINGW64 /d/test02 (master)
$ cat README.md
remote repository tst!!

xxx@xxx MINGW64 /d/test02 (master)
$ git fetch origin master
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), 333 bytes | 22.00 KiB/s, done.
From https://gitee.com/w-wanjin/harmony-learn
 * branch            master     -> FETCH_HEAD
   7f30fba..9e27c5e  master     -> origin/master //表明更新已经获取到

xxx@xxx MINGW64 /d/test02 (master)
$ cat README.md
remote repository tst!!

$ git merge origin/master //使用合并命令执行合并
Updating 7f30fba..9e27c5e
Fast-forward
 .gitignore | 2 ++
 README.md  | 2 ++
 2 files changed, 4 insertions(+)
 create mode 100644 .gitignore

xxx@xxx MINGW64 /d/test02 (master)
$ cat README.md
remote repository tst!!

test update ! //内容更新进来了


查看远程库信息

git remote 

示例:

xxx@xxx MINGW64 /d/test02 (master)
$ git remote
origin

xxx@xxx MINGW64 /d/test02 (master)
$ git remote -v
origin  https://gitee.com/w-wanjin/harmony-learn.git (fetch)
origin  https://gitee.com/w-wanjin/harmony-learn.git (push)

切换远程库地址

远程库迁移等情况,需要切换远程库地址

git remote set-url origin url

远程分支操作

通过远程分支创建本地分支

git checkout -b origin/the_branch

建立本地分支和远程分支关联

在本地仓库中的分支和远程仓库中的分支是对应的。一般情况下,远程仓库中的分支名称和本地仓库中的分支名称是一致的。

有的时候,我们会需要指定本地分支与远程分支的关联。

如果 本地分支已经有文件,需要先 pull 然后在关联

git branch --set-upstream-to=远程连接名/远程分支的名字 本地分支的名字
git branch --set-upstream 本地分支名字 远程连接名/远程分支名字 //新版本可能已经不在支持,会有如下提示:
  $ git branch --set-upstream br01 origin/br01
  fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
  根据提示改写即可,
    
    git branch --track br01 origin/br01


示例:

$ git checkout br01
Switched to a new branch 'br01'
Branch 'br01' set up to track remote branch 'br01' from 'origin'.

xxx@xxx MINGW64 ~/Desktop/tst (br01)
$ git status
On branch br01
Your branch is up to date with 'origin/br01'.

nothing to commit, working tree clean

xxx@xxx MINGW64 ~/Desktop/tst (br01)
$ git branch --set-upstream-to=origin/br01 br01
Branch 'br01' set up to track remote branch 'br01' from 'origin'.

xxx@xxx MINGW64 ~/Desktop/tst (br01)
$ vi br01.txt

xxx@xxx MINGW64 ~/Desktop/tst (br01)
$ git pull origin br01
From https://gitee.com/w-wanjin/harmony-learn
 * branch            br01       -> FETCH_HEAD
Already up to date.

xxx@xxx MINGW64 ~/Desktop/tst (br01)
$ git add .
warning: LF will be replaced by CRLF in br01.txt.
The file will have its original line endings in your working directory

xxx@xxx MINGW64 ~/Desktop/tst (br01)
$ git commit -m "br01 commit"
[br01 d6cb709] br01 commit
 1 file changed, 1 insertion(+)
 create mode 100644 br01.txt
 
$ git push origin br01
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 311 bytes | 77.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To https://gitee.com/w-wanjin/harmony-learn.git
   9e27c5e..d6cb709  br01 -> br01


本地分支直接创建远程分支

git push --set-upstream origin br02

示例:

$ git checkout -b br02
Switched to a new branch 'br02'

xxx@xxx MINGW64 ~/Desktop/tst (br02)
$ vi br02.txt

xxx@xxx MINGW64 ~/Desktop/tst (br02)
$ git push --set-upstream origin br02
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
remote: Create a pull request for 'br02' on Gitee by visiting:
remote:     https://gitee.com/w-wanjin/harmony-learn/pull/new/w-wanjin:br02...w-wanjin:master
To https://gitee.com/w-wanjin/harmony-learn.git
 * [new branch]      br02 -> br02
Branch 'br02' set up to track remote branch 'br02' from 'origin'.

合并分支

和本地合并过程一样,合并完成后 push 到远程库即可

xxx@xxx MINGW64 ~/Desktop/tst (br01)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

xxx@xxx MINGW64 ~/Desktop/tst (master)
$ git merge br01
Updating 9e27c5e..d6cb709
Fast-forward
 br01.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 br01.txt

xxx@xxx MINGW64 ~/Desktop/tst (master)
$ git add .

xxx@xxx MINGW64 ~/Desktop/tst (master)
$ git commit -m "merge br01 to master"
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

xxx@xxx MINGW64 ~/Desktop/tst (master)
$ git push
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To https://gitee.com/w-wanjin/harmony-learn.git
   9e27c5e..d6cb709  master -> master

删除分支

删除本地分支
git branch -d br01

示例:

xxx@xxx MINGW64 ~/Desktop/tst (master)
$ git branch -d br01
Deleted branch br01 (was d6cb709).

xxx@xxx MINGW64 ~/Desktop/tst (master)
$ git branch
* master
删除远程分支
git push origin --delete br01

示例

$ git push origin --delete br01
remote: Powered by GITEE.COM [GNK-6.3]
To https://gitee.com/w-wanjin/harmony-learn.git
 - [deleted]         br01

恢复分支

根据 git log -d 获取要回恢复的提交,来恢复分支

git branch brrev commit_id // 通过最后一次提交恢复,恢复到一个新的分支内,也可以恢复到原分支

示例:

xxx@xxx MINGW64 ~/Desktop/tst (master)
$ git log -g
commit d6cb709608a3edf11a0e4e0f40a6c960b0ec1df3 (HEAD -> master, origin/master)
Reflog: HEAD@{0} (wangwj <wangwanjin@126.com>)
Reflog message: checkout: moving from d6cb709608a3edf11a0e4e0f40a6c960b0ec1df3 to master
Author: wangwj <wangwanjin@126.com>
Date:   Thu Jun 30 12:41:25 2022 +0800

    br01 commit
.......

xxx@xxx MINGW64 ~/Desktop/tst (master)
$ git branch brrev d6cb709608a3edf11a0e4e0f40a6c960b0ec1df

xxx@xxx MINGW64 ~/Desktop/tst (master)
$ git checkout brrev
Switched to branch 'brrev'

xxx@xxx MINGW64 ~/Desktop/tst (brrev)
$ cat br01.txt
test br01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值