git 本地庫的操作

http://gocubecloud.com/articles/2020/03/28/1585371407847

一·創建git倉庫
1、git是依賴ssh的,創建倉庫之前要確保安裝ssh
ps -ef | grep “sshd”
如果沒有安裝ssh
sudo apt-get install openssh-server openssh-client
安裝git
sudo apt-get install git-core
2、配置git
git config –global user.name “name”
git config –global user.email “…@…”
設置別名
git config –global alias.st status

查看設置
git config user.name

3、建庫
推薦使用 git init -bare 創建裸庫,git init 與 git init -bare的區別參見另一篇文章: git init 與 git init –bare 的區別
4、一般使用場景是公司的服務器使用git init -bare 創建一個倉庫並add 、commit添加好工程後,開發人員本地使用git clone URL (ex:git clone [email protected].***:/home/user/project/.git) 命令clone一份工程。

下面總結開發人員本地的git 操作。

二·git的工作流

你的本地倉庫由 git 維護的三棵“樹”組成。
第一個是你的 工作目錄,它持有實際文件;
第二個是 暫存區(Index),它像個緩存區域,臨時保存你的改動;
第三個是 HEAD,它指向你最後一次提交的結果。(本地的版本庫)
最後開發人員需要將本地版本庫推到服務器端。第一次提交代碼使用命令git push -u origin master可以關聯本地分支和遠程分支。如果沒有用-u,以後的pull拉更新的代碼時會報錯沒有關聯版本庫,這時需要使用git branch -set-upstream-to=origin/ master 命令關聯版本庫。

三·常用的一些命令

1.一個正常的使用流程命令如下:
git stash
git pull
git stash pop
git add ***.c
git commit -m “***”
git push -u origin master

git status
2.git log顯示提交信息和版本ID
git log –oneline 顯示簡短的版本庫log信息。

3.git checkout命令:
git checkout file 從暫存區index中覆蓋文件到工作區worktree。
git checkout  hash file 從版本庫中覆蓋文件到暫存區index和工作區worktree中,可以爲版本庫的hash值或分支。
git checkout 對工作區進行檢查,彙總顯示工作區、暫存區與HEAD的差異(未被跟蹤的文件,即工作區新加文件,不顯示)。
總結
1:檢出某個具體文件的的時候,不會改變HEAD頭指針,主要使用於指定版本的文件覆蓋工作區中對應的文件。如果省略,則會用暫存區的文件覆蓋工作區中的文件,否則用指定提交中的文件覆蓋暫存區和工作區中的對應文件。
2:不是檢出某個具體文件的的時候,單純的檢出某個commit或分支,是會改變HEAD頭指針的。而且只有當HEAD切換到某個分支的時候纔可以對提交進行跟蹤,否則就會進入“分離頭指針”的狀態 需要git checkout master。

4.git reset命令:
git reset HEAD file 從版本庫覆蓋到index,若想把工作區恢復還需要再git checkout file

git reset –mixed:此爲默認方式,不帶任何參數的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit和index信息
git reset –soft:回退到某個版本,只回退了commit的信息,不會恢復到index file一級。如果還要提交,直接commit即可
git reset –hard:徹底回退到某個版本,本地的源碼也會變爲上一個版本的內容
注:
1:git reset –hard HEAD^ ,其中HEAD是指向最新的提交,上一次提交是HEAD^,上上次是HEAD^^,也可以寫成HEAD~2 ,依次類推
2:–hard 表示放棄所有本地改動

5.git fetch

1,從遠程獲取最新版本到本地並新建分支
Git fetch origin master:tmp
git fetch origin master:temp 這句命令的意思是:從遠程的origin倉庫的master分支下載到本地並新建一個分支tmp

比較代碼
git diff temp

合併tmp分支到master分支
git merge tmp

刪除tmp分支
git branch -d tmp

如果該分支沒有合併到主分支會報錯,可以用以下命令強制刪除git branch -D < 分支名>

2,如果我想從遠端的源倉庫更新到本地的代碼倉庫,可以輸入“git fetch origin”的命令,該命令的輸入類似如下格式:

remote: Counting objects: 382, done.
remote: Compressing objects: 100% (203/203), done.
remote: Total 278 (delta 177), reused 103 (delta 59)
Receiving objects: 100% (278/278), 4.89 MiB | 539 KiB/s, done.
Resolving deltas: 100% (177/177), completed with 40 local objects.
From ssh://[email protected]/srv/git/fiji
3036acc..9eb5e40 debian-release-20081030 -> origin/debian-release-20081030
* [new branch] debian-release-20081112 -> origin/debian-release-20081112
* [new branch] debian-release-20081112.1 -> origin/debian-release-20081112.1
3d619e7..6260626 master -> origin/master

最重要的是這兩行:

3036acc..9eb5e40 debian-release-20081030 -> origin/debian-release-20081030
* [new branch] debian-release-20081112 -> origin/debian-release-20081112

第一行表明遠端的origin/debian-release-20081030分支的提交(commit)ID已經從3036acc更新爲9eb5e40。箭頭前的部分是遠端分支的名稱。第二行是我們採取的動作,創建遠程跟蹤分支(如果遠程倉庫有新的tags,git fetch也會一併下載到本地)。

前面那些行顯示出“git fetch”命令會將哪些文件下載到本地,這些文件一旦下載到本地之後,就可以在本地進行任意操作了。

“git fetch”命令執行完畢之後,還不會立即將下載的文件合併到你當前工作目錄裏,這就給你了一個選擇下一步操作的機會,要是想將從遠程分支下載的文件更新到你的工作目錄裏,你需要執行一個“合併(merge)”操作。例如,我當前的本地分支爲”master“(執行git checkout master後),這時我想執行合併操作:

git merge origin/master

( 幾句題外話:合併的時候有可能你還沒有對遠程分支提交過任何的更改,或者可能是一個複雜的合併。)

如果你只是想看看本地分支和遠程分支的差異,你可以使用下面的命令:

git diff master origin/master

單獨進行下載和合並是一個好的做法,你可以先看看下載的是什麼,然後再決定是否和本地代碼合併。而且分開來做,可以清晰的區別開本地分支和遠程分支,方便選擇使用。

四·非常用命令
1.撤消未跟蹤文件 git clean -dxf
清除所有未跟蹤文件,包括納入ignored的文件。如果要保留ignored的文件修改,使用參數-df

2.cat .git/HEAD 一般指向當前分支名master
cat .git/refs/heads/master 指向當前代碼庫hash,即最近一次提交的ID

3.git branch -vv(兩個v),就能夠看到本地分支跟蹤的遠程分支。

4.使用git config –list查看配置設置

http://rogerdudler.github.io/git-guide/index.zh.html 一個簡要的介紹
http://blog.csdn.net/tiansidehao/article/details/50318811 一些簡單的git 操作
http://www.tuicool.com/articles/A3Mn6f checkout命令的詳解
http://blog.csdn.net/wirelessqa/article/details/20152353 git撤銷的操作

 

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