Git常用命令

Git教程筆記

教程鏈接:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

創建版本庫

  • git init: 初始化一個Git倉庫,將當前目錄變為Git管理的倉庫
  • git add <filename>:把文件添加到倉庫(stage中),可以反復多次使用,添加多個文件
  • git commit -m "版本描述":完成,添加注釋,把文件按提交到倉庫

時光機穿梭

  • git status:隨時掌握工作區的當前狀態
  • git diff <filename>:如果git status告訴你文件被修改過,查看修改的內容使用

git reset --hard commit_idHEAD指向的版本就是當前的版本,因此,Git允許我在版本的歷史之間穿梭,使用如下命令

版本回退

  • git log:穿梭前,可以查看提交歷史,以便確定要退回到哪個版本,顯示從最近到最遠的提交日志
  • git log --pretty=oneline:以單行形式顯示提交日志
  • git reset --hard commit_id:回退/前進到commit_id指向的版本
  • git reset --hard HEAD^:當修改錯了工作區某個文件的內容,還使用了git add將文件添加到了暫存區時,想丟棄修改,回退到上一版本
  • git reflog:要重返未來,查看各個版本的commit_id,以便確定要回到未來哪個版本

管理修改

  • git 管理的是修改,而非文件。
  • 第一次修改 -> git add -> 第二次修改 -> git commit

撤銷修改

  • git checkout -- <filename>:丟棄工作區的修改,返回最近一次add/commit時的文件狀態
  • git reset HEAD <filename>:丟棄暫存區的修改

刪除文件

  • git rm <filename>:從版本庫中刪除文件

遠程倉庫

添加遠程庫

  1. 登陸GitHub,“Create a new repository”
  2. 添加遠程庫:git remote add origin git@github.com:<username>/<repository name>.git
  3. 推送并關聯本地master分支:git push -u origin master
  4. 提交master分支修改到遠程庫:git push origin master

從遠程庫克隆

  • git clone git@github.com:<username>/<repository name>.git
  • GitHub支持ssh/https協議

分支管理

創建和合并分支

  • git branch <name>:創建分支
  • git branch:查看分支
  • git checkout <name>:切換分支
  • git checkout -b <name>:創建+切換分支
  • git merge <name>:合并某分支到當前分支
  • git branch -d <name>:刪除分支

解決沖突

  • 當Git無法自動合并分支時,就必須首先解決沖突。解決沖突后,再提交,合并完成
  • git log --graph:看到分支合并圖
  • git log --graph --pretty=oneline --abbrev-commit單行顯示分支合并圖

分支管理策略

  1. git merge <name>:fast forward模式合并,刪除分支,分支信息被丟棄
  2. git merge --no-ff:普通模式合并,合并后歷史有分支,可通過git log --graph看到分支合并記錄

Bug分支

  • git stash:儲存當前工作現場
  • git stash list:列出所有stash
  • git stash apply:恢復最近一次儲存的stash
  • git stash drop:刪除最近一次儲存的stash
  • git stash pop:恢復+刪除最近一次stash
  • git stash stash@{num}:恢復指定stash

feature分支

  • git branch -D <name>:強行刪除沒有被合并的分支

多人協作

  • git remote -v:查看遠程庫的詳細信息
  • git checkout -b dev origin/dev:創建遠程origin的dev分支到本地
  • git branch --set-upstream dev origin/dev:建立本地分支和遠程分支的關聯
  • git pull:抓取遠程的新提交
  • git push origin branch-name:把分支上的所有本地提交推送到遠程庫,。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠程庫對應的遠程分支上

標簽管理

  • 是指向某個commit的指針
  • 標簽不能移動
  • 創建和刪除標簽都是瞬間完成的

創建標簽

  • eg:git tag v1.0
  • git tag:列出所有標簽(按字母排序)
  • git tag <tagname>:新建一個標簽,默認為HEAD,也可以指定一個commit id
  • git tag -a <tagname> -m "description":指定標簽信息
  • git tag -s <tagname> -m "description...:"通過-s用私鑰簽名一個標簽
  • git show <tagname>:查看標簽信息

操作標簽

  • git push origin <tagname>:推送本地標簽到遠程庫
  • git push origin --tags:推送全部未推送過的本地標簽
  • git tag -d <tagname>:刪除本地標簽
  • git push origin :refs/tags/<tagname>:刪除遠程標簽
    如果要刪除遠程標簽就得先刪除本地標簽,再從遠程刪除。

使用GitHub

  • 自己擁有Fork后的倉庫的讀寫權限
  • 可以推送pull request給官方倉庫來貢獻代碼

自定義Git

  • git config --global color.ui true:讓Git顯示顏色

忽略特殊文件

  1. .gitignore:配置要忽略的文件
  2. 這里 可以在線瀏覽各種配置文件,無需從頭寫.gitignore文件

配置別名

  • 別名是命令的縮寫
  • 例子:
    1. git config --global alias.st status:配置status別名為st
    2. git config --global alias.co checkout:
    3. git config --global alias.ci commit:
    4. git config --global alias.br branch:
    5. git config --global alias.unstage 'reset HEAD':
    6. 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/config:倉庫的Git配置文件
    2. .gitconfig:當前用戶的Git配置文件,放在用戶主目錄下

搭建Git服務器

  1. 安裝git:sudo apt-get install git
  2. 創建git用戶:sudo adduser git
  3. 創建證書登錄:搜集登陸用戶公鑰(id_rsa.pub)文件,導入/home/git/.ssh/authorized_keys文件,一行一個
  4. 初始化Git倉庫
    • sudo git init --bare sample.git
    • sudo chown R git:git sample.git:修改裸倉庫owner,防止其他用戶篡改工作區
  5. 禁用shell登陸(git-shell一登陸就自動退出)
    • vi /etc/passwd
    • git:x:........:/bin/bash-->git:x:......:/usr/bin/git-shell
  6. 克隆遠程倉庫,本地運行,修改后推送
    • git clone git@server:/srv/sample.git
    • git push
  7. 要方便管理公鑰,用Gitosis
  8. 要像SVN那樣變態地控制權限,用Gitolite
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 基礎命令 用戶設置 初始化倉庫 把文件添加到倉庫 把文件提交到倉庫 添加文件到Git倉庫 分兩步: 第一步,使用命...
    前端渣渣閱讀 1,467評論 0 20
  • **#設置全局的配置文件,放在當前用戶主目錄下(Administrator)的.gitconfig文件中。用戶名和...
    聽風就是雨之路人甲閱讀 362評論 0 1
  • 【奇跡日記】第二天 1.我想解決的問題是什么呢?找到我的人生伴侶 2.今天我體驗到了什么呢?綻放 自信 愛自己 3...
    Lucky琳達閱讀 139評論 0 0