Git具有代码团队合做

前言

博主github

博主我的博客http://blog.healerjean.com

一、开发常备

1.0、本地直接建立仓库

git init / git init --bare <仓库名>
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/HealerJean123/fas.git
git push origin master

1.一、建立分支

当咱们初次建立项目点的时候,是没有分支的,咱们须要先建立一个master分支出来,而且push到git上,这样才是真正建立了一个分支,不然,若是直接建立的两个不一样的分支,将会没有同一个祖先,不可以进行合并html

git checkout -b zhangyj

1.二、查看分支

git branch

1.三、切换分支

git checkout zhangyj

1.四、提交所有更改到本地

git status

git add –A

git commit -m"add index.html"

1.五、从远程分支拉取代码

git pull origin develop  

develop为远程分支的名字
  • 拉取某个分支到本地
git clone -b develop http://git.github.com/healerjean/test.git

1.六、推送到本身的远程分支

不能够跨分支push 代码,好比如今是zhangyj分支,直接push develop是不会起做用的,咱们须要网页发起请求(当咱们没有权限操做master的时候),或者切换到其余分支,而后进行merge操做,以下git

git push origin zhangyj
  • 强制上传,通常不要使用,通常用在–hard回退版本以后的上传
git –f push origin

1.七、合并到develop分支

1.7.一、git网址操做

  • 打开git网址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pLQFMFbO-1572840941459)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1572835086522.png)]github

  • 由于咱们是使用的develop分支,默认提交的分支是master,因此这里要进行改变

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bXg4A3hl-1572840941460)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1572835099908.png)]web

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isDahq4a-1572840941461)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1572835104945.png)]shell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WTQeLjLa-1572840941461)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1572835158526.png)]微信

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ed9Wyc0p-1572840941462)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1572835164711.png)]app

1.7.二、merge合并

  • develop合并到zhangyj
git merge develop

或者  

git merge develop zhangyj

介绍 :marge和 rebase

marge 特色:自动建立一个新的commit,当合并时遇到冲突,修改后从新commit便可

优势:将commit的实际状况进行记录,便于之后查看
缺点:因为每次merge会自动产生一个merge commit,因此在使用一些git 的GUI tools,若是commit频繁,这样会使得feature分支很杂乱,若是系统功能比较简单,这时能够考虑使用rebase来进行合并处理。

 

rebase 特色:将commit历史进行合并
 优势:项目历史比较简单,少了merge commit
 缺点:当发生冲突时不容易定位问题,由于re-write了history
 

https://blog.csdn.net/liuxiaoheng1992/article/details/79108233
https://blog.csdn.net/happyjume/article/details/87450696

二、必要命令

2.一、删除分支

2.1.一、删除本地分支

git branch -D zhangzyj

2.1.二、删除远程分支

git push origin –delete zhangzyj

2.二、回退版本 --mix --hard --soft

2.2.一、基本解释

2.2.1.一、基本概念

git reset 将当前分支的HEAD指向给定的版本,并根据模式的不一样决定是否修改index和working tree。jsp

  • HEAD: HEAD就是指向当前分支当前版本的游标
  • Index: Index即为暂存区,当你修改了你的git仓库里的一个文件时,这些变化一开始是unstaged状态,为了提交这些修改,你须要使用git add把它加入到index,使它成为staged状态。当你提交一个commit时,index里面的修改被提交。
  • working tree: 即当前的工做目录。
2.2.1.一、git reset [] [] 经常使用的有三种模式

经常使用的有三种模式,–soft, --mixed, --hard,若是没有给出则默认是–mixedsvg

一、 --mixed

img

mixed修改了index,index中给定commit以后的修改被unstaged。若是如今执行git commit 将不会发生任何事,由于暂存区中没有修改,在提交以前须要再次执行git addspa

二、–soft

img

使用--soft参数将会仅仅重置HEAD到制定的版本,不会修改index和working tree,本地文件的内容并无发生变化,而index中仍然有最近一次提交的修改,这时执行git status会显示这些修改已经在再暂存区中了,无需再一次执行git add

三、–hard

使用--hard同时也会修改working tree,也就是当前的工做目录,那么最后一次提交的修改,包括本地文件的修改都会被清楚,完全还原到上一次提交的状态且没法找回。因此在执行reset --hard以前必定要当心

2.2.二、练习

