Git實用操作


git

git是現在最流行的版本管理工具,應用范圍非常廣泛,工作中基本都會用到(除了一些互聯網金融公司外)。使用git好處有很多,包括但不限於便於多分支開發,
歷史管理跟回滾方便,發布等。配合webhook,可以在ci上集成自動發布等。是一件利器。熟練git的一些基本操作,會給開發帶來很大好處。

命令行

個人並不是完全使用命令行來進行所有的git操作的,使用圖形化工具真的會方便很多。然而有些情況下也會使用到命令行的方式來進行某些操作。了解一些命令行,會更好。

  • 基本操作
git clone rep_address       // 克隆一個遠程庫
git status                  //查看當前狀態
git add file_name           //將某個文件添加到git
git add .                  // 將所有新文件添加到git
git commit -am 'message'   // 提交所有更改,帶描述
git push                   //提交到遠程庫
git diff                     //查看diff
  • 分支
git checkout branch_name      //checkout到某個分支
git branch                    //查看分支
git branch some               // 新建一個名為some的分支
git push [遠程名] :[分支名]  //刪除某一遠程分支
  • 提交到遠程倉庫
//創建本地倉庫,並push到遠程倉庫
git init        //將本地目錄添加到倉庫
git remote add [shortname] [url] 
git add .
git commit -am 'first commit'
git push --set-upstream [url]/[shortname] master       
  • 提交者
(PS: Md里'-'分點,下面的內容有斷行就會分開,所以嵌入的代碼塊不能帶空行,不然顯示出錯)
// 設置全局
git config --global user.name 'Author Name'    
git config --global user.email 'Author Email'
// 或者設置本地項目庫配置
git config user.name 'Author Name'
git config user.email 'Author Email'   
  • cherry pick
git cherry-pick [commit-id]  //將某個commit,cherry pick到當前分支
  • 合並
git merge xxx              //將某個指定分支合並到當前分支
git merge [commit-id]  //將另一個分支某個commit-id為止的代碼merge到當前分支
  • stash
git stash                      //保存當前的工作進度。會分別對暫存區和工作區的狀態進行保存
git stash save "message..."   //這條命令實際上是第一條 git stash 命令的完整版
git stash list                //顯示進度列表。此命令顯然暗示了git stash 可以多次保存工作進度,並用在恢復時候進行選擇
git stash pop [--index] [<stash>]              //如果不使用任何參數,會恢復最新保存的工作進度,並將恢復的工作進度從存儲的工作進度列表中清除。如果提供參數(來自 git stash list 顯示的列表),則從該 <stash> 中恢復。恢復完畢也將從進度列表中刪除 <stash>。選項--index 除了恢復工作區的文件外,還嘗試恢復暫存區。
git stash apply [--index] [<stash>]          //除了不刪除恢復的進度之外,其余和 git stash pop 命令一樣
git stash clear                              //刪除所有存儲的進度
git stash show -p                      //查看最近stash的diff
git stash show -p stash@{1}     //查看某個stash的diff
  • 回滾
git reset --hard [commit-id]  //回滾到某個commit , 可選 --soft, --mixed
  • 標記
git update-index --assume-unchanged [filename]     //假定某個文件沒有發生變化,但是切換分支,pull代碼會更新index
git update-index --no-assume-unchange [filename]   //取消
git update-index --skip-worktree  [filename]       //將某個文件從git檢測中忽略
git update-index --no-skip-worktree [filename]     //取消
  • 統計
//統計倉庫里每個人的提交行數
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
  • ssh
    見gitoschina的教程,講得很詳細。--> git ssh

gui工具

git的圖像化管理工具有兩個是比較推薦用的,sourceTree以及GitKraken。個人比較喜歡GitKraken,所以下面會以Gitkraken為例介紹。在sourceTree上操作也是差不多的。

簡單操作

一些克隆倉庫,pull代碼,commit代碼,push代碼等操作相當簡單,就不多做介紹了。
如下圖

cherry pick

切換分支,然后在另一個分支上的某個commit上右擊,選擇cherry pick就可以把該commit,提交到當前分支。

stash

stash可以將所有的未提交更改暫存起來。本地代碼做了更改,可以先stash起來,然后pull更新,再次pop,stash。
在GitKraken里,stash也非常簡單,而且每次pull代碼時,GitKraken會自動幫我們進行,以下操作

  1. stash 更改
  2. pull 更新
  3. pop stash
  4. 手動處理沖突(如果有)

非常方便/

merge

在GitKraken上,merge分支很方便,直接將另一分支拖動到當前分支,即可合並

合並多個commit

有時提交了很多commit,比如有1,2,3,共三個commit,這三個commit都是為了實現某個功能而做的更改。那么我們可以把這三個commit合並成一個再進行提交。
操作,右擊第一個commit的前一個提交,選擇reset to this commit -> soft, 這樣就會把1,2,3,三個commit的更改合並在一起,然后再把這些更改重新提交一次即可。

參考

ignore file without using .gitignore


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM