若是有必定版本管理軟件基礎或使用過 svn 的你,這篇 git 的文章應該是最適合你的。做者也是從 svn 過來,從開始的以爲 git 麻煩,到最後仍是感受 git 是最好用的版本控制軟件。javascript
雖然,大部分狀況下,IDEA 已經對 Git 兼容特別好;能夠完成大部分的 Git 的提交,push ,合併等操做,但有時候一些回退的操做仍是經過命令來操做會方便點。html
本文不會像大多數文章同樣,通篇給你介紹一堆的 git 命令。我的認爲,這種命令的東西用多了天然記住了,沒用到的時候記再多,用的時候同樣忘,並且用的時候可使用 git 的幫助或直接網上搜命令。java
文章從 git 的倉庫,分支,經常使用 git 工具及 git 和 svn 的區別來講明git
git 分爲兩個版本庫,全部 git 信息都保存在 .git 隱藏文件夾中,大部分狀況,咱們會在本地維護自已的版本信息。github
常見的倉庫命令shell
# 初始化本地倉庫,默認會初始化一個 master 分支 git init # clone 一個遠程倉庫, 建立了一個本地倉庫,一個本地倉庫的 master 分支,拉取遠程倉庫 master 的內容 git clone address # 初始化本地倉庫後,添加一個遠程倉庫 git remote add 倉庫Id 倉庫地址
遠程倉庫的增刪改查,經過在 git 控制檯 git remote
雙擊 tab 便可看到全部操做,包含 rename
,remove
,set-url
,add
等。數據庫
建立本地版本庫,而後添加遠程版本庫,而後把文件 commit 到本地,最後 push 到遠程版本庫json
# 在你的代碼文件夾根目錄中初始化本地版本庫 git init # 添加須要提交的文件 git add . # 提交到本地倉庫 git commit -m "初始提交" # 添加遠程倉庫,並命倉庫名爲 test git add test git@gitee.com:sanri/test.git # 推送代碼到遠程版本庫的 master 分支 git push test master
工做區有一個隱藏目錄.git
,這個不算工做區,而是Git的版本庫(Repository)。segmentfault
Git的版本庫裏存了不少東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲咱們自動建立的第一個分支master
,以及指向master
的一個指針叫HEAD
。windows
git add
實際就是把文件添加進了暫存區git commit
把暫存區的全部內容提交到了版本庫Git跟蹤並管理的是修改,而非文件,你每次修改工做區中的內容,都需從新添加到暫存區才能提交。
Svn 是跟蹤文件的,文件狀態:untracked -> tracked -> commited
Git 是跟蹤修改的,只要文件有修改,就需添加到暫存區,而後提交
建議下載 sourceTree
來看這部份內容,比 git status
會更加清晰,它會明確的給你標出暫存區,工做區,本地倉庫和遠程倉庫。
git add
添加到暫存區了,想撤回 git reset HEAD file
不加 file 表示所有撤回,只是撤回添加,不會影響工做區文件
git commit
添加到版本庫了,想撤回 git reset --soft HEAD^
^
表示撤回一次提交,關於有幾回提交,在 IDEA 中能夠看得更清楚
這個撤回撤回到了暫存區,也不會影響工做區文件。
再使用 git checkout -- file
能夠把工做區的文件還原成暫存區的或版本庫中的文件
git reset HEAD file
區別是,git reset
不會影響工做區的文件,但 git checkout --
會替換工做區的文件。git checkout -- file
來還原。git checkout -- file
還原來版本庫版本git reset HEAD file
,git checkout -- file
commitId
,而後git checkout commitId file
本地倉庫和遠程倉庫都會有分支,通常來講是一一對應的,建立倉庫時會默認初始化一個 master
分支。
創建倉庫時,會有一個默認分支master
分支,現已經基本約定這個分支是能夠隨時發佈的分支。
我的理解 :
當拉取遠程代碼的時候,若是你和別人改的是同一個文件,則頗有可能出現衝突,展現以下
$ git merge feature1 Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Automatic merge failed; fix conflicts and then commit the result.
查看 readme.txt 的內容
Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage. Git tracks changes of files. <<<<<<< HEAD Creating a new branch is quick & simple. ======= Creating a new branch is quick AND simple. >>>>>>> feature1
<<<<<<< HEAD
表示遠程的內容,>>>>>>> feature1
表示你的分支的內容,中間用 ========
分隔,有幾個這樣的區志就是有幾個衝突,使用 compare 可 idea 工具解決衝突後,而後從新添加,提交,推送。
在須要註冊的時候,關閉安裝,而後找到 %LOCALAPPDATA%\Atlassian\SourceTree
添加文件 accounts.json
內容以下:
[ { "$id": "1", "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity", "Authenticate": true, "HostInstance": { "$id": "2", "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount", "Host": { "$id": "3", "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount", "Id": "atlassian account" }, "BaseUrl": "https://id.atlassian.com/" }, "Credentials": { "$id": "4", "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account", "Username": "", "Email": null }, "IsDefault": false } ]
.git
目錄添加一個文件 .gitignore
每一行是忽略的文件,可使用能配符,目錄。
可能你的項目中 js 腳本比較多,被 github 自動判斷爲 javascript 項目了,能夠強制改回來,git
目錄添加一個文件 .gitattributes
內容爲
*.js linguist-language=Java
fatal:unable to access ': SSL certicate problem: unable to get local issuer certificate
解決辦法,兩種:
配置全局用戶名密碼和跳過 ssl 認證
# 跳過 ssl 認證 git config --global http.sslVerify false # 存儲用戶名密碼認證信息,不須要每次都輸入用戶名密碼 git config --global credential.helper store
# 初始化本地倉庫,默認會初始化一個 master 分支 git init # clone 一個遠程倉庫, 建立了一個本地倉庫,一個本地倉庫的 master 分支,拉取遠程倉庫 master 的內容 git clone address # 初始化本地倉庫後,添加一個遠程倉庫 git remote add 倉庫Id 倉庫地址 # 建立分支 git branch 分支名 # 合併分支到當前分支 git merge 分支名 # 切換分支 git checkout 分支名 # 版本還原相關 git reset --mixed # 此爲默認方式,不帶任何參數的git reset,它 回退 commit 和 add 信息 git reset --soft # 回退到某個版本,只回退了commit的信息。若是還要提交,直接commit便可 git reset --hard # 完全回退到某個版本,本地的源碼也會變爲上一個版本的內容,慎用! # stage -> workspace git reset HEAD <files> # repository -> stage git reset --soft <hash> git reset --soft HEAD^ git reset --soft HEAD~2 # repository -> workspace git reset --mixed <hash> # workspace 重置爲 repository 內容 git reset --hard <hash> # 使某個文件使用上次的內容 git checkout -- file # 使某個文件使用某個版本的內容 git checkout commitId file
創做不易,但願能夠支持下個人開源軟件,及個人小工具,歡迎來 gitee 點星,fork ,提 bug 。
Excel 通用導入導出,支持 Excel 公式
博客地址:https://blog.csdn.net/sanri1993/article/details/100601578
gitee:https://gitee.com/sanri/sanri-excel-poi
使用模板代碼 ,從數據庫生成代碼 ,及一些項目中常常能夠用到的小工具
博客地址:https://blog.csdn.net/sanri1993/article/details/98664034
gitee:https://gitee.com/sanri/sanri-tools-maven