git 常用操作

拉代碼

git clone ssh://user-name@url

獲取遠程信息

git fetch (--all)

更新代碼

git pull (--rebase| -r)
//(pull 表示把遠程倉庫的更新拉下來, --rebase 雖然是可選項, 但是一般都建議一起使用,這里涉及到 “基”的概念。

分支

切分支

代碼拉下來后默認是在master分支, 需要用 git checkout ref_name切過去

列分支

git branch 列出本地分支
git branch -r列出遠程分支

切分支

``git checkout branch_name (執行命令前本地不能有未緩存的提交,否則失敗)

新建分支

git branch 'branch_name'
git checkout -b 'branch_name'  // 執行完后會立即切換到新分支
git branch 'branch_name' 'origin/branch_name' //新建遠程分支 
git checkout branch_name (等價于 git checkout  -b 'branch_name'  'origin/branch_name' )
//使用遠程分支,并在本地建立branch

刪除本地分支

git branch -D 'branch_name' //大寫D表示強制刪除

本地分支與遠程分支的對應

特殊情況下,執行 git pull 命令時會提示找不到對應的遠程分支, 需要用 git branch --set-upstream-to=<upstream>命令指定一個遠程分支.

顯示遠程分支的url

//if referential integrity has been broken:
git config --get remote.origin.url

//If referential integrity is intact:
git remote show origin

//本地git與遠程服務器綁定
git remote add origin git@github.com:xxx.git

提交

本地提交

  • 一般都用圖形化工具 citool.用git citool命令可調起。
  • 命令行的方式:
 git add // 把文件加到版本庫的管理中 ,執行完后文件在緩存區
 git add --all //將所有文件放入stage中,包括新增加的文件
 git rest // unstaged all files
 git commit -m 'msg' //將stage中文件提交
 git commit -am 'msg' //將modify和 stage 中文件提交,不包括不在stage中的新增文件
 git commit --amend -m‘msg’ 將本次提交和上次提交合并。在本地的提交中使用,還沒有push到服務器中

推送到服務器

git push 
git push origin HEAD:branch_name //本地分支名與遠程名稱不對應時候
git push origin HEAD:refs/for/ref_name //推送到gerrit

注意1:HEAD在LINUX下需要大寫
注意2: 不要忘記加 HEAD:refs/for/ 否則有可能會創建一個新分支。

沖突的解決

命令:

git mergetool 'file_path'

git 對比

git difftool --dir-diff(-d) //git open all diff files 
git difftool -d HEAD //stage 中files對比
git difftool -d sha sha^1 // 提交sha的文件變更

git svn

git svn  fetch // 更新svn代碼
git svn rebase //更新本分支head到最新

tag

打tag

命令:

git tag V_1.0.0.0 -m “version 1.0”

一般每編一次發布版,都會打上一個tag

將tag推送到遠程

git push origin tag_name

注意: 推送到遠程的TAG必須得有日志信息,對應于上面 -m 參數后的內容。

gitk使用

查看分支

gitk // 查看當前本地分支
gitk ref_name //查看其他分支
gitk origin/ref_name //查看某個遠程分支
gitk --all //查看所有分支

本地修改

常用命令

git reset [--hard|--soft|--mixed] [revision] //reset命令只對入庫的文件有效,
git clean –fd //對未入庫的文件,可使用 git clean –fd 清除
git reset --hard //回退所有的內容

//可以回退某一個提交,這個操作相當于是把當時那個提交逆向PATCH了一次。
//操作完成后,需要COMMIT到倉庫。
git revert –n sha1-id
//回退某一次的提交某一個文件
git checkout sha1-id file (file1...)


git stash

//工作到一般時有緊急任務時, 配合 
git stash
git stash pop
git stash save -m'log'
git stash -p //stash 某一文件
// y - stash this hunk
// n - do not stash this hunk
// q - quit; do not stash this hunk or any of the remaining ones
// a - stash this hunk and all later hunks in the file
// d - do not stash this hunk or any of the later hunks in the file
// g - select a hunk to go to
// / - search for a hunk matching the given regex
// j - leave this hunk undecided, see next undecided hunk
// J - leave this hunk undecided, see next hunk
// k - leave this hunk undecided, see previous undecided hunk
// K - leave this hunk undecided, see previous hunk
// s - split the current hunk into smaller hunks
// e - manually edit the current hunk
// ? - print help// 
git stash clear // delete all stashes at once

git 提取patch.

  1. 可以先使用git citool本地提交。
  2. git format-patch -w head~1
  3. 使用 git reset --hard 撤銷本地提交.
  4. 使用gitk查看是否撤銷本地提交。
  5. 應用patch.
git diff --binary > xxx.patch //生成patch
git apply xxx.patch   //好用
git am xxxxxx.patch   //不好用.

git 回退

git reset HEAD~1
git reset HEAD^

(master分支向前回退一個提交。gqg:回退本地提交,恢復到提交前更改狀態, 或者用:git reset HEAD~1 1表示回退一次提交,N表示回退N次提交).

  • 只要有.git目錄 就可以使用git reset --hard 把代碼恢復出來。

git 修改只有大小寫區別的文件

git mv (--force) myfile MyFile
(mv: allow renaming to fix case on case insensitive filesystems)

revert某個提交:

  1. 使用gitk, 查看要revert的提交,把SHA1 ID復制下來.
  2. git revert -n xxxxxxxxxxxxxxxxxxxxxxxxxxxx
  3. git citool 提交然后push.

cherry pick

git cherry-pick "branch_name"  //cherry pick "branch_name" 最上方修復,并提交
git cherry-pick "sha-id"  //cherry pick 某一次提交

回退制定版本

git checkout 'SHA' //回退到制定'sha'值

git 配置

  1. 修改git默認的編輯器nano為vim的方法git config --global core.editor vim
  2. 指定全局 ignore 文件 git config --global core.excludesfile '/Users/xx/.gitignore_global'
  3. 修改某個git庫下的用戶名和郵箱
git config user.name 'user-name'
git config user.email 'email'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 常用命令: 查看、添加、提交、刪除、找回,重置修改文件 git help # 顯示command的help gi...
    even_cheng閱讀 295評論 0 3
  • 獲取與創建項目 創建倉庫的途徑有:在本地已有的目錄,初始化一個新的;克隆復制一份別人的項目。 git init 在...
    daking閱讀 6,620評論 3 48
  • 參考文章 1、 獲取幫助 有這三種方法 2、 取得項目的git倉庫 初始化一個新倉庫 用Xcode的同學就不要...
    劉大帥閱讀 6,927評論 0 42
  • 今天讀了一篇簡友的文章《討好者》,分析得比較透徹。其中很多內容都感同身受,曾曾經約數十載都是在做討好者。過得不開心...
    下一秒先生閱讀 133評論 0 0
  • 經過北美置業科普系列之后,相信各位親愛的讀者們對在美國買房或多或少有了一定的概念。(什么,還沒有讀?親,熱門文章里...
    精彩美游閱讀 240評論 2 0