快速Git
有的人使用Git只是為了上傳下載文件,並不需要學會多深奧的git知識和結構,因此寫一專欄幫大家快速了解和使用Git。
Git簡介
git是一個開源的分布式版本控制系統,用於高效的管理各種大小項目和文件的代碼管理工具。簡單說就是用於管理多人協同開發項目的技術。
2. 代碼管理工具的用途
- 防止代碼丟失,做備份
- 項目的版本管理和控制,可以通過設置節點進行跳轉
- 建立各自的開發環境分支,互不影響,方便合並
- 在多終端開發時,方便代碼的相互傳輸
3. git的特點
- git是開源的,多在*nix下使用,可以管理各種文件
- git是分布式的項目管理工具(svn是集中式的)
- git數據管理更多樣化,分享速度快,數據安全
- git 擁有更好的分支支持,方便多人協調
4. git安裝
window:下載地址:https://git-scm.com/downloads
linux:sudo apt-get install git
基本概念
- workspace: 工作區,本地硬盤存放代碼的地方
- index: 暫存區,臨時存放用戶的改動,保存即將提交到文件列表信息
- Repository: 本地倉庫,這里面存放 提交的所有版本數據
- Remote: 遠程倉庫,托管代碼的服務器
注意:在本地倉庫中,git總是希望工作區的內容與倉庫區保持一致,而且只有本地倉庫的內容才能和其他遠程倉庫交互。
初始配置
配置命令: git config
- 系統設置配置,git config --system [選項]
# 將用戶名設置為Tedu git config --global user.name Never
- 當前用戶配置, git config --global [選項]
# 將用戶郵箱設置為1786088***@qq.com
git config --global user.email 1786088***@qq.com
- 當前倉庫配置,配置當前項目: git config [選項]
# 配置編譯器為pycharm
git config core.editor pycharm
4. 查看配置信息
tarena@tarena:~/gitproject$ git config --list use.name=Never user.name=Never user.email=1786088386@qq.com core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.editor=pycharm
- 配置文件位置: /etc/gitconfig
- 配置文件位置: ~/.gitconfig
- 配置文件位置: project/.git/config
該設置在github倉庫主頁顯示誰提交了該文件
基本命令
*1、初始化倉庫: git init
將當前文件目錄變為git操作目錄,生成git本地倉庫。即該項目目錄可以使用git管理
*2、查看文件狀態 git status
說明: 初始化倉庫后默認工作在master分支,當工作區與倉庫區不一致時會有提示。
*3、將指定文件添加到暫存區 git add [files..]
- e.g. 將指定目錄添加到暫存區 git add [dir]
- e.g. 將所有文件(不包含隱藏文件)添加到暫存區 git add .
4、刪除暫存區文件 git rm --cached [file]
*5、將暫存區所有文件同步到本地倉庫 git commit -m [message]
e.g. 將暫存區指定文件同步到本地倉庫 git commit [file] -m [message]
說明: -m表示添加一些代碼提交信息
*6、將本地倉庫連接遠程倉庫 git remote add origin https://github.com/xxxxxxxxx.git
*7、將本地的master分支推送給遠程倉庫 git push -u origin master
這個時候會讓我們輸入github賬號和密碼。
8、查看commit 日志記錄 git log
- 查看歷史記錄的純凈版本 git log --pretty=oneline
- 可以查看在bash下輸入過的所有指令 history
9、比較工作區和暫存區 file文件差異 git diff [file]
10、將暫存區或者某個commit點文件恢復到工作區 git checkout [commit_id] -- [file]
--是為了防止誤操作,checkout還有切換分支的作用
把暫存區的文件覆蓋本地 git checkout . 這條命令最危險!會取消所有本地的修改
用暫存區的文件覆蓋本地文件 git checkout --filename
匯總顯示工作區和暫存區的差異 git checkout 或git checkout HEAD
11、移動或者刪除文件
git mv [file] [path]
git rm [files]
注意: 這兩個操作會修改工作區內容,同時將操作記錄提交到暫存區。
12、忽略文件
有時候我們不想把某些文件納入版本控制,可以通過在項目文件夾下定義.gitignore文件,在每行指定一個文件夾名,被指定的文件夾在提交的時候會被忽略,忽略命令.
- file 表示忽略file文件
- *.py 表示忽略所有 .py 結尾的文件
- !lib.py 表示lib.py除外
- build/ 表示忽略 build/目錄下的所有文件, 過濾整個build文件夾
- /build 表示忽略的文件在 build目錄下,而子目錄中的文件不忽略
好了,如果作為新手只想要入門學會基本操作,那么學到這里已經足夠了,后面為git更加細致的講解,涉及版本控制
版本控制
1、撤銷更新 git reset --hard
- 退回到上一個commit節點 git reset --hard HEAD~1退回到指定的commit_id節點 git reset --hard [commit_id]
- 注意 : 1表示回退1個版本,依次類推。當版本回退之后工作區會自動和當前commit版本保持一致,日志也會刪除
- 取消提交到本地倉庫,移回到暫存區 git reset HEAD <file>
3. 查看所有操作記錄 git reflog
注意:最上面的為最新記錄,可以利用commit_id去往任何操作位置
保存工作區
1. 保存工作區內容 git stash save [message]
說明: 將工作區未提交的修改封存,讓工作區回到修改前的狀態
2. 查看工作區列表 git stash list
說明:最新保存的工作區在最上面
3. 應用某個工作區 git stash apply [stash@{n}]
4. 刪除工作區
- 刪除某一個工作區 git stash drop [stash@{n}]
- 刪除所有保存的工作區 git stash clear
標簽
如果你達到一個重要的階段,並希望永遠記住那個特別的commit,你可以使用 git tag 給它打上標簽。保存當時的工作狀態,一般用於版本的迭代。
4. 創建標簽 git tag -a [tag_name] [commit_id] -m [message]
說明: commit_id可以不寫則默認標簽表示最新的commit_id位置,-a可以不寫,但它不會記錄這標簽是啥時候打的,誰打的,也不會讓你添加個標簽的注解。 我推薦一直創建帶注解的標簽。。message標簽注釋。
e.g. 在最新的commit處添加標簽v1.0 git tag -a v1.0 -m '版本1'
e.g. 選擇指定標簽 git tag v0.9 b3a7436 -m "版本0.9"
5. 查看標簽
查看標簽列表 git tag
查看標簽詳細信息 git show [tag_name]
6. 去往某個標簽節點 git reset --hard [tag]
7. 刪除標簽 git tag -d [tag]
分支管理
分支即每個人在原有代碼(分支)的基礎上建立自己的工作環境,單獨開發,互不干擾。完成開發工作后再進行分支統一合並。
1. 查看分支情況 git branch
說明: 沒有參數時,git會列出本地分支,前面帶 * 的分支表示當前工作分支
2. 創建分支 git branch [branch_name]
說明: 基於a分支創建b分支,此時b分支會擁有a分支全部內容。在創建b分支時最好保持a分支"干凈"狀態。
3. 切換分支 git checkout [branch]
步驟2,3可以同時操作,即創建並切換分支 git checkout -b [branch_name]
但我們切換到新的分支時,原來master分支的內容都會不見,切換回master分支時,他們又會重新出現
4. 合並分支 git merge [branch]
沖突問題是合並分支過程中最為棘手的問題,當分支合並時,原分支和以前發生了變化就會產生沖突,
當合並分支時添加新的模塊(文件),這種沖突可以手動解決,只需自己決定commit操作即可。
當合並分支時兩個分支修改了同一個文件,則需要手動解決沖突。
5. 刪除分支
- 刪除分支 git branch -d [branch]
- 刪除沒有被合並的分支 git branch -D [branch]
Git遠程倉庫——GitHub
遠程主機上的git倉庫。實際上git是分布式結構,每台主機的git倉庫結構類似,只是把別人主機上的git倉庫稱為遠程倉庫。github之所以叫github是因為它指定 git 作為它的唯一代碼管理工具.github是一個開源的項目社區網站,擁有全球最多的開源項目。開發者可以注冊網站在github建立自己的項目倉庫。
獲取項目
在左上角搜索欄搜索想要的獲取的項目
選擇項目后復制項目git地址
在本地使用git clone方法即可獲取 git clone https://github.com/xxxxxxxxx.git
注意: 獲取到本地的項目會自動和github遠程倉庫建立連接。且獲取的項目本身也是個git項目。
創建git倉庫
點擊右上角加號下拉菜單,選擇新的倉庫
填寫相應的項目信息即可
github倉庫相對本地主機就是一個遠程倉庫, 通過remote連接,只需要需要輸入github郵箱帳號以及密碼即可。連接后即可使用遠程倉庫操作命令操作。readme.md文件會被自動作為項目介紹.
遠程倉庫操作命令
所有操作在本地git倉庫下進行
1. 添加遠程倉庫 git remote add origin [github_url].git
2. 刪除遠程主機 git remote rm origin
3. 查看當前的遠程倉庫 git remote
注意: 一個git項目連接的遠程主機名不會重復
4. 將本地分支推送給遠程倉庫 git push -u origin master
將master分支推送給origin主機遠程倉庫,第一次推送分支使用-u表示與遠程對應分支建立自動關聯
5. 刪除遠程分支
- 查看所有分支 git branch -a
- 刪除遠程分支 git push origin [:branch]
6. 其他推送方法
- 用於本地版本比遠程版本舊時強行推送本地版本 git push --force origin
- 推送本地標簽到遠程 git push origin [tag]
- 推送本地所有標簽到遠程 git push origin --tags
- 刪除遠程倉庫標簽 git push origin --delete tag [tagname]
7. 從遠程獲取代碼 git pull
將遠程master分支拉取到本地,作為tmp分支 git fetch origin master:tmp
區別
- pull將遠程內容直接拉取到本地,並和對應分支內容進行合並
- fetch將遠程分支內容拉取到本地,但是不會和本地對應分支合並,可以自己判斷是否正確后再使用merge合並。
參考目錄
推薦一個下載子文件的利器,輸入github地址,直接下載地址的內容:DownGIt
雖然寫的很亂,但是總結的很完整張果博客https://www.cnblogs.com/best/p/7474442.html