git常用使用命令(親測,可以,自己的筆記)

一本 官方中文 書分享給大家(說明:本人多次閱讀,體會是容易入門,讀起來很順手,但是講的不深入)

    https://git-scm.com/book/zh/v2

 

一、git官方使用命令:

usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]


These are common Git commands used in various situations:


start a working area (see also: git help tutorial)
   clone      Clone a repository into a new directory
   init       Create an empty Git repository or reinitialize an existing one


work on the current change (see also: git help everyday)
   add        Add file contents to the index
   mv         Move or rename a file, a directory, or a symlink
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index


examine the history and state (see also: git help revisions)
   bisect     Use binary search to find the commit that introduced a bug
   grep       Print lines matching a pattern
   log        Show commit logs
   show       Show various types of objects
   status     Show the working tree status


grow, mark and tweak your common history
   branch     List, create, or delete branches
   checkout   Switch branches or restore working tree files
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   merge      Join two or more development histories together
   rebase     Forward-port local commits to the updated upstream head
   tag        Create, list, delete or verify a tag object signed with GPG


collaborate (see also: git help workflows)
   fetch      Download objects and refs from another repository
   pull       Fetch from and integrate with another repository or a local branch
   push       Update remote refs along with associated objects


'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.

 

二、日常使用命令以及操作流程:

 

cd haier //跳轉到本機指定目錄“haier” (空文件夾)

git clone ssh://stash.lezhuan.io:7999/zla/rnhry.git //  從服務器上clone 一份代碼 到“haier”文件夾中 ,項目名稱“hmanager”

cd hmanager

 

//接下來使用git 命令

git branch //master 查看本地分支,一般只有master,當前分之在master

git branch -a // 查看所有分支,包括遠程服務器上的分之

git checkout develop //切換分支

創建分支:git branch “分支名”  //  注意你當前在本地哪個分支上用該命令,也就是從本地哪個分支創建分支出來

把本地創建的分支推到服務器上git push origin “分支名”

拉取遠程分之代碼並且創建以該代碼的本地新分支: $ git checkout -b 本地分支名 遠程分支名  //git checkout -b feature/2.0.8.2  remotes/origin/feature/2.0.8.2

 

創建本地倉庫,添加代碼,提交到遠程倉庫
1.git init 初始化
2.git add .   添加所有文件
3.git commit -m "first commit"  提交文件並備註
4.git remote add origin [email protected]:username/progress.git  //設置上傳地址
5.git push -u origin master  //推送本地文件到遠程服務器上 默認master分支
 

 

//編輯了文檔

git status //查看你本地所有的更改

git add . //添加所有更改文檔 , 注意這個“.”

git add "當前文件完整路徑" // 添加某一文件

git commit -am ‘這次的更新內容’  //將上一步add的文檔進行commit ,在本地對更改文檔進行提交

 

git pull //從服務器拉最新代碼下來

git push //將本地提交push到服務器,結束。

 

 

git checkout  .  // 將本地未add的代碼全部回滾原來版本,但是值得注意的是新添加的文件不會刪除得手動刪除,撤銷(還原)對本地某個文件夾或者子文件夾中,所有文件的文件的修改: 切換到指定目錄,然後: git checkout . //  注意後面的點。

git reset head . // 撤銷本地的add

 

// 撤銷本地的commit,沒有提交到服務器的 

1.git log //查看commit 記錄 

2.git reset --hard “commit_id”  // 撤銷commit,git log(查看commit_id的命令)

 

//從服務器pull之後,自動跟本地代碼進行merge,若沒有衝突,進行下一步的push;若合併後有衝突,會報conflict錯誤,找到本地衝突的文件,進行修改,修改完成,繼續 git add . -> git commit -am ‘merge from develop’ -> git pull -> git push

 

從develop合併到master

1、git checkout develop//切換到被合併分支

2、git pull//拉取被合併分支的最新代碼

3、git checkout master//切換到主分支

4、git pull//拉取主分支的最新代碼

5、git merge develop //  當前在(master分支上)哪個分支上,用“merge”  誰就是 master 合 develop

// 以上會將被合併分支 合併到 主分支之後,代碼自動add和commit

//------------如果報下面這個- start---------------//

//Please enter a commit message to explain why this merge is necessary,
especially if it merges an updated upstream into a topic branch.
 Lines starting with '#' will be ignored, and an empty message aborts
 the commit.

//處理方案:按 ESC(多按幾次),再終端敲“:q”就好了,拉當前最近代碼 pull ,再push,

//----------------------end---------------------------//

6、查看有沒有衝突,解決衝突

7、若有衝突並且解決之後,git add . -> git commit -am ‘merge from develop’, 若沒有衝突,這步省略

8、git pull

9、git push

10、打tag

 1)查看本地分支:

dahaideMBP:zhuanle-android dahai$ git branch
  2.0.0 
* master // 帶*號的顯示的是當前使用的分支

2)拉最新代碼
dahaideMBP:zhuanle-android dahai$ git pull
Already up-to-date.

3)打tag
dahaideMBP:zhuanle-android dahai$ git tag -a release-2.0.2 -m '2.0.2 release tag'

    -a   //是add的簡寫,release-2.0.2 標籤名

    -m //是標籤的註釋

4)把tag push 到服務器上
dahaideMBP:zhuanle-android dahai$ git push --tags

5)查看tag

 git tag —list

11、拉取服務器最新版本庫

       git fetch //就能獲取到服務版本庫、分支

 

