git进阶

Posted 甲乙丙丁少

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git进阶相关的知识,希望对你有一定的参考价值。

查看远程分支
如下即可,r是remote的简写
git branch -r
或者如下,a是all的简写,可以列出当前本地分支和远程分支---即所有分支
git branch -a  

 

 
 
删除远程分支
 
 
删除本地分支
 
 
创建本地仓库分支并推送到远程仓库(直接git push也行)
 
 
注意
新建本地分支后将本地分支推送到远程库, 使用git pull 或者 git push 的时候报错
是因为本地分支和远程分支没有建立联系  
git branch -vv  可以查看本地分支和远程分支的关联关系) .
根据命令行提示只需要执行以下命令即可
git branch --set-upstream-to=origin/远程分支的名字 本地分支的名字
 
 
创建新分支方式2
会在本地创建该分支,并主动切到此分支上
$ git checkout -b 1.0

推送到远程

git push

如果出现如下错误

fatal: The current branch 1.0 has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin 1.0

 


git本地新建一个分支后,必须要做远程分支关联。如果没有关联, git 会提示你显示的添加关联。在本地分支下操作: git pull, git push都会提示你此信息。

解决办法其实就是确定这关联:
如上错误代码的提示:git push --set-upstream origin 1.0
其中的origin是你在clone远程代码时,git为你创建的指向这个远程代码库的标签,它指向远程的repository。(查看远程repository信息,可以用命令git remote -v进行查看,看看当前的代码是远程的哪个repository。)
1.0是你远程的branch

名词讲解

origin:表示远程仓库,是你在clone的时候git自动设置远程仓库别名,可以修改这个标识
repository:代码库。可以存放在你的电脑里,同时你也可以把代码库托管到Github的服务器上。
branch:分支
upstream:如果A库中的分支x被push到B库中的分支y,则y就是x的upstream,而x就是y的downstream。
 set-upstream:本地某分支跟踪远程分支

 
忽略某个文件或文件夹,不提交
比如我有个,myzone_node,里边有个.idea的文件夹,该文件夹是用于构建IDE为webstom的项目的,毫无用处,那么我就不提交它
 
touch .gitignore ///创建.gitignore文件,该文件内声明不需要提交的列表
 

vim .gitignore


//进入编辑.gitignore 然后再按下ctrl+i,i代表insert的意思,就可以编辑啦   

 

退出编辑模式的命令是:
先按esc退出编辑模式
然后输入 :wq 冒号也要输入进去,然后回车退出编辑。
这样你就生成了一个.gitignore文件,这个文件放在和.git这个隐藏文件夹同级的位置。

 

下面是一些gitignore文件的写法分享:
(1)所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
(2)可以使用标准的 glob 模式匹配。
(3)匹配模式最后跟反斜杠(/)说明要忽略的是目录。
(4)要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
# 此为注释 – 将被 Git 忽略
*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

 

下面有些人会遇到加上这个文件,发现忽略的文件还是有上传
原因:
在git库中已存在了这个文件,之前push提交过该文件。
.gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了
解决:
需要在git库中删除该文件,并更新。
然后再次git status查看状态,文件不再显示状态。

 

 

如果你的文件已经提交,而此时你才发现忘了添加.gitignore文件,不用担心,有办法,只要按照下面的步骤一一来做就可以

按顺序依次执行如下命令:

git rm -r --cache .
git add .
git commit -m ".gitignore now work"

最后提交到远程仓库,会发现.gitignore文件起作用了。

 

 

 

---------------以下为整合版--------

1. 创建分支

方法一

比如说我现在本地和远程就两个分支,master和test

 

 

 

 

两步走:

a- 创建本地分支:$ git branch hello

 

 

 

b- 推送同步到远程库:$ git push origin hello

 

 

 

来看看效果吧

 

 

 

 

方法二

直接在github或者gitosc上创建分支,不要问我,百度

然后,再更新到本地,本地就有了

注意的是,更新后,如果不切换哪个分支,你查看本地分支是看不到的

 

 

2.然后,在本地仓库执行git命令

查看本地分支:$ git branch

(绿色的代表当前正在使用的分支)

 

 

 

 

3.查看远程分支:$ git branch –a

 

 

 

 

4.切换分支(本地远程是会一起切换的,所以不用考虑是本地还是远程)

: $ git checkout master

 

 

 

 

5.合并分支:$ git merge test

比如我当前的正在使用的分支是master,这么做就会与test分支合并

注意冲突

 

 

 

6.仅删除本地分支:$ git branch -d hello

注意,如果该分支没有与主分支合并的话,执行该删除会报错

The branch \'test\' is not fully merged

你需要执行强制删除指令:$ git branch -D hello

 

 

 

 

7.仅删除远程分支:$ git push origin :test

原理是把一个空分支push到server上,相当于删除该分支。

 

8.查看本地库下的文件:ls

 

 

 

 

9.查看远程库下目录

 

以上是关于git进阶的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

如何管理在每个 git 版本中添加私有代码片段?

使用 Git 来管理 Xcode 中的代码片段

markdown Git代码片段