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
感興趣的,歡迎添加博主微信

哈,博主很樂意和各路好友交流,若是滿意,請打賞博主任意金額,感興趣的在微信轉帳的時候,備註您的微信或者其餘聯繫方式。添加博主微信哦。

請下方留言吧。可與博主自由討論哦

微信 微信公衆號 支付寶
微信 微信公衆號 支付寶
相關文章
相關標籤/搜索