git常用命令

創建一個倉庫
mkdir nnn //創建倉庫
git init //初始化倉庫(要在目錄內)

touch readme.txt //創建文件
cat readme.txt   查看文件

git status //查看倉庫狀態

git add readme.txt //添加文件至暫存區
git commit -m "hhh" //把暫存區的提交到倉庫 "hhh"是備註(可以有多次add,但只有一次commit)

git log --pretty=short //加--pretty=short 只顯示提交信息的第一行

git diff         //查看修改
git diff HEAD //查看工作區與最新提交的差別

回退版本

git reset --hard HEAD^  回退到上一個版本,用HEAD表示當前版本修改撤銷
git checkout -- readme.txt  丟棄工作區的修改(修改了文件但是還沒有add)
git reset HEAD readme.txt   (add了,還沒有commit)把暫存區的修改撤銷掉,重新放回工作區(再用上一個命令)

分支:

查看分支:git branch
創建分支:git branch <name>
切換分支:git checkout <name>
創建+切換分支:git checkout -b <name>
合併某分支到當前分支:git merge <name>  //需要add和commit後
刪除分支:git branch -d <name>

遠程庫:

關聯遠程倉庫(需要在github上面添加SSH KEY)git remote add origin git@server-name:path/repo-name.git;(我的git remote add origin [email protected]:bobnumbertwo/learngit.git)
關聯後使用命令git push -u origin master第一次推送master分支的所有內容;
此後使用命令git push origin master推送master分支的最新提交;推送分支,就是把該分支上的所有本地提交推送到遠程庫

從遠程倉庫克隆一個倉庫git clone [email protected]:bobnumbertwo/learngit.git

查看遠程庫信息,使用git remote -v;
在本地創建和遠程分支對應的分支,git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致;
建立本地分支和遠程分支的關聯,git branch --set-upstream branch-name origin/branch-name;
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠程的新提交,然後再推送;
本地新建的分支如果不推送到遠程,對其他人就是不可見的;

標籤:

命令git tag <tagname>用於新建一個標籤,默認爲HEAD,也可以指定一個commit id;
命令git tag -a <tagname> -m "blablabla..."可以指定標籤信息
命令git tag可以查看所有標籤
命令git push origin <tagname>可以推送一個本地標籤
命令git push origin --tags可以推送全部未推送過的本地標籤
命令git tag -d <tagname>可以刪除一個本地標籤
命令git push origin :refs/tags/<tagname>可以刪除一個遠程標籤

思考:

在dev分支上修改了文件,但是並沒有執行git add. git commit命令,然後切換到master分支,仍然能看到dev分支的改動,這個現象怎麼解釋?
因爲未add的內容不屬於任何一個分支, 未commit的內容也不屬於任何一個分支。 也就是說,對於所有分支而言, 工作區和暫存區是公共的

修復bug時,我們會通過創建新的bug分支進行修復,然後合併,最後刪除;
當手頭工作沒有完成時,先把工作現場git stash一下(git add 但沒有commit),然後去修復bug,修復後,再git stash pop,回到工作現場;
在master分支上修復的bug,想要合併到當前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“複製”到當前分支,避免重複勞動。

總的來說,就是,在dev分支下進行的工作,如果不commit的話,回到master,就會顯示出你在分支下所添加的工作。這個時候,你在master下修改完bug提交後,正在分支進行的工作也會提交了。爲了避免這個情況,你就在分支下,git stash將工作隱藏,這個時候,切換到master時候,修改了bug,提交。分支的內容不會被提交上去。

 

 

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