更新 2021年3月19日12:40:54
【1】查看本地分支
git branch 和git branch -vv 都是查看本地分支的
【2】清理分支,删除本地多余的分支
git remote update origin --prune
【3】查看所有分支,包括远端
git branch -a //注意区别 git branch -vv 和git branch
【4】切换分支
git checkout fenzhi_name
【5】创建本地分支,并跟踪远端分支 //注意本地分支名字,最好和远端同名,且是从origin开始的哈
git branch -b feature/frontend remotes/origin/feature/frontend
===========================================================================
刚开始用,里面可能有错误哈,后发现了在改正;
中间贴了很多大佬图片,文字。大部分给出链接了。。。。。
【1】git 是个软件,GitHub是一个平台,借助git 管理GitHub。
【2】repository 创库
【3】star 收藏
【4】fork 复制
【5】在本地创建一个仓库,并和“远程仓库(这个称呼不知对否)”交互、
- 本地创建文件夹 mkdir test
- cd test
- git init
- 随便搞一些文件在里面 vim xxxx.txt
- git add xxxx.txt // 将文件从工作区提交到暂存区 ,git status 查看下
- git mommit -m "加几句描述,你干了啥" // 从暂存区到本地仓库,git status 查看下状态
- git push //从本地仓库添加到远程仓库
【6】
(1) git clone是把整个git项目拷贝下来
(2) git pull <远程主机名> <远程分支名>:<本地分支名>
命令用于取回远程主机某个分支的更新与本地的指定分支合并
(3)git push
命令用于将本地分支的更新,推送到远程主机。它的格式与git pull
命令相仿
git push <远程主机名> <本地分支名>:<远程分支名>
【7】
(1)工作区:git init 初始化一个仓库,生成一个.git文件
(2)暂存区:git add hah.c
(3)版本库:git commit -m "家说明" //将当前目录下几个文件纳入版本控制
(4)git config --list //git push <远程主机名> <本地分支名>:<远程分支名>
(5)git config -e //编辑配置文件
(6)工作区 远程仓库他们。。关系(图片来自菜鸟教程)
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:或本地仓库
- remote repository:远程仓库
(7)提交与修改 //这部分时菜鸟教程摘出来的,墙裂推荐这个网站。。。
git add | 添加文件到仓库 |
git status | 查看仓库当前的状态,显示有变更的文件。 |
git diff | 比较文件的不同,即暂存区和工作区的差异。 |
git commit | 提交暂存区到本地仓库。 |
git reset | 回退版本。 |
git reset | 回退版本。 |
git rm | 删除工作区文件。 |
git mv | 删除工作区文件。 |
(8)提交与修改
git remote | 远程仓库操作 |
git fetch | 从远程获取代码库 |
git pull | 下载远程代码并合并 |
git push | 上传远程代码并合并 |
【8】分支管理//摘自https://www.cnblogs.com/xuecanmeng/p/7383222.html%20%E7%82%B9%E7%82%B9%E7%82%B9
(1)每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。
(2)新建分支
(3)新建分支并切换到该分支命令
创建dev
分支,然后切换到dev
分支:$ git checkout -b dev //-b
参数表示创建并切换,相当于以下两条命令:
(4)用git branch
命令查看当前分支:git branch
(5)切换分支 git add readme.txt
(6)合并分支 git merge dev
(7)删除分支 git branch -d dev
(8)取远程分支并分化一个新分支: $ git checkout -b mybranch origin/mybranch
小结
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
【9】merge冲突 git merge test //当前为master,mger 合并就是将指定的分支合并到当前分支
(1)修改其中一个文件内容和另一个相同就阔以
(2)
当我们倾向于使用test分支的代码时,可以使用以下命令:
git checkout --theirs src/main/resources/config_dev.properties
当我们倾向于使用当前分支的代码时,可以使用以下命令:
git checkout --ours src/main/resources/config_dev.properties
(3)git merge --abort //放弃本次merge
【10】为了避免冲突
git pull = git fetch + git merge FETCH_HEAD
git pull --rebase = git fetch + git rebase FETCH_HEAD
(2)两种合并方式的区别如下如
【11】总结
(1)本地有更新时候
git status--->git add xxx.txt ------> git commit -m '提交描述'--->
git stash-----> git pull --rebase
(2)stash 的作为如下
stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。
总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。
(3)git stash //下面是贴的其他博客,不好意思链接找不到了。。。
能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
(4)git stash list
查看当前stash中的内容
(5) git stash pop
将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。
注:该命令将堆栈中最近保存的内容删除(栈是先进后出)
(6)git stash apply
将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
(7)
6 git stash drop + 名称
从堆栈中移除某个指定的stash
7 git stash clear
清除堆栈中的所有 内容
8 git stash show
查看堆栈中最新保存的stash和当前目录的差异。
【12】rebase
之前提到,rebase会将当前分支的新提交拆下来,保存成patch,然后合并进其他分支新的commit,最后将patch接进当前分支。这是rebase对多条分支的操作。对于单条分支,rebase还能够合并多个commit单号,将多个提交合并成一个提交。
总结下:rebase ,必须再自己分支上进行,不能再master上进行,因为1.在maser上进行---会改变提交的时间(这么说可能不准确),2.回到主分支进行merge时候就会冲突。。。。。在自己分支上进行rebase就不会产生冲突。。。。。
//这里不太好理解,不太确定还,但是遵守黄金法则肯定没错。。。。。。
【13】总结下。。。。 就这么干就行。。。。
(1)git branch //查看分支
(2)git branch <分支名字> //创建分支
-
git checkout <name> //切换分支
-
git add .... //添加文件到仓库
(4)git commit '描述' //勾选要提交的文件--提交到本都库, 【pycharm 左侧栏有这个选项】
(5)git pull -r //在自己分支上进行。 -r 就时rebase 把主分支rebase到本地 【命令。。。。】
(6)git push origin master //提交到主分支,这样就不会冲突了哈哈哈哈 【命令】
===========================================================================
(1)commit //勾选要提交的文件--提交到本都库,【pycharm 左侧栏有这个选项】
(2)git pull -r // -r 就时rebase 把主分支rebase到本地 【命令。。。。】
(3)git push origin master //提交到主分支,这样就不会冲突了哈哈哈哈 【命令】
【14】
【15】git origin
怎么理解这里的origin? 输入命令 git remote -- git为你默认创建的指向du这个远程代码库的标签。你的代码库(repository)可以存放在你的电脑里,同时你也可以把代码库托管到Github的服务器上。在默认情况下,origin指向的就是你本地的代码库托管在Github上的版本。
(2)然后再输入一遍 git remote -v输出结果就会变为
origin https://github.com/user2/repository.git (fetch)
origin https://github.com/user2/repository.git (push)
(3) git remote show origin //查看远程仓库的信息,显示各个分支可以
【16】git pull 命用于从远程获取代码并合并本地的版本。
git pull <远程主机名> <远程分支名>:<本地分支名>
(1)将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
(2)如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin master
【17】git push 用于从将本地的分支版本上传到远程并合并。
git pull =git fetch 和 git merge FETCH_HEAD 的简写。
git pull --rebase = git fetch + git rebase
命令格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>
(2) 如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
例如:以下命令将本地的 master 分支推送到 origin 主机的 master 分支。
$ git push origin master
相等于:
$ git push origin master:master
【18】记录一次完美的提交。。。。。
【19】一次完整的提交过程 ,加了详细注释
(base) C:\Users\Y_PIN\PycharmProjects\Ypin>git branch //查看分支
001-
* 002-fenzhi //当前正在用的分支
branch
master
(base) C:\Users\Y_PIN\PycharmProjects\Ypin>git remote -v // 查看远程仓库
origin https://github.com/Yprincipal/Ypin.git (fetch) //origin 我理解就是远程代码库的一个标签
origin https://github.com/Yprincipal/Ypin.git (push)
(base) C:\Users\Y_PIN\PycharmProjects\Ypin>git remote show origin //查看远程仓库有几个分支
* remote origin
Fetch URL: https://github.com/Yprincipal/Ypin.git
Push URL: https://github.com/Yprincipal/Ypin.git
HEAD branch: master
Remote branches:
001-分支 tracked
master tracked // 这个是我们要提交的
Local branches configured for 'git pull':
002-fenzhi merges with remote master
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date)
(base) C:\Users\Y_PIN\PycharmProjects\Ypin>git add hahaha.txt //提交到暂存区
(base) C:\Users\Y_PIN\PycharmProjects\Ypin>git commit -m '再次联系提交' //提交到本地仓库
[002-fenzhi dbeffd1] '再次联系提交'
1 file changed, 7 insertions(+), 1 deletion(-)
(base) C:\Users\Y_PIN\PycharmProjects\Ypin>git pull -r origin master:002-fenzhi //拉区远端到本地
From https://github.com/Yprincipal/Ypin
! [rejected] master -> 002-fenzhi (non-fast-forward)
(base) C:\Users\Y_PIN\PycharmProjects\Ypin>git push origin 002-fenzhi:master //把本地推到远程仓库
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 392 bytes | 392.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/Yprincipal/Ypin.git
9d3d317..dbeffd1 002-fenzhi -> master
【20】linux 下查找命令
find . -name *.py
【21】查看所有分支
git branch -a 查看远程分支和本地分支
【22】list 搞二维数组
【23】下载指定的分支
(1)
git clone -b xxxx-script_libs sssss@10.2.xx.xx:/home/xxxxxx/test.git
(2) git branch -vv //查看分支是否对应 比如,你要从远程的master下载到本地master ,就看到下面红色字部分相同即可。
* bendifenzhi_mingzi 0b5df7a0 [origin/bendifenzhi_mingzi ]
(3)名字相同时,就可以直接使用
git pull -r
gir push
【24】取消commit
使用指令git reset --soft HEAD^。
注意此处如果想要连着add也撤销的话,--soft改为--hard;
HEAD^ 表示上一次的commit,也可以写成HEAD~1
【25】查看远程仓库中你要找的某个分支
git branch -a |grep xxxx
【26】git branch -vv
查看本地分支和其对应的分支
【27】创建与远端分支对应的本地分支,并且切换到该分支
git checkout -b local-branch remotes/origin/feature/test-xxxxxxxx
【28】把文件格式做转换
find ./*.py|xargs dos2unix
【29】