GIT常用指令

由于git的使用通常伴隨著linux的常用指令,因此下面記得也有l(wèi)inux常用的操作,如果學(xué)習(xí)git確實應(yīng)該也學(xué)習(xí)下linux

  • mkdir 文件名 創(chuàng)建目錄
  • cd 目錄 用來定位目錄,這一點覺得比win要好很多,有時候一行代碼就能到達(dá)。注意目錄之間的分割用/既是和問號在一起的那個鍵。我自己常常分不清/和\特來聲明一下。
  • ls 顯示當(dāng)前目錄下的文件夾。
    • ls -ah 顯示包括隱藏目錄
  • pwd 顯示當(dāng)前目錄
  • git init 把這個目錄變成git可以管理的倉庫。
  • git add 文件名 把文件添加到倉庫
  • git commit 把文件提交到倉庫
    • git commit 相當(dāng)于快照。
    • git commit -m "提交聲明"
      注意,git commit 可以一次多次提交很多文件,故可以進(jìn)行以下的操作
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."**
  • git status 用來查看當(dāng)前倉庫的狀態(tài)
  • git diff 查看difference
  • git log 進(jìn)行查看歷史記錄(已經(jīng)commit)
    • 顯示的是從最近到最遠(yuǎn)
    • 如果嫌亂可以 git log --pretty=oneline
  • git reset 回退版本
    -git reset --hard HEAD HEAD表示當(dāng)前版本,而HEAD表示上一個版本,同理HEAD^表示上上個版本,HEAD~100,是往上一百個版本的意思,也可以git reset --hard 版本號的前幾位。git reflog 用來記錄每一次的命令。同樣可以查詢版本號,以進(jìn)行恢復(fù)。
  • 廖雪峰老師的圖?

