Git快速上手

1. 經常使用命令

1.1 . 命令一覽

git help
git init //初始化本地代碼倉庫
git clone <倉庫url> //克隆倉庫內源碼
git checkout <branch> //切換到指定分支
git submodule init //初始化子模塊
git submodule update //同步子模塊代碼
git branch //查看當前分支和本地所有分支
git branch <branchname> //建立新分支
git branch -D <branchname> //刪除指定分支
git status //查看當前狀態
git add . //將當前目錄下所有修改加入提交隊列
git add <filename>//添加指定文件到提交隊列
git add --all //將當前目錄下所有修改(包含刪除動做)加入提交隊列
git commit -m "commit log" //將提交隊列內的變動提交到本地倉庫
git commit -m 'commit log' //功能同上,日誌可換行
git push // 將本地倉庫變動提交到主倉庫和他人共享
git pull --rebase //同步本地倉庫爲最新,俗話把最新代碼拉下來
git merge <branchname> //將「branchname」代碼合併到當前所在分支
git fetch //同步
git diff //查看當前所有未add的文件變更
git diff <filename> //查看指定文件文件(未add)的變動
git tag //查看所有tag

2 . 常規用法

2.1 . 初始化本地倉庫

建立倉庫後能夠用於管理文件的版本,包含各類文檔和代碼git

mkdir [mydir]
cd [mydir]
git init

2.2 . 將代碼提交到倉庫

git add [filename]
git commit -m ["#1 commit desc"]

2.3 . 查看當前狀態

用以查看是否有修改尚未提交到git進行管理等等github

git status

2.3 . 使用branch 管理不一樣版本的文件

2.3.1 . 建立分支

git branch [new_branch_name]

2.3.2 . 切換分支

git checkout [my_branch_name]

2.3.3 . 刪除分支

git branch -D [my_branch_name]

2.4 . 使用tag標記文件特性

2.4.1 . 建立tag

git tag [new_tag_name]

2.4.2 . 切換到指定tag

git checkout [my_tag_name]

2.5 . 還原操做

2.5.1 . 還原指定文件

git checkout [file_name]

2.5.2 . 還本來次操做(所有修改)

git reset --head

2.6 . 回退版本

2.6.1 . 回退到某一個tag

git checkout [my_tag_name]

2.6.2 . 回退到某次提交

git show

2.6.3 . 查看全部提交,找要退回的commit id

git checkout [my_commit_id]

3 . 擴展用法

3.1 . 將本地代碼推送到遠程(gitlab)空倉庫

3.1.1 . 從 gitlab 上覆制 項目的ssh地址 如:

git@git.domain.com:group/project.git

3.1.2 . 在本身的代碼的目錄上 輸入

git remote add origin  git@git.domain.com:com:group/project.git

3.1.3 . 而後若是你讓github給你智能生成過gitignore文件的話,那須要先pull一次

git pull origin master

3.1.4 . 最後 將代碼 push到遠程倉庫

git push -u origin master

3.2 . 代碼遷移到 Gitlab上

代碼倉庫的遷移主要針對原先代碼不在 gitlab上,須要將原先 git 或 svn的日誌記錄,分支以及tag都遷移到 gitlab 上。shell

3.2.1 . 舊Git倉庫遷移到 gitlab上

  • 從原地址克隆一份裸版本庫,好比本來託管於 GitHub
git  clone --bare  git://github.com/username/project.git

3.2.2 . 而後到新的 Git 服務器 (gitlab) 上建立一個新項目,etdroid。以鏡像推送的方式上傳代碼到 gitlab 服務器上

cd  project.git
git push --mirror git@git.domain.com:group/project.git

3.3 . 刪除本地代碼

rm -rf project.git

3.3 . 舊Svn倉庫遷移到 gitlab上

3.4 . 克隆遠程項目到本地

  • 新建工做目錄(若有須要)而且進入目錄內bash

  • 目錄內右鍵打開git bash服務器

  • 克隆主工程源碼dom

git clone <url>

例如要克隆易洽源碼:ssh

git clone git@git.domain.com:group/project.git
  • 切換分支(若有須要)
git checkout <branch>

例如要切換到master分支:svn

git branch master
  • 初始化子模塊
git submodule init
  • 同步子模塊代碼
git submodule update
  • 將子模塊切換到須要的分支(若有須要)
git submodule foreach git checkout master

4. 建立本身的工做分支

代碼倉庫中有master和production兩個分支,都是保護分支不能直接提交修改的代碼。gitlab

所以須要建立本身的工做分支fetch

  • 切換到本身要複製的分支(若有須要)
git checkout <branch name>

例如:

git checkout master
  • 建立工做分支
git branch <branch name>

例如:

git branch bugfix_#123

5 . 刪除遠程分支和

在Git v1.7.0 以後,可使用這種語法刪除遠程分支。

git push origin --delete <branchName>

5.1 . 刪除遠程tag:

git push origin --delete tag <tagname>

不然,可使用這種語法,推送一個空分支到遠程分支,其實就至關於刪除遠程分支:

git push origin :<branchName>

這是刪除tag的方法,推送一個空tag到遠程tag:

git push origin :<branchName>

這是刪除tag的方法,推送一個空tag到遠程tag:

git tag -d <tagname>
git push origin :refs/tags/<tagname>
相關文章
相關標籤/搜索