git實用操做21條

1.建空目錄 mkdir e:\gggit

2.把該目錄變成倉庫 git init   //發現當前目錄下多了一個.gitgithub

3.新建文件readme.txtshell

4.添加文件到倉庫  git add readme.txt     //添加到暫存區ubuntu

5.文件提交到倉庫       git commit -m "wrote a readme file"  //後面是日誌,提交暫存區的內容windows

6.查看修改的內容 git diff readme.txtbash

7.查看歷史記錄   gig log (--pretty=oneline)//括號裏面的表示只顯示一行服務器

8.回退到歷史版本app

8.1 git reset --hard HEAD^  [head表示當前,head^回到上一個,head~`100 退100個版本]ssh

8.2 git reset --hard 3628164  【3628164 版本號,沒有必要寫全,寫五個就行】//若是屏幕沒有關掉svn

8.3 git reflog 【記錄每一次命令,能夠回退到任意版本】

[與svn區別] 三個回退到兩個版本,再查看是2個,svn是四個

9.撤消修改

9.1 沒有提交到暫存區 git checkout -- readme.txt

讓這個文件回到最近一次git commit或git add時的狀態

9.2 提交到暫存區,但沒有commit

git reset HEAD readme.txt

10.刪除文件

10.1 rm test.txt

 

11.添加遠程庫

11.1 關聯遠程庫 git remote add origin git@server-name:path/repo-name.git

11.2 第一次推送master分支的全部內容  git push -u origin master

11.3 之後推送最新修改 git push origin master

12.從遠程庫中克隆

12.1 git clone git@github.com:michaelliao/gitskills.git

【Git支持多種協議,包括https,但經過ssh支持的原生git協議速度最快。】

 

13 建立與合併分支

13.1 建立 dev分支,並切換到dev分支   git checkout -d dev

13.2查看當前分支  git branch //當前分支前面會標有*號

13.3 提交代碼到分支,

git add readme.txt 

Git commit -m "test"

13.4 切換回master git checkout master

13.5 把分支的成果merge到master

Git merge dev  //合併指定分支到當前分支

13.6 刪除dev分支   git branch -d dev

14.合併分支在刪除分支後,不丟失信息

14.1 git merge --no-ff -m "merge with no-ff" dev

//--no-ff參數,表示禁用Fast forward

15.bug分支

15.1 把工做現場儲藏起來,修完bug之後,再恢復

Git stash

15.2 eg在master分支上修復bug,切換到master分支,並建立bug分支

Git checkout master

Git checkout -b issue-101

15.3 修復完成後切換到master分支,合併,刪除bug分支

Git checkout master

Git merge --no-ff -m "merge bug fix 101 " issuse-101

Git branch -d issue-101

15.4 回到dev分支幹活

Git checkout dev

查看工做現場

Git stash list

恢復工做現場

1.git stash pop[恢復並刪除stash]

2.git stash apply 恢復

     git stash drop 刪除

  1. 多人協做
    1. 推送本身的修改 git push origin branch-name
    2. 推送失敗,代表遠程分支比本地新,用git pull合併
      1.   
      2. 提示no        tracking information,代表本地分支與遠程分支沒有關聯
      3.   
      4. Git branch        --set-upstream branch-name origin/branch-name
    1. 合併衝突,解決衝突。並在本地提交
    1. 推送 git       push origin branch-name
    1. 查看遠程庫信息 git       remote -v
    1. 在本地建立和遠程分支對應的分支
      1.   
      2. Git        checkout -b branch-name origin/branch-name
  1. 建立標籤
    1. 新建一個標籤 git       tag <name>  //git tag v1.0
    1. 指定標籤信息 git       tag -a <tagname> -m "baldsfadsaf"
    1. 用pgp簽名標籤 git tag -s       <tagname> -m "dsafadsf"
    2. 查看全部標籤 git tag
  1. 操做標籤
    1. 推送一個本地標籤 git push origin       <tagname>
    2. 推送所有未推送的標籤 git push origin       --tags
    3. 刪除本地一個標籤 git tag -d       <tagname>
    4. 刪除一個遠程標籤 git push origin       :refs/tags/<tagname>
  1. 忽略特殊文件
    1. 在要目下建立.gitignore,把忽略的文件名填進去
    1. windows帶的垃圾文件

# Windows:

Thumbs.db

ehthumbs.db

Desktop.ini

.py[cod]

*.so

*.egg

*.egg-info

  1. 配置別名
    1. Eg st 表明Status

Git config --global alias.st status

  1. Eg  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"

  1. 配置git服務器
    1. Debian/ubuntu環境
    2. 安裝git Sudo apt-get install       git
    3. 建立git 用戶,運行git服務
      1.   
      2. Sudo adduser git
    1. 建立證書登錄
      1.   
      2. 收集全部須要登陸的用戶的公鑰,就是他們本身的id_rsa.pub文件,把全部公鑰導入到/home/git/.ssh/authorized_keys文件裏,一行一個
    1. 初始化git倉庫
      1.   
      2. Sudo git init --bare        sample.git
    1. 不讓用戶登錄到服務器去改工做區
      1.   
      2. Sudo        chown -R git:git sample.git
    1. 禁用shell登錄
      1.   
      2. 編輯/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用戶指定的git-shell每次一登陸就自動退出。

  1. 遠程克隆倉庫
    1. git clone       git@server:/srv/sample.git
相關文章
相關標籤/搜索