git bash ll无法使用 ll命令无法使用 ll命令不存在

git bash中有些命令没法使用;如ll la 扽自定义的命令;如果是在linux的话可以用alias命令自己定义;放到git bash中也可以:

  1. 步骤1 进入git 安装目录,找到etc目录
  2. 步骤2 找到bash.bashrc 文件
  3. 添加自定义命令 ,即可;这样的话 git bash 、 idea中都能用这些命令了;如果相加别的也行;
    1. alias ll='ls -l'
    2. alias la='ls -A'
    3. alias vi='vim'

1 廖雪峰讲解git

1.1 常用命令

  1. git add
  2. git commit -m “”
  3. git log —pretty=oneline # --pretty=oneline这是格式化显示,独占一行显示

2 常用命令

  1. 提交、 更新 ```shell git add —all git commit -am ““ git push origin master

如果你正在与多个人进行协作,你会发现有时 GitHub 的仓库上已经更新了,但你的本地却没有做相应的更改。如果是这样,你可以使用 git pull origin 命令从远程分支中拉取的更改。 git pull origin


2. 下载、初始化等
```shell
git clone <url>  //下载的代码

git init
git add --all
git commit -am "<message>"
git push origin master
  1. 分支操作

    git branch                    查看所有分支名
    git branch <name>        创建分支
    git checkout <name>    切换分支
    git checkout -b <name>    创建分支并立刻切换过去
    
  2. 分支合并 ```shell 如果你对一个分支进行了一系列的更改,假如说此分支名为 develop,如果想要将该分支合并回主分支(master)上,则使用 git merge 命令。 1 你需要先检出(checkout)主分支, 2 然后运行 git merge develop 将 develop 合并到主分支中。

git merge


5. 高级操作
```shell
git log  你将使用它来查看提交的历史记录
  1. 剩余

日常开发分支操作
1 根据需求号创建开发分支 BUG2-001,
2 编写代码
3 提测:
1 切换到beta分支,更新beta代码
2 点击实际开发分支(BUG2-001),merge into current
即:将BUG2-001分支代码合并到beta中;
3 push beta到远程
4 测试发布(部署即可)
4 上线
1 切换到master分支;并更新master
2 切换回开发分支BUG2-001
3 点击master分支,merge into current
即:将master代码合并到BUG2-001中
4 push BUG2-001 到远程
5 登录仓库网页,创建pr
6 如果不需要重拉master进行回归的话,现在就能提交上线审批了;
如果需要重拉master进行回归的话,回到idea
1 切换到beta,更新beta分支
2 回到网页,点击分支
3 删除beta分支—————————注意从这一刻开始,通知别的人员暂时不要往beta分支push代码,直到第7步结束;
4 创建分支(master分支拉取)
5 测试发布,并回归测试
6 再次在网页删除beta分支;
7 回到ieda,将beta分支push到远程仓库;
8 重新部署,可以测试其他代码了;
7 上线审批之前要给项目打tag;
登录仓库网页,打标签即可;

撤销======================================================================================================================
1 git add 之前
未添加到暂存区
如果有个文件修改了,但是没有执行 git add命令;这时候想撤销
1 git status —能查看到没有git add的文件的全路径

    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:   src/main/java/com/yjyz/erp/trans/api/econtract/web/CodeNoController.java

2 git checkout  -- src/main/java/com/yjyz/erp/trans/api/econtract/web/CodeNoController.java  --撤销掉没有git add 的文件

 一次撤销多个文件的话,可以给git checkout -- .

2 git add 之后
已添加到暂存区的(git add 之后的)
1 git status

    Changes to be committed:  已添加到暂存区,但是没有提交到本地仓库的
    (use "git restore --staged <file>..." to unstage)
        modified:   src/main/java/com/yjyz/erp/trans/api/econtract/web/CodeNoController.java

2  git reset HEAD src/main/java/com/yjyz/erp/trans/api/econtract/web/CodeNoController.java  这里是将代码从暂存区撤回了,但是没有改变其已经被修改的现实;需要执行一遍 git checkout -- filename 之后才能将变更代码也撤销

    git reset HEAD  可以一次将暂存区的所有文件撤回;

3 git commit 之后

切换分支======================================================================================================================
1git stash -m “切换分支,缓存本地变更注释”
【注意:这里 git add 】
切换分支
切换回来之后
git stash list //查看缓存情况
2git stash apply 将缓存中的内容分知道本地工作区

命令
    git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
    实际应用中推荐给每个stash加一个message,用于记录版本,使用git stash save取代git stash命令。

    恢复缓存git stash pop或者git stash apply
    git stash pop命令恢复之前缓存的工作目录。这个指令将缓存堆栈中的第一个stash删除,并将对应修改应用到当前的工作目录下。

    你也可以使用

!!! git stash apply
命令,将缓存堆栈中的stash多次应用到工作目录中,但并不删除stash拷贝

    查看现有stash
    可以使用git stash list命令
    移除stash
    可以使用git stash drop命令,后面可以跟着stash名字,或者使用git stash clear命令,删除所有缓存的stash。

    从stash创建分支
    如果你储藏了一些工作,暂时不去理会,然后继续在你储藏工作的分支上工作,你在重新应用工作时可能会碰到一些问题。如果尝试应用的变更是针对一个你那之后修改过的文件,你会碰到一个归并冲突并且必须去化解它。如果你想用更方便的方法来重新检验你储藏的变更,你可以运行 git stash branch,这会创建一个新的分支,检出你储藏工作时的所处的提交,重新应用你的工作,如果成功,将会丢弃储藏。

    暂存未跟踪或忽略的文件
    默认情况下,git stash会缓存下列文件:
    添加到暂存区的修改(staged changes)
    Git跟踪的但并未添加到暂存区的修改(unstaged changes)
    但不会缓存一下文件:

    在工作目录中新的文件(untracked files)
    被忽略的文件(ignored files)

    git stash命令提供了参数用于缓存上面两种类型的文件。使用
    -u或者--include-untracked可以stash untracked文件。使用
    -a或者--all命令可以stash当前目录下的所有修改。

切换分支======================================================================================================================

1 下载代码
git clone 链接
2 更新
git pull 窗口操作
3 根据master,创建新分支
4 本地变更
5 add commit,提交本地变更
6 pull 拉去最新远程代码;
此时可能有冲突,解决
7 push,推送到远程;

clone — pull — new branch — change code —add — commit — pull — merge — push
上述都是同分支的步骤

##########567三步可以调整成如下,但是不推荐
5 add commit
6 push;此时可能会有冲突,解决
7 解决冲突后,再次push
567三步变种2
4 本地变更
5 pull,这里如果有冲突,这里更新会提示失败,本地代码有别覆盖的风险,所以,强推第一种方式;
下面做异分支的操作
dev分支:远程编辑一个文件并提交;
master分支: pull ,选择从 origin/dev 进行pull;
此时会有冲突,merge解决就行(也有可能不冲突,没编辑同一个文件的话,就没事)
push 推送到master;

===================================================================================================
git commit —amend 撤销上一次提交 并讲暂存区文件重新提交
git checkout — 拉取暂存区文件 并将其替换成工作区文件
用暂存区的结果覆盖本地工作区的内容
git reset HEAD — 拉取最近一次提交到版本库的文件到暂存区 改操作不影响工作区
用本地仓库上结果替换暂存区的内容
git rm -f filename 从git中删除某个文件(右键删除git是检测不到变化的)
git rm —cache filename 把文件从暂存区删除,但是保留本地工作区

Git基本操作 *9
1.git init
(1) 使用当前目录做为git仓库:
git init
该命令执行完毕后会在当前目录生成一个.git目录。
(2) 使用指定目录做为git仓库:
git init newrepo
该命令执行完毕后会在newrepo下生成.git目录。

2.将文件纳入版本控制:
    $ git add *.c    ##添加到暂存区/缓存区/索引/stage/index##
    $ git add README
    $ git commit -m '初始化项目版本'  ##提交到本地仓库##
    以上命令将当前目录下以 .c 结尾及 README 文件提交到仓库中。

3.git clone
    (1)比如,要克隆代码仓库 Grit,可以用下面的命令:
        $ git clone git://github.com/schacon/grit.git
        执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。
    (2)如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
        $ git clone git://github.com/schacon/grit.git mygrit
        Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

4.git status
    git status 以查看在你上次提交之后是否有修改。
    使用 -s 参数,获得简短的结果输出。如果没加该参数会详细输出内容。

