Git從入門到精通


快速Git

  有的人使用Git只是為了上傳下載文件,並不需要學會多深奧的git知識和結構,因此寫一專欄幫大家快速了解和使用Git。

Git簡介

git是一個開源的分布式版本控制系統,用於高效的管理各種大小項目和文件的代碼管理工具簡單說就是用於管理多人協同開發項目的技術。

2. 代碼管理工具的用途

  1. 防止代碼丟失,做備份
  2. 項目的版本管理和控制,可以通過設置節點進行跳轉
  3. 建立各自的開發環境分支,互不影響,方便合並
  4. 在多終端開發時,方便代碼的相互傳輸

3. git的特點

  1. git是開源的,多在*nix下使用,可以管理各種文件
  2. git是分布式的項目管理工具(svn是集中式的)
  3. git數據管理更多樣化,分享速度快,數據安全
  4. 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. 刪除遠程分支

  1. 查看所有分支    git branch -a
  2. 刪除遠程分支    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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM