Git深入操作(一)

      近來GitHub發佈了中文文檔,官方的中文文檔當然就是“教科書”啦,但是翻閱了一些還是不是很看的懂,還是先將自己需要的部分總結一下,然後沒事的時候可以多翻閱官方文檔來提高自己。

GitHub 中文文檔地址:https://help.github.com/cn

一、Git小常識

   1、在Git中,用HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100。

   2、 Git把數據看作小型文件系統的一組快照,每次提交更新時Git都會對當前的全部文件製作一個快照並保存這個快照的索引。爲了高效,如果文件沒有修改,Git不會重新存儲該文件,而是隻保留一個鏈接指向之前存儲的文件。所以Git的工作方式可以稱之爲快照流。

  3、Git底層採用的是SHA-1算法

二、commit

      commit 分爲兩種:一種是常規的 commit,也就是使用 git commit 提交的 commit。

       另一種是 merge commit,在使用 git merge 合併兩個分支之後,你將會得到一個新的 merge commit。merge commit 和普通 commit 的不同之處在於 merge commit 包含兩個 parent commit,代表該 merge commit 是從哪兩個 commit 合並過來的。

三、git 目錄

我們知道 git init / git init 目錄名 會創建一個新的倉庫,或者將倉庫給初始化,它會產生一個.git 文件,而git系統當中的的所有數據都存在於.git文件夾之中。

        

4、先pull後push

5、git的工作流  

工作區:即自己當前分支所修改的代碼,git add xx 之前的!不包括 git add xx 和 git commit xxx 之後的。

暫存區:已經 git add xxx 進去,且未 git commit xxx 的。  

本地分支:已經git commit -m xxx 提交到本地分支的。

六、idea 上設置終端爲 git bash

 idea file--》setting--》terminal 配置shell path 爲F:\git\Git\bin\bash.exe即可。
 ps:上面地址替換爲你的 git安裝目錄裏的bash.exe的目錄

七、解決git的亂碼問題,如下👇:

   方法一:在git bash下(使用界面操作時),右鍵 -->選擇options-->選擇“Text”-->將Character set設置爲 UTF-8

  方法二:分別修改git的某些配置文件

//1和2在C:\Users\Administrator下,3和4在git安裝目錄下👇
1、.gitconfig文件末尾添加
# 代碼庫統一使用utf-8
encoding = utf-8  
# log編碼   
commitencoding = utf-8  
# 支持中文路徑  
 pathnameencoding = utf-8  
# status引用路徑不再是八進制
quotepath = false 

2、git-completion.bash文件末尾添加
# 讓ls命令能夠正常顯示中文
alias ls='ls --show-control-chars --color=auto' 

3、inputrc文件末尾添加
# bash可以正常輸入中文
set output-meta on    
set convert-meta off  

4、profile文件末尾添加
export LESSHARESET=utf-8

 方法三: -->git安裝目錄 -->編輯 etc/bash.bashrc --> 文末最後添加

# 解決IDEA下的terminal中文Unicode編碼問題
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

  方法四:在  Ideal的terminal 終端 裏面參看git log亂碼,則可以使用set LESSCHARSET=utf-8 命令臨時解決,當然是臨時的。

               因爲Ideal的terminal 終端 默認使用的是本機的CMD窗口,所以想要解決問題得配置本機的環境變量

                

PS:git status不能顯示中文:git config --global core.quotepath false 

8、一些高級命令操作

1、撤銷沒有push的commit

1:git log 查看提交日誌,找到commit id

2:git reset --hard commit_id

(恢復到之前某個提交的版本,且那個版本之後提交的版本都不要了)

或者

git reset --hard HEAD^  # 回到最新的一次提交

或者

git reset HEAD^  # 此時代碼保留,回到 git add 之前

2、撤銷已經提交到遠程倉庫的commit

1:git log # 得到你需要回退一次提交的commit id

2:git reset --hard <commit_id>

3:git push origin HEAD --force # 強制提交一次,覆蓋之前錯誤的提交

或者

1:git log # 得到你需要回退一次提交的commit id

2:git revert <commit_id> #生成一個新的 commit,

                                           將指定的 commit 內容從當前分支上撤除

3、合併前幾次的提交  git rebase -i HEAD~n(回退到前N次提交)
    合併某一次的提交  
4、修改的文件已被git commit,但想再次修改不再產生新的Commit

1:git add sample.txt 提交修改的文件

2:git commit --amend -m"說明"

3:git push --no-thin origin HEAD:refs/for/master #再次推到遠程

5、回到add之前的工作區

git checkout -- a.txt   # 丟棄某個文件 或者

git checkout -- .       # 丟棄全部

6、恢復git add到緩存區,並未commit提交

git reset HEAD . 或者

git reset HEAD a.txt

7、查看所有記錄所有HEAD的歷史 git reflog
8、合併某一次提交到當前分支上 git cherry-pick 某次提交
9、將dev合併到master git merge dev
10、查看本地分支所關聯的遠程分支 git branch -vv
11、查看所有遠程分支  git branch -r
12、重命名本地分支 git branch -m old_branch new_branch
13、刪除遠程分支

git push origin :old_branch

例如:(git push origin :master 刪除遠程master)

或者

git push -u origin :matter

14、設置當前分支對應的遠程分支 git push --set-upstream origin new_branch
15、重命名遠程分支 13點+14點
16、在本地刪除遠程不存在的分支

1:git branch -a 查看所有分支

2:git remote show origin  #顯示本地與遠程的對應關係

3:git remote prune origin

17、取消所有在stash中的文件 git checkout -- .

18、回滾會保留源碼,只是將git commit和index 信息

回退到了某個版本.

 git reset --mixed 版本號
(實際上 git reset 就是默認mixed模式)
   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章