5.git diff

    执行git diff来查看执行 git status 的结果的详细信息。

    git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。

    尚未缓存的改动:git diff

    查看已缓存的改动: git diff --cached

    查看已缓存的与未缓存的所有改动:git diff HEAD

    显示摘要而非整个 diff:git diff --stat以查看在你上次提交之后是否有修改。

6.git commit
    使用 git add 命令将想要快照的内容写入缓存区(暂存区,索引,stage,index), 而执行 git commit 将缓存区内容添加到仓库中(本地仓库)。

    Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。
        $ git config --global user.name 'runoob'
        $ git config --global user.email test@runoob.com

    接下来我们写入缓存,并提交对 hello.php 的所有改动。在首个例子中,我们使用 -m 选项以在命令行中提供提交注释。
        $ git add hello.php
        $ git commit -m '第一次版本提交'
    如果你没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。
    如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。如下:
    git commit -am '修改 hello.php 文件'

! 7.git reset HEAD [ fileName]
git reset HEAD — 拉取最近一次提交到版本库的文件到暂存区 该操作不影响工作区,
如果想要从工作区拉取到工作区的话:git checkout — 拉取暂存区文件 并将其替换成工作区文件

    git reset HEAD 命令用于取消已缓存的内容。
    $ git add .
    $ git reset HEAD hello.php
    现在你执行 git commit,就不会提交hello.php了。

【案例1、2】
1工作区,修改a.log,
git add a.log ##提交到暂存区
此时想要撤销git add操作、或者说我们此时又对a.log做出了调整,但是我们此时操作都是多余的,想要暂存区的文件内容的话;
git checkout — filename
2工作区,修改a.log,
git add a.log ##提交到暂存区
git commit -m “提交到本地仓库”
此时想要撤销 git commit 操作;或者说我们此时又修改了a.log文件,但是我们感觉修改都是多余的,想要上次commit操作后的结果;
git reset HEAD fileName (不带文件名就是全部获取),将特定文件从本地仓库取下来到暂存区,不影响工作区;(此时再次执行git commit 就不包含特定的filename了,应为此时暂存区的filename不是add后的结果,而是从仓库中取下来的上次commit的结果),
进而想要将这个文件取到本地工作区的话,即放弃本地工作区的修改,用缓存区的文件覆盖回来;同上一个案例了
git checkout — filename
总结:
git reset HEAD 将用仓库中的内容替换暂存区的内容; 即:git add 后但是没有来的及 gitcommit的内容将自动删除;
git checkout <— fileName> 将用暂存区的内容覆盖本地工作区;即本地变更,但是没有来的及执行git add 的变更,将要被还原

    上述两个命令连起来执行的话,就是用上次commit的结果覆盖当前工作区+暂存区的内容;

    如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可
    git rm --cached <file>

! 8.git rm

    如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。
    即:文件右键直接删除,git时检测不到变动的;

 !!    要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以用以下命令完成此项工作
    git rm <file>

 !!    如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
    git rm -f <file>

 !!    如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可
    git rm --cached <file>

    可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:
    git rm –r *

    进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录。

9.git mv
    git mv 命令用于移动或重命名一个文件、目录、软连接。
    然后对其重名:
    $ git mv README  README.md

===================================================================================================
Git分支管理
1.基本命令:

    创建分支命令:
        git branch (branchname)
    切换分支命令:
        git checkout (branchname)
        当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
    合并分支命令:
        git merge
        你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支。

2.列出分支:
    列出分支基本命令:
        git branch
        没有参数时,git branch 会列出你在本地的分支。
        当你执行 git init 的时候,默认情况下 Git 就会为你创建 master 分支。

    用 git checkout (branch) 切换到我们要修改的分支。
    也可以使用 git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作。

3.删除分支:
    删除分支命令:
        git branch -d (branchname)

4.分支合并:
    一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。 你可以使用以下命令将任何分支合并到【当前】分支中去:
    git merge
        例如:
            git merge newtest
            将 newtest 分支合并到主分支(当前分支)去,test.txt 文件被删除。

            合并完后就可以删除分支(也可以不删):
            $ git branch -d newtest
            删除后, 就只剩下 master 分支了。

