Git學習筆記

git學習筆記

如下內容是學習,廖雪峯老師的git教程以後整理的筆記
一、建立repogit

  • mkdir learngit
    cd learngit
    git init

二、編寫README.mdgithub

  • $ echo "git is a version control system"
    echo "git is free software"
    git add README.md #add to repo
    git commit -m "first commit" # commit to tell repo
  • git can add or commit file1.txt file2.txtshell

  • git log #查看歷史記錄
    git log --pretty=oneline #更好的查看日誌
    git reset --hard HEAD^ #版本回退上一個版本
    git reflog #查看命令歷史,以便知道要回退到哪一個版本
    git reset --hard commit_id #在版本的歷史之間穿梭ubuntu

  • git status #查看狀態
    git add 命令實際上就是把要提交的全部修改放到暫存區
    git commit 能夠一次性把暫存區的全部修改提交到分支安全

  • git diff HEAD -- xxxx.txt #能夠查看到工做區和版本庫裏面最新版本的區別bash

  • git checkout -- file #能夠丟棄工做區的任何修改服務器

  • 添加遠程倉庫
  • 先生成ssh key ssh-keygen -t rsa -C "youemail"
    生成的ssh key 在用戶的主目錄 .ssh下
    將 ssh key 添加到github上
    ssh -T git@github.com #驗證是否成功添加
    git remote add origin git@github.com:xxx/xxx.git #關聯遠程庫
    git push -u origin master #將本地庫全部內容推送到遠程庫上
    -u 參數:git把本地的master和遠程新的master分支關聯起來
    git push origin master 向遠程推送修改
    git clone xxx #克隆repo
  • 分支管理
    git checkout -b dev #建立dev分支 切換到dev分支上
    -b 參數表示 建立病切換:git branch dev and git checkout dev
    git branch #查看當前分支
    git checkout master #切換會master分支
    git merge drv #將dev的分支合併到master分支
    git branch -d dev #刪除dev分支
    git log --graph #查看分支合併圖
    git merge --no-ff -m "xxx" dev
    --no-ff 參數,表示禁用fast forward 至關於在master分支上提交一個commitapp

  • 處理bug分支
    git stash #將當前工做現場儲藏起來
    git stash list #查看儲藏的工做現場
    git stash apply #恢復工做現場 可是恢復的stash內容並不刪除
    git stash drop #刪除恢復的stash內容
    git stash pop #刪除的同時將stash內容也刪除了ssh

  • 刪除分支
    git branch -d xxxx
    -D 參數:強行刪除工具

  • 多人協做
    git remote #查看遠程庫的信息
    -v 參數:顯示更詳細的信息
    git push origin master or dev #選擇推送的分支
    master 是主分支 dev 是團隊開發分支 這兩個須要同步到遠程
    因爲克隆下來的只有master分支
    git checkout -b dev origin/dev #建立遠程origin的dev分支到本地
    git pull #把最新的提交從origin/dev 抓下來 在本地合併 解決衝突
    git rebase #rebase操做能夠把本地未push的分叉提交歷史整理成直線;
    rebase的目的是使得咱們在查看歷史提交的變化時更容易,由於分叉的提交須要三方對比

  • 標籤管理
    標籤管理更加方便便捷 不用去記歷史中的commit id
  • 建立標籤
    git tag v1.0 #給當前分支打上標籤
    git tag #查看標籤
    git tag v0.9 commit id #給commit id 打上標籤
    git show #查看標籤信息
    git tag -a v0.1 -m "version 0.1 released" commit id
    -a 參數:指定標籤名 -m 指定說明文字
    -d 參數:刪除標籤
    git push prigin v1.0/--tags #推送一個標籤或者全部標籤
    若是標籤已經推到遠程:
    先將本地的標籤刪除:git tag -d v0.9
    再遠程刪除:git push origin :refs/tags/v0.9

  • 使用github 和 碼雲
    兩個都是遠程代碼託管平臺
    clone 別人的項目本身沒有push權限 須要先fork別人的項目 再push 再在github上面進行pull request
    碼雲是國內版的github 國內鏈接網速快 與github的用法同樣

  • 自定義git
    自定義git更好的工做
    git config --global user.name/email xxx/xxx@gmail.com
    git config --global color.ui true #顯示顏色 命令輸出更加醒目
    .gitignore #再.gitignore文件中能夠填入須要忽視提交的文件
    git add -f xxx #強制提交
    git check-ignore -v xxxx #檢查.gitignore是否寫得有問題

  • 配置別名
    git config --global alias.st status #告訴git 之後st 就表示 status
    --global #s是全局變量 對本機全部倉庫起做用
    配置文件在:.gitconfig

  • 搭建git服務器 建議是ubuntu or debian系 sudo apt-get install git sudo adduser git #建立一個git用戶用來運行git服務 建立ssh登陸:收集全部用戶的公鑰 將全部的公鑰導入到/home/git/.ssh/authorized_keys 文件裏 選定一個目錄做爲git倉庫:假定是/srv/sample.git sudo git init --bare sample.git #建立一個裸倉庫 如今沒有工做區 sudo chown -R git:git sample.git #將owner改成git 其餘用戶不須要登陸服務器去修改工做區 出於安全考慮 建立的git用戶不容許登陸shell 修改/etc/passwd 文件 git: x:1001:1001:,,,:/home/git:/bin/bash 改成:git: x:1001:1001:,,,:/home/git:/usr/bin/git-shell git用戶能夠正常經過ssh使用git 可是沒法登陸shell git-shell 登陸shell 就退出 git clone xxx #經過clone遠程倉庫在各自的電腦上運行 Gitosis:批量管理公鑰 Gitolite:管理權限工具 不要把有限的生命浪費到權限鬥爭中

相關文章
相關標籤/搜索