2.2.2.1.、回退某个文件到指定版本
git reset  fcd2093 a.jsp
2.2.2.二、将本地的状态回退到和远程的同样
git reset –hard origin/master  (也能够是develop分支)

2.2.2.三、回退到某个版本

git reset 057d

2.2.2.四、真实使用

有时候,若是咱们上传的文件太大,失败了,可是又已经commit了,很难受,又不能撤回,有时候又不知道究竟是哪一个文件太大了。因此须要了撤回到上次commit的状态。也就是说本地的修改能够经过git status显示出来

git log 查看comit 的id

git reset  fadsfadsfadsf123    (你运行gitcommit 以前的那个最新commit ID)

git status 就能够看到咱们本地刚刚作的修改了哦 哈哈哈,这个才是真正牛逼的东西

2.三、查看日志

2.3.一、查看整个日志记录

2.3.1.一、git log

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LoWLyzqj-1572840941464)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1572837363209.png)]

2.3.1.二、git reflog
D:\workspace\scf-resurgence>git reflog

54c65741 (HEAD -> 20191016-1.0.1-SNAPSHOT) HEAD@{0}: rebase finished: returning to refs/heads/20191016-1.0.1-SNAPSHOT
54c65741 (HEAD -> 20191016-1.0.1-SNAPSHOT) HEAD@{1}: rebase: 信贷核心参数修改
38024757 HEAD@{2}: rebase: 信贷核心参数修改
387f8163 HEAD@{3}: rebase: dev环境配置
d0125a78 HEAD@{4}: rebase: 冲突修改
77107232 HEAD@{5}: rebase: 信贷核心字段修改
6c2ca94f HEAD@{6}: rebase: 年利率改成利率+利率类型
caebb6b9 HEAD@{7}: rebase: 信贷核心参数调整
8139dd8d HEAD@{8}: rebase: 日志补充

2.四、查看某个版本的历史

  • fileName相关的commit记录
git log filename
  • 显示filename每次提交的diff
git log -p filename
  • 只看某次提交中的某个文件变化,能够直接加上fileName
git show commit-id filename

2.四、完全清除Git记录

2.4.一、清除某个文件的全部历史记录
第一步
$ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path-to-your-remove-file' --prune-empty --tag-name-filter cat -- --all


一、 path-to-your-remove-file 就是你要删除的文件的路径  若是不加/,则默认是相对路径 ,
二、若是你要删除的目标不是文件,而是文件夹,那么请在 `git rm --cached' 命令后面添加 -r 命令,表示递归的删除(子)文件夹和文件夹下的文件,相似于 `rm -rf` 命令。
三、若是文件或路径里有中文,可使用通配符*号,sound/music_*.mp3, 这样就把sound目录下以music_开头的mp3文件都删除了.

若是你看到相似下面这样的, 就说明删除成功了:

Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266)
# Ref 'refs/heads/master' was rewritten
第二步 推送咱们修改后的repo

以强制覆盖的方式推送你的repo,

git push origin master --f --all
第三步: 清理和回收空间
$ rm -rf .git/refs/original/

$ git reflog expire --expire=now --all

$ git gc --prune=now

Counting objects: 2437, done.
# Delta compression using up to 4 threads.
# Compressing objects: 100% (1378/1378), done.
# Writing objects: 100% (2437/2437), done.
# Total 2437 (delta 1461), reused 1802 (delta 1048)

$ git gc --aggressive --prune=now

Counting objects: 2437, done.
# Delta compression using up to 4 threads.
# Compressing objects: 100% (2426/2426), done.
# Writing objects: 100% (2437/2437), done.
# Total 2437 (delta 1483), reused 0 (delta 0)

三、Idea软件使用

3.一、将某个文件恢复到最近的版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2elQEAX-1572840941466)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1572837980928.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4rvo9H9m-1572840941466)(https://raw.githubusercontent.com/HealerJean/HealerJean.github.io/master/blogImages/1572837987994.png)]

四、git、windos版本问题

4.一、Windos文件不容许有空格

4.二、文件名不能太长

4.2.一、解决方案
git config --global core.longpaths true
感兴趣的,欢迎添加博主微信

哈,博主很乐意和各路好友交流,若是满意,请打赏博主任意金额,感兴趣的在微信转帐的时候,备注您的微信或者其余联系方式。添加博主微信哦。

请下方留言吧。可与博主自由讨论哦

微信 微信公众号 支付宝
微信 微信公众号 支付宝
相关文章
相关标签/搜索