5.合并冲突: 这个用窗口是最好的!
    当分支中的文件发生了修改,并且主分支中同一个文件也发生了修改,此时将分支合并到主分支,就会发生冲突。
    此时,需要手动修改这个文件:
        $ vim runoob.php
        $ cat runoob.php
            <?php
            echo 1;
            echo 'runoob';
            ?>    
        之后,可以用 git add 要告诉 Git 文件冲突已经解决
        $ git add runoob.php

===================================================================================================
Git查看提交历史
在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看。
可以用 —oneline 选项来查看历史记录的简洁的版本。
$ git log —oneline

还可以用 --graph 选项,查看历史中什么时候出现了分支、合并。

也可以用 --reverse 参数来逆向显示所有日志。
$ git log --reverse --oneline

如果只想查找指定用户的提交日志可以使用命令:git log --author。
$ git log --author=Linus --oneline -5

如果你要指定日期,可以执行几个选项:--since 和 --before,但是你也可以用 --until 和 --after。
$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges

===================================================================================================
Git标签
如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。

比如说,我们想为我们的 runoob 项目发布一个"1.0"版本。 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)"v1.0"的标签。
-a 选项意为"创建一个带注解的标签"。
$ git tag -a v1.0
当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。

现在,当我们执行 git log --decorate 时,就可以看到我们的标签了。
如果我们忘了给某个提交打标签,又将它发布了,我们可以给它追加标签。
例如,假设我们发布了提交 85fc7e7(上面实例最后一行),但是那时候忘了给它打标签。 我们现在也可以:
$ git tag -a v0.9 85fc7e7

如果我们要查看所有标签可以使用以下命令:
$ git tag

指定标签信息命令:
git tag -a <tagname> -m "runoob.com标签"

PGP签名标签命令:
git tag -s <tagname> -m "runoob.com标签"

===================================================================================================
Git 远程仓库(Github)
Git 并不像 SVN 那样有个中心服务器。
目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。你就需要将数据放到一台其他开发人员能够连接的服务器上。

1.添加远程库
    要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下:
    git remote add [shortname] [url]


    现在,我们根据 GitHub 的提示,在本地的仓库下运行命令:
        $ mkdir runoob-git-test                     # 创建测试目录
        $ cd runoob-git-test/                       # 进入测试目录
        $ echo "# 菜鸟教程 Git 测试" >> README.md     # 创建 README.md 文件并写入内容
        $ ls                                        # 查看目录下的文件
            README
        $ git init                                  # 初始化
        $ git add README.md                         # 添加文件
        $ git commit -m "添加 README.md 文件"        # 提交并备注信息
            [master (root-commit) 0205aab] 添加 README.md 文件
             1 file changed, 1 insertion(+)
             create mode 100644 README.md
        # 提交到 Github
        $ git remote add origin git@github.com:tianqixin/runoob-git-test.git   最后一个参数就是远程建立的仓库地址
        $ git push -u origin master     

2.查看当前的远程库
    要查看当前配置有哪些远程仓库,可以用命令:
    git remote
    执行时加上 -v 参数,你还可以看到每个别名的实际链接地址。
    $ git remote -v

3.提取远程仓库
    Git 有两个命令用来提取远程仓库的更新。
    (1)从远程仓库下载新分支与数据:
        git fetch
        该命令执行完后需要执行git merge 远程合并到你所在的分支。
    (2)从远端仓库提取数据并尝试合并到当前分支:
        git merge
        该命令就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支。
    例:
        $ git fetch origin
        $ git merge origin/master

4.推送到远程仓库
    推送你的新分支与数据到某个远端仓库命令:
    git push [alias] [branch]
    以上命令将你的当前分支推送成为 [alias] 远程仓库上的 [branch] 分支,实例如下。
        $ touch runoob-test.txt      # 添加文件
        $ git add runoob-test.txt
        $ git commit -m "添加到远程"
            master 69e702d] 添加到远程
             1 file changed, 0 insertions(+), 0 deletions(-)
             create mode 100644 runoob-test.txt
        $ git push origin master    # 推送到 Github

5.删除远程仓库
    删除远程仓库你可以使用命令:
    git remote rm [别名]
    实例
        # 添加仓库 origin2
        $ git remote add origin2 git@github.com:tianqixin/runoob-git-test.git
        # 删除仓库 origin2
        $ git remote rm origin2
        $ git remote -v
            origin    git@github.com:tianqixin/runoob-git-test.git (fetch)
            origin    git@github.com:tianqixin/runoob-git-test.git (push)