前面講了我們把文件往Git版本庫里添加的時候,是分兩步執(zhí)行的:第一步是用git add把文件添加進(jìn)去,實際上就是把文件修改添加到暫存區(qū);
第二步是用git commit提交更改,實際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。
因為我們創(chuàng)建Git版本庫時,Git自動為我們創(chuàng)建了唯一一個master分支,所以,現(xiàn)在,git commit就是往master分支上提交更改。
你可以簡單理解為,需要提交的文件修改通通放到暫存區(qū),然后,一次性提交暫存區(qū)的所有修改。

  • 使用git diff HEAD -- 文件名 查看工作區(qū)和版本庫里面最新的區(qū)別
  • git checkout -- 文件名 在提交之前可以使文件恢復(fù)到上一個階段,如果是還沒有添加到版本庫的暫存區(qū),即是修改后還沒有放進(jìn)暫存區(qū),現(xiàn)在撤銷就可以和版本庫一樣,如果是已經(jīng)添加到版本庫,又做了修改現(xiàn)在撤銷修改就可以回到添加到暫存區(qū)后的狀態(tài)注意只能恢復(fù)一次
    • 如果是修改后還git add 到暫存區(qū)了,可以這樣做,git reset HEAD 文件名 把暫存區(qū)的修改回退到工作區(qū),然后再用git checkout -- 文件名 丟棄工作區(qū)的修改。
  • 刪除功能已經(jīng)add的文件如果被刪除了,如果你也想刪除,使用git rm 文件名 然后commit, 如果是誤刪想要恢復(fù),可以git checkout -- 文件名
  • github常用命令
    • ssh-krygen -t rsa -C "郵箱地址" 在用戶主目錄下看有沒有.ssh目錄,如果沒有,執(zhí)行上面命令
    • git push origin master 推送到github
      第一次推送用git push -u origin master
      以后用git push origin master
    • 從遠(yuǎn)端復(fù)制 git clone git@github.com:賬號名字/倉庫名字.git
  • git branch branchname 創(chuàng)建分支
  • git checkout branchname 切換分支
  • git checkout -b file name 創(chuàng)建name分支并且切換到name分支
  • git branch 列出所有分支,并且在當(dāng)前分支做標(biāo)記。
  • git checkout branchname 切換分支
  • git merge branchname 快速合并分支內(nèi)容到當(dāng)前分支。需是已經(jīng)commit過的
  • git branch -d branchname 刪除所需要刪除的分支
  • 如果遇到了分支和主分支都修改會遇到合并沖突的提示,這時打開沖突文件,進(jìn)行修改再add commit即可
  • git log --graph --pretty=oneline --abbrev-commit 以圖象顯示分支及其運(yùn)行情況。
  • git merge --no-ff -m "comit" brachname 使用遞歸戰(zhàn)略進(jìn)行合并,會在log里面看到分支情況,而在fast forward 中是看不出合并的commit是在這種模式下合并會生成一個commit,而-m就是描述這種commit的


    分支策略意義
  • git stash 用來儲藏當(dāng)前的工作現(xiàn)場,等以后恢復(fù)現(xiàn)場后繼續(xù)工作
    • 工作區(qū)的恢復(fù)可以用git stash apply 進(jìn)行恢復(fù),但是并不刪除stash,需要用git stash drop來刪除stash內(nèi)容
    • 同時恢復(fù)也有另一種方式,git stash pop,既是恢復(fù)的時候把stash的內(nèi)容刪除。
  • 強(qiáng)行刪除未合并的分支 git branch -D branch-name
  • 查看遠(yuǎn)程倉庫的信息 git remote
    詳細(xì)信息 git remote -v
  • git push origin branchname 推送其他分支
  • dev分支是開發(fā)分支,團(tuán)隊所有成員都要在上面工作,當(dāng)你的另一個小伙伴從遠(yuǎn)程庫clone時,默認(rèn)情況下只能看到本地的master分支,如果這位小伙伴要在dev上開發(fā),就必須創(chuàng)建遠(yuǎn)程origin的dev分支到本地,git checkout -b dev origin/dev
  • 從本地創(chuàng)建和遠(yuǎn)程分支對應(yīng)的分支 git checkout -b branchname origin/branchname
  • 從遠(yuǎn)程抓取分支 git pull
  • 使用git tag 標(biāo)簽名 在需要打分支的分支進(jìn)行打標(biāo)簽,默認(rèn)標(biāo)簽是打在最新提交的commit上的。
    • 如果是忘了打標(biāo)簽,可以找到歷史提交的commit id然后打上就可以了,git log --pretty=oneline --abbrev-commit 然后git tag 標(biāo)簽 commit id
    • 注意標(biāo)簽不是按時間順序列出,而是按字母進(jìn)行排序,git show tagname
  • git tag 查看所有標(biāo)簽
  • 創(chuàng)建帶有說明的標(biāo)簽 用-a指定標(biāo)簽名,-m指定說明文字 git tag -a tagname -m "message" commit id
  • 密鑰暫時空出
  • 刪除標(biāo)簽 git tag -d tagname
  • 推送某個標(biāo)簽到遠(yuǎn)程 git push origin tagname
    • git push origin --tags 一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽
    • 如果想刪除已經(jīng)推送到遠(yuǎn)程的標(biāo)簽 先從本地刪除,然后從遠(yuǎn)程刪除,命令也是push git push origin :refs/tags/tagname
  • 如何參加開源項目,可以在GitHub上fork就在克隆一個倉庫,然從自己的clone git clone git@github.com:usersname/repositoriesname.git **一定要從自己的賬號下克隆,這樣你才能修改。平時的修改你可以往自己的倉庫里面修改,如果你想官方接受你的修改,可以在github上發(fā)起一個pull request。
  • git 的日常配置,使用git config --global color.ui true
  • 配置別名 git config --global alias.st status 既是st以后表示成status
    先列舉幾種“偷懶”好方法
    st status
    co
    checkout
    cicommit
    br
    branch
    git reset HEAD file 可以把暫存區(qū)的修改撤銷掉(unstage)重新放回工作區(qū)這樣可以配置一個別名git config --global alias.unstage 'reset HEAD'
    把lg配置成了:
    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
    廖老師的圖
  • --global參數(shù)是全局參數(shù),這些命令可以在所有的git倉庫下使用
    注意,這些配置文件都在.git/config 中的[alias]后面,要刪除別名,把對應(yīng)行刪除就好了
    '''
    $ cat .git/config
    [core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
    [remote "origin"]
    url = git@github.com:michaelliao/learngit.git
    fetch = +refs/heads/:refs/remotes/origin/
    [branch "master"]
    remote = origin
    merge = refs/heads/master
    [alias]
    last = log -1
    '''
    而當(dāng)前用戶的git配置文件放在用戶主目錄下的一個隱藏文件.gitconfig中
    '''
    $ cat .gitconfig
    [alias]
    co = checkout
    ci = commit
    br = branch
    st = status
    [user]
    name = Your Name
    email = your@email.com
    '''
    配置別名也可以直接修改這個文件,如果改錯了,可以刪除文件重新進(jìn)行命令配置
  • git服務(wù)器暫時不展開

第一次結(jié)束線

參考廖雪峰的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Git常用命令總結(jié) Git常用命令總結(jié) git init 在本地新建一個repo,進(jìn)入一個項目目錄,執(zhí)行g(shù)it i...
    猿ape閱讀 275評論 0 1
  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,853評論 1 26
  • 1) 遠(yuǎn)程倉庫相關(guān)命令 檢出倉庫: 檢出倉庫: 直接檢出分支 2.0.0,指定遠(yuǎn)程倉庫名稱為 github (默認(rèn)...
    gavinDu閱讀 443評論 0 0
  • 1.我們的相遇是彼此青春中最美好的邂逅。像春日的暖陽,在這個青春彼此溫暖,彼此守候,彼此成長。 我們的友誼始于初中...
    陌璃本無殤閱讀 1,226評論 7 7
  • 以后我當(dāng)老板了,我一定要多投資員工,而不是簡單的吃喝玩樂,
    彩玲123閱讀 285評論 0 0

友情鏈接更多精彩內(nèi)容