一、git拉取指定的远程分支

1)直接拉取

1  git clone -b dev  git@github.com:Ants-double/CareerJava.git
2  git clone -b 远程分支名  仓库地址

2)本地已有相关代码仓库

1 //查看远程分支
2 git branch -r
3 //创建本地分支并关联
4 git checkout -b 本地分支 origin/远程分支
5 //或者
6 //已有本地分支创建关联
7 git branch --set-upstream-to origin/远程分支名  本地分支名
8 //拉取
9 git pull

 二、git add 之后报错warning: CRLF will be replaced by LF in XXX .

  由于window的行结束标识符是回车(CR)+换行(LF),而Linux/MAC系统的行结束标识符只有换行(LF)。在使用git进行代码提交时,git默认的会将文件中的回车和换行符转换为换行符,这样是为了避免同一套代码在不同的操作系统中运行时可能造成的代码错乱现象 。

  git中可以通过配置core.autocrlf属性从而控制这种转换的操作。

1)Windows

  如果你的开发环境为window,并且将来的生产环境也是window平台,那么可以直接将core.autocrlf设置为false,从而禁止将回车+换行自动转为换行符,这样仅在windows系统中是没有问题的。

1 git config --global core.autocrlf false

2)Linux/ Mac + Windows

  如果部分代码来源于windows平台,而将来的生产环境是Linux或Mac;或者有时候手抖输入了回车加换行作为了行结束标识符,那么此时可以将代码中的CRLF转为LF

1 git config --global core.autocrlf input

3)Windows + Linux/ Mac

  如果开发环境为windows,并且生产环境有可能为Linux/Mac,则可以将core.autocrlf设为true,从而强制全部进行转换

1 git config --global core.autocrlf true

 三、修改commit信息

  修改最近一次的commit提交信息

1 git commit --amend -m "新的修改提交信息"

四、删除某一次的commit

 1)第一种情况:还没有push,只是在本地commit

git reset --soft|--mixed|--hard <commit_id>

  这里的<commit_id>就是每次commit的SHA-1,可以在log里查看到。

  --mixed    会保留源码,只是将git commit和index 信息回退到了某个版本.
  --soft   保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
  --hard    源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)

2)第二种情况:commit push 代码已经更新到远程仓库

  对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本。线上、线下代码保持一致。你要用到下面的命令:

git revert <commit_id>

  revert 之后你的本地代码会回滚到指定的历史版本。

区别

  git reset是直接删除指定的commit,git revert是用一次新的commit来回滚之前的commit。

五、从master拉取代码并创建本地和远程的新分支

第一步:从远程拉取master代码到本地

git clone 远程地址

第二步:在本地建立新分支

git checkout -b 新的分支名称

第三步:把新建的分支push到远端

git push origin 新的分支名称

第四步:将本地分支和远程分支相关联

git branch --set-upstream-to=origin/新的分支名称

第五步:验证

git pull

 六、查看本地分支与远程分支的映射关系

  使用以下命令(注意是双v):

git branch -vv

   示例结果如下:

 七、修改远程分支名称

       使用如下命令行:

git push origin :"old_name" "new_name"

  实际上在这里执行了两个操作:

  • “old_name”分支已从远程删除
  • 在远程上创建了“ new_name”分支。

     再将本地推送到远程:

git push origin -u 【new_name

 八、删除本地分支和远程分支

  删除本地分支

  如果你还在一个分支上,那么 Git 是不允许你删除这个分支的。所以,请记得退出分支,命令为:

git checkout 其他分支

  删除一个分支的命令:

 git branch -d <branch>

  当一个分支被推送并合并到远程分支后,-d 才会本地删除该分支。如果一个分支还没有被推送或者合并,那么可以使用-D强制删除它。

  删除远程分支

   命令如下:

git push <remote> --delete <branch>
比如:
git push origin --delete fix/authentication

  也可以使用这行简短的命令来远程删除分支:

git push <remote> :<branch>
比如:
git push origin :fix/authentication

 九、git commit 提交取消eslint校验

git commit --no-verify -m "commit"

 十、git合并多个commit

 1、查看提交历史,git log。比如commit信息为:

commit 3ca6ec340edc66df13423f36f52919dfa3......

commit 1b4056686d1b494a5c86757f9eaed844......

commit 53f244ac8730d33b353bee3b24210b07......

commit 3a4226b4a0b6fa68783b07f1cee7b688.......

  历史记录是按照时间排序的,时间近的排在前面。

2、git rebase

  比如想要合并1-3条,有两个方法:

  1)从HEAD版本开始往过去数3个版本

git rebase -i HEAD~3

  2)指名要合并的版本之前的版本号

git rebase -i 3a4226b

  请注3a4226b这个版本是不参与合并的,可以把它当做一个坐标。

3、选取要合并的提交

  1)执行了rebase命令之后,会弹出一个窗口,头几行如下:

pick 3ca6ec3   '注释**********'

pick 1b40566   '注释*********'

pick 53f244a   '注释**********'

  输入i进入编辑状态。

  2)将pick改为squash或者s,之后按 esc 按钮,输入 :wq 保存并关闭文本编辑窗口即可。改完之后文本内容如下:

pick 3ca6ec3   '注释**********'

s 1b40566   '注释*********'

s 53f244a   '注释**********'

  3)git会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。修改以后要记得敲下面的命令:

git add .  

git rebase --continue 

  如果你想放弃这次压缩的话,执行以下命令:

git rebase --abort  

4、如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口:

# This is a combination of 4 commits.  
#The first commit’s message is:  
注释......
# The 2nd commit’s message is:  
注释......
# The 3rd commit’s message is:  
注释......
# Please enter the commit message for your changes. Lines starting # with ‘#’ will be ignored, and an empty message aborts the commit.

5、输入 :wq 保存并退出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。