===================================================================================================
命令行中github的用法
1.使用命令

    ssh-keygen -t rsa -C "youremail@example.com"

    参数为github邮箱;输入文件保存地址,输入github密码;之后生成pub文件

2.回到 github 上,进入 Account => Settings(账户配置),选择 SSH and GPG keys,然后点击 New SSH key 按钮,title 设置标题,可以随便填,粘贴在你电脑上生成的 pub文件的内容。

3.输入以下命令测试:ssh -T git@github.com;如果失败,则搜索.ssh文件夹(C:\Users\Admin\.ssh),将第一步生成的两个文件粘贴到此处,并重命名为id_rsa与id_rsa.pub

4.在github中点击New respository,之后在Repository name 填入 runoob-git-test(远程仓库名) ,其他保持默认设置,点击"Create repository"按钮,就成功地创建了一个新的Git仓库。

5.按照提示信息创建一个测试文件并上传到git仓库:

    echo "# 菜鸟教程 Git 测试" >> README.md

    git init

    git add README.md

    git commit -m "123"

    git remote add origin https://github.com/BlackHoleSeventh/gitest.git

    git push -u origin master

    之后需要输入用户名与密码,之后就上传成功了。

6.将一个已有的项目上传到github:

    (1) cd到已有项目的目录中,使用git init;命令初始化

    (2) 使用git add * ;将所有项目添加到git

    (3) 使用git commit -m “任意信息”将添加后的文件提交

    (4) 使用git remote add myStore https://github.com/UserName/storeName.git添加一个远程仓库地址;其中myStore是自己起的仓库名,对应后面的地址;使用git remote -v即可查看自己有哪些仓库地址。

    (5) 使用git push -u myStore master将代码推送到远程仓库的master分支中,其中myStore是自己起的仓库名,master是分支名。(可以任意起,如果远程仓库没有这个分支,则会创建一个)

7.将一个github项目更新到本地:

    (1) cd到目标目录中,使用git fetch myStore命令拉到本地(没有参数,从远程master拉到了本地master目录中);其中myStore是自己起的仓库名(对应url用)。

    (2) 使用git merge myStore/master命令将内容同步。其中myStore是自己起的仓库名,master是同步到本地master分支。

8.将一个github项目下载到本地空文件夹:

(1) cd到目标空文件夹中,使用git clone https://github.com/UserName/storeName.git name命令,其中url为github仓库的网址,name为自己起的文件夹名,也可以不加,则会使用storeName为文件夹名。clone操作是一个从无到有的克隆操作,不需要git init初始化。

(2) 也可以使用git pull,相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)。

举例:将远程主机origin的master分支拉取过来,与本地的branchtest分支合并。

$ git pull origin master:branchtest

(3) 以上的git pull操作也可以用git fetch来表示:

$ git fetch origin master:brantest

$ git merge brantest

将远程master分支下载到本地brantest分支;

将brantest分支合并入主分支master。

使用fetch可以先查看代码不同,再决定是否合并。

git fetch更新本地仓库的两种用法:

# 方法一

$ git fetch origin master                #从远程的origin仓库的master分支下载代码到本地的origin master

$ git log -p master.. origin/master      #比较本地的仓库和远程参考的区别

$ git merge origin/master                #把远程下载下来的代码合并到本地仓库,远程的和本地的合并

# 方法二

$ git fetch origin master:temp           #从远程的origin仓库的master分支下载到本地并新建一个分支temp

$ git diff temp                          #比较master分支和temp分支的不同

$ git merge temp                         #合并temp分支到master分支

$ git branch -d temp                     #删除temp

9.Git回滚:

(1) 使用git log --pretty=oneline查看历史版本

(2) 使用git reset --hard 9e4a2468e8ecb8d763b7e53549bd982c3370d00d回退到指定版本

10.git上传大文件:

(1) 在项目目录下,使用git lfs install命令

(2) 使用命令:git lfs track “* .gif” --这里的 “ *.gif "就是你要上传的大文件的路径

(3) 使用命令:git add .gitattributes

(4) 先提交:git commit -m "123";

(5) 先上传:git push -u orgin master