一旦遠程主機的版本庫有了更新(Git術語叫做commit),需要將這些更新取回本地,這時就要用到git fetch命令。

$ git fetch <遠程主機名>

上面命令將某個遠程主機的更新,全部取回本地。

默認情況下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。

$ git fetch <遠程主機名> <分支名>

比如,取回origin主機的master分支。

$ git fetch origin master

所取回的更新,在本地主機上要用”遠程主機名/分支名”的形式讀取。比如origin主機的master,就要用origin/master讀取。

刪除本地分支: 刪除分支B

1)切換換到 A分支

2)git branch -d B // -d  是delete 的簡寫,B是要刪除的分支名

本地刪除遠程分支: 遠程分支 feature-2018116-init

git push origin  --delete feature-2018116-init

3. git 如何刪除緩存的遠程分支列表 

   git fetch -p  // p 是單詞  prune 簡寫

例子:

    1.撤銷(還原)對本地文件的修改:   git  checkout -- <filename> // git checkout -- a.java 

    2. 撤銷(還原)對本地某個文件夾或者子文件夾中,所有文件的文件的修改: 切換到指定目錄,然後: git checkout . //  注意後面的點。

  3.git關聯本地與遠程分支 

當我們在本地新建一個叫devtest的分支的時候,我們希望他與git遠程上的某個分支進行關聯。

假設遠程上的那個分支也叫devtest,如果我們直接去pull代碼,會報下面的錯
提示我們需要用 –set-upstream 去關聯這兩個分支,命令是

git branch --set-upstream devtest origin/devtest

當你執行這句命令之後,他又會提示你–set-upstream要換成–set-upstream-to命令

–set-upstream-to 在新版本git中已經替代了 –set-upstream, 並且後面跟隨的兩個參數要對調一下,如下面命令

      git branch --set-upstream-to origin/devtest devtest 
遠程分支在前,本地分支在後。關聯之後就可以正常的pull代碼了
 

git推送本地分支到遠程分支

場景

有時候我們開發需要開一個分支,這樣可以有效的並行開發.

開分支有兩種方式:

  • 一種是在遠程開好分支,本地直接拉下來;
  • 一種是本地開好分支,推送到遠程.

遠程先開好分支然後拉到本地

git checkout -b feature-branch origin/feature-branch    //檢出遠程的feature-branch分支到本地

本地先開好分支然後推送到遠程

$  git checkout -b feature-branch    //創建並切換到分支feature-branch  
$  git push origin feature-branch:feature-branch    //推送本地的feature-branch(冒號前面的)分支到遠程origin的feature-branch(冒號後面的)分支(沒有會自動創建)

 

 

 

git問題記錄--如何從從detached HEAD狀態解救出來

字數741 閱讀4909 評論5 喜歡9

今天使用git的時候在終端發現這樣一條信息
HEAD detached at head

分析

心裏一驚,艾瑪這是什麼狀態?
其實我們知道,git checkout本質上是修改HEAD裏面的內容來讓它指向不同分支的,而HEAD文件指向的分支就是我們當前的分支,但是有時候HEAD不會指向任何分支,嚴謹的說是HEAD指向了一個沒有分支名字的修訂版本,此時恭喜你,已經處於遊離狀態了(detached HEAD).這時候我們在進行commit操作不會提交到任何分支上去.

這個時候輸入git status查看當前狀態發現我沒有在任何本地分支上也驗證了剛纔的猜想,而這時候我又作死的進行了commit操作,git提示我


Warning: you are leaving 1 commit behind, not connected to
any of your branches:

  fef4501 interrationRecord page completed

If you want to keep them by creating a new branch, this may be a good time
to do so with:

 git branch <new-branch-name> fef4501

然後我歡天喜地的git checkout ask_11_16切換到工作分支以爲萬事大吉,艾瑪坑爹啊,我特麼辛辛苦苦寫了一天的代碼呢?不過這時候我們回看上面那段提示,智能的git告訴我如果我還想要這次提交的話,可以創建一個新的分支,同時把本次提交的id告訴了我:fef4501.
那麼這時候我已經有了一個思路:

  1. 基於本次提交創建一個臨時分支.
  2. 然後merge到我當前工作分支.
  3. 刪除臨時分支

實操

基於本次提交創建臨時分支

輸入
$git branch temp fef4501
使用git branch 分支名 操作ID 這句命令能夠創建一個新的分支,但要注意此時我們還沒有切換到這個分支上,這個分支上面代碼跟我剛纔提交完之後的一樣.

切換到工作分支併合並代碼

輸入
$git checkout ask_11_16
意味着我已經切換到ask_11_16分支,這個分支是我之前想要提交的分支.
然後
$git merge temp
這行命令過後我們已經上次commit合併到ask_11_16上了,此時終端狀態爲
Your branch is ahead of 'origin/ask_11_16' by 1 commit.
我們只需要$git push即可把本次提交push到遠程分支.
這時候檢查代碼,perfect!正式我們想要的狀態.

刪除temp分支

大功告成,至於temp分支已經沒有了利用價值,本着過河拆橋的精神我不得不輸入
$git branch -d temp
來刪除temp分支.

git是一個很優秀的版本控制工具,利用得當能讓我們在團隊協作時候如魚得水,但是萬一有操作失誤,也會讓很多不熟悉git命令的人各種發愁,下面貼一個git命令大全,非常實用

9.jpg

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章