(6) 之后再上传大文件。注意,一定要先上传.gitattributes文件才可以!

11.git撤销add命令:

git reset HEAD //可以全部恢复未提交状态

git reset --hard HEAD //把全部更改的文件都恢复(小心使用,不然辛辛苦苦写的全没了)



Idea中git的用法
1.cd到指定目录,使用命令

git init

git add *

git commit -m “msg”

git remote add orgin https://github.com/UserName/UserStore.git

git push -u orgin master

将代码同步到远程仓库

2.或者使用

git clone git://github.com/UserName/UserStore.git

将代码下载到本地

3.使用idea打开项目,会出现提示是否要用git管理项目,选“yes”

4.或者,上方vcs菜单中有checkout from version control子菜单,其中可以设置git地址。

5.在右下角“Git:master”处,点击选择“New Branch”可以添加新分支

6.在右下角选择“check out”选择目标分支

7.上方有update按钮与commit按钮,commit按钮可以选择commit and push;之后会要求输入用户名密码,即可push到远程仓库。

8.下方“version control”中可以查看正在修改的文件,可以选择commit或revert。

9.上方vcs菜单中有git子菜单,可以选择revert、clone、fetch、pull、push等操作。

10.分支代码更新后,可以回到主分支,选择另一个分支的merge,即可将分支代码同步到主分支;主分支代码更新后,也可以先进入从分支,选择主分支的merge,即可将代码同步到当前分支。

11.当一个分支的代码push后,可以进入其它分支merge此分支的代码,如果此时merge其余分支的代码,则不会有反应,因为git只保存一个提交对象。

12.当两个以上从分支push后,主分支想merge其中一个分支,则会发生冲突,需要选择接受哪一个分支。



TortoiseGit的用法
1.安装

2.安装好后,右键可以发现TortoiseGit的相关菜单

3.选择git clone从仓库下载代码,或者选择git create repository here...创建.git文件夹

4.可以使用commit、push、revert操作代码

5.可以使用create branch创建分支,使用Switch/Checkout切换分支。

6.先进入目标分支,然后选择merge,再选择另一个分支,就可以将代码合并到目标分支上。

7.删除分支:点击“Switch/Checkout”打开对话框,点击Switch to区域中Branch条目后面的更多按钮,打开分支列表对话框,右键点击要删除的分支,选择delete branch进行删除。





Git冲突与解决方法
1、git冲突的场景

情景一:多个分支代码合并到一个分支时;

情景二:多个分支向同一个远端分支推送代码时;

实际上,push操作即是将本地代码merge到远端库分支上。



关于push和pull其实就分别是用本地分支合并到远程分支 和 将远程分支合并到本地分支



所以这两个过程中也可能存在冲突。



git的合并中产生冲突的具体情况:

(1)两个分支中修改了同一个文件(不管什么地方)

(2)两个分支中修改了同一个文件的名称

两个分支中分别修改了不同文件中的部分,不会产生冲突,可以直接将两部分合并。



2、冲突解决方法

情景一:在当前分支上,直接修改冲突代码--->add--->commit。

情景二:在本地当前分支上,修改冲突代码--->add--->commit--->push

 注:借用vim或者IDE或者直接找到冲突文件,修改。



个人总结:Git常用命令
--------------------------------------------

//git上传本地项目以及上传大文件



git init

git remote add orgin https://github.com/UserName/UserStore.git



git lfs install

git lfs track "*.*"

git add .gitattributes

git commit -m "LFS上传大文件"

git push -u orgin master



git add *

git commit -m "上传已存在项目"

git push -u orgin master



--------------------------------------------

//git从仓库下载项目(还有clone与pull,不过只用fetch也可以)



git init

git remote add orgin https://github.com/UserName/UserStore.git

git fetch orgin

git merge orgin/master



--------------------------------------------

//git查看提交历史



git log --pretty=oneline



--------------------------------------------

//git revert,生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留



git revert HEAD #撤销倒数第一次提交

git revert HEAD^ #撤销倒数第二次提交

git revert HEAD~2 #撤销倒数第三次提交

git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61



--------------------------------------------

//git reset,回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区,用法与revert类似



//git取消add操作

git reset HEAD



//只回退某个指定文件到指定版本

git reset a4e215234aa4927c85693dca7b68e9976948a35e MainActivity.java