1. 程式人生 > >git 基本操作命令,衝突解決

git 基本操作命令,衝突解決

git 安裝

Git和SVN一樣,都需要建立一個伺服器的,他們都可以建立自己的版本管理伺服器。對於個人和小團隊來說,使用託管伺服器可能更合適。
常見的有Github 和 Bitbucket。Github沒有個人免費倉庫使用,程式碼放上去就是開源的。Bitbucket的個人倉庫相關頁面已經基本漢化了。註冊流程也比較簡單。
MAC上最好的GIT免費GUI工具是SourceTree(沒有之一)。此外,最好的GIT程式碼開源網站是GitHub,最好的GIT程式碼私有庫是BitBucket。
安裝過程:
1,下載Git installer,地址;http://git-scm.com/downloads


2,下載之後開啟,雙擊.pkg安裝
3, 開啟終端,使用git –version或者which git命令檢視安裝版本,有就是安裝成功了
4,建立一個全球使用者名稱、全球郵箱,設定全域性配置
git config –global user.name “使用者名稱”
git config –global user.email “對應郵箱”
5、進入你的專案目錄
轉載於 http://www.jianshu.com/p/e9dd2849cfb0

cd d:/wamp/www/wap              //首先指定到你的專案目錄下
git init
touch README.md
git add
README.md git commit -m "first commit" git remote add origin https://github.com/youtname/vscode.git //用你倉庫的url,vscode.git中vscode為倉庫名稱,使用時必須先建立 git push -u origin master //提交到你的倉庫

一、Add & Commit

1、add

  1. git init

    初始化一個 Git 倉庫(repository),即把當前所在目錄變成 Git 可以管理的倉庫。

  2. git add 檔案

    把檔案新增到 暫存區(stage),可被 track 追蹤紀錄下來。可多次使用來新增多個檔案

  3. git add *

    新增所有修改到暫存區

  4. git add .

    暫存新增加的和修改的檔案,不包括已刪除的檔案。即當前目錄下所有檔案

  5. git add -u

    暫存修改的和刪除的檔案,不包括新增加的檔案

  6. git add -i

    互動式新增檔案到暫存區

  7. git add -p

    暫存檔案的一部分

2、commit

  1. git commit -m "本次提交說明"

    一次性把暫存區所有檔案修改提交到倉庫的當前分支。注意:提交資訊可為中文也可為英文,若為英文則通常用一般現在時。如果不加引數 -m 則會跳轉到編輯器強制填寫提交說明資訊。

  2. git commit -am "本次提交說明"

    Git 就會自動把所有已經跟蹤過的檔案暫存起來一併提交,從而跳過 git add 步驟,引數 -am 也可寫成 -a -m。“在 oh-my-zsh 下,直接用 gcam “message” 就搞定了”

  3. . git commit --amend

    重新提交,最終只會有一個提交,第二次提交將代替第一次提交的結果。尤其適用於提交完了才發現漏掉了幾個檔案沒有新增,或者提交資訊寫錯了的情況。

  4. git commit --amend --reset-author

    在上一次 commit 之後想重新更新一下時間。amend 實際上修改了上一個 commit。所以如果已經 push 了上一個 commit,請儘量不要 amend。如果一定要 amend 已經 push 了的 commit,請確保這個 commit 所在的 branch 只有你一個人使用(否則會給其他人帶來災難),然後在 amend 之後使用 git push –force。只要多加小心,該命令貌似沒什麼卵用。

  5. git commit -p
    commit 檔案的一部分,適合工作量比較大的情況。之後,Git 會對每塊修改彈出一個提示,詢問你是否 stage,按 y/n 來選擇是否 commit 這塊修改,? 可以檢視其他操作的說明。

二、Diff & Status

1、Status

  1. git status

    顯示當前倉庫的最新狀態:

    • 工作區就是“乾淨的”,即沒有新的修改
    • 最上面顯示的是在 staging area,有未提交檔案時,未被被 commit 的檔案;
    • 中間顯示沒有 stage 的修改了的檔案,最下面是新的還沒有被 Git track 的檔案(add)
  2. git status -s 或 git status --short

    狀態簡覽。輸入此命令後,有如下幾種情況

    • 檔案前面有 ?? 標記 新新增的未跟蹤(add)
    • 這裡寫圖片描述
    • 第一個左邊的 M 表示該檔案被修改了並放入了暫存區。
    • 兩個MM 該檔案被修改了但是還沒放入暫存區

2、Diff

  1. git diff

    檢視工作區中的修改。

  2. git diff --staged 或 git diff --cached

    檢視暫存區中的修改。

  3. git diff <commit id1> <commit id2>

    比較兩次 commit 之間的差異。

  4. git diff <branch1> <branch2>

    在兩個 branch 之間比較。

  5. git diff 檔案

    檢視指定檔案具體修改了哪些內容。

  6. git show

    檢視最後一個 commit 的修改。

  7. git show HEAD~3

    檢視倒數第四個 commit 的修改,HEAD~3 就是向前數三個的 commit,即倒數第四個 commit

  8. git show deadbeef

    檢視 hash 為 deadbeef 的 commit 的修改。

  9. git blame 檔案

    檢視誰什麼時間改了哪些檔案。

三、建立與合併分支

  1. git checkout -b dev

    建立dev分支,然後切換到dev分支

  2. git branch

    檢視當前分支,會列出所有分支,當前分支前面會標一個*號。

  3. git checkout dev

    切換回dev分支

  4. git merge dev

    合併指定分支到當前分支

  5. git branch -d dev

    刪除dev分支

三、解決衝突

1、使用git pull檔案時和本地檔案衝突

場景:在使用git pull程式碼時,經常會碰到有衝突的情況
簡要:主要是使用git stash命令分成以下幾個步驟進行處理

  1. git stash

    先將本地修改儲存起來

  2. git stash list

    可以看到儲存的資訊, [email protected]{0}就是剛才儲存的標記

  3. git pull

    獲取內容

  4. git stash pop [email protected]{0}

    還原暫存的內容

  5. 系統提示如下類似的資訊,系統自動合併修改的內容,但是其中有衝突,需要解決其中的衝突

    Auto-merging c/environ.c
    CONFLICT (content): Merge conflict in c/environ.c

  6. 解決檔案中衝突的的部分

    這裡寫圖片描述

<<<<<<< Updated upstream 和=====之間的內容就是pull下來的內容
====和stashed changes之間的內容就是本地修改的內容。自行確定需要的內容。解決完成之後,就可以正常的提交了。

2、分支合併產生衝突

分支的快速合併命令:

git merge feature1
  • 新的feature1分支,繼續我們的新分支開發 修改readme.txt最後一行,改為:
Creating a new branch is quick AND simple.

在feature1分支上提交:

$ git add readme.txt 
$ git commit -m "AND simple"
[feature1 75a857c] AND simple
 1 file changed, 1 insertion(+), 1 deletion(-)
  • 切換到master分支:
    $ git checkout master
    Switched to branch 'master'
    Your branch is ahead of 'origin/master' by 1 commit.

Git還會自動提示我們當前master分支比遠端的master分支要超前1個提交

在master分支上把readme.txt檔案的最後一行改為:

Creating a new branch is quick & simple.

在master 分支上提交

$ git add readme.txt 
$ git commit -m "& simple"
[master 400b400] & simple
 1 file changed, 1 insertion(+), 1 deletion(-)

master分支和feature1分支各自都分別有新的提交,

這裡寫圖片描述

這種情況下,Git無法執行“快速合併”,只能試圖把各自的修改合併起來,但這種合併就可能會有衝突

$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

必須手動解決衝突後再提交。git status也可以告訴我們衝突的檔案

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both modified:      readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

直接檢視readme.txt的內容

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,我們修改如下後儲存:

Creating a new branch is quick and simple.

再次提交

$ git add readme.txt 
$ git commit -m "conflict fixed"
[master 59bc1cb] conflict fixed

這裡寫圖片描述

通過 git log 檢視到分支的合併情況,

$ git log --graph --pretty=oneline --abbrev-commit
*   59bc1cb conflict fixed
|\
| * 75a857c AND simple
* | 400b400 & simple
|/
* fec145a branch test
...

最後刪除feature1分支

$ git branch -d feature1
Deleted branch feature1 (was 75a857c).

四、推送到遠端倉庫

1、Remote

  1. git remote

    檢視已經配置的遠端倉庫伺服器

  2. git ls-remote

    獲得遠端引用的完整列表

  3. git remote add <shortname> <url>

    新增並關聯一個遠端庫 shortname 一般是 origin,也可以是其他字串,用來代替整個 url。

  4. git remote rename old_name new_name

    重新命名一個遠端倉庫的簡寫名。

  5. git remote rm <remote-name>
    移除一個遠端倉庫。

2、push

  1. git push -u origin master

    關聯後,使用該命令第一次推送 master 分支的所有內容,後續再推送的時候就可以省略後面三個引數了,其中引數 u 代表上游(upstream)的意思。

  2. git push origin 遠端分支(通常是 master)

    推送時也有可能發生衝突,在他人推送之後是不能立即推送自己的修改的,可能會覆蓋他人的工作,所以必須先拉取(pull)別人的修改合併(merge)之後才能推送

  3. git push <remote-name> <commit SHA>:<remote-branch_name>

    push 一部分 commit。例如:git push origin 9790eff:master 即為 push 9790eff 之前的所有 commit 到 master

相關推薦

git 基本操作命令,衝突解決

git 安裝 Git和SVN一樣,都需要建立一個伺服器的,他們都可以建立自己的版本管理伺服器。對於個人和小團隊來說,使用託管伺服器可能更合適。 常見的有Github 和 Bitbucket。Github沒有個人免費倉庫使用,程式碼放上去就是開源的

git基本操作命令gitgit基本命令

【git】git的基本命令   001、初始化倉庫,建立git倉庫 git init   002、配置個人資訊 git config --global user.name <名字&

Git基本操作、分支管理、衝突解決

基本操作 git init 建立一個 Git 倉庫 git clone [url] 拷貝一個 Git 倉庫到本地 git add [file_name] git add 命令可將該檔案新增到快取 git commit -m "備註資訊" 使用 git add 命令將想要快照的內容寫入快取區,

git入門學習一(git安裝,增刪改查基本操作命令

git 工作區 暫存區 版本庫 在當前目錄新建一個Git程式碼庫 git init (會多出.git資料夾) 設計提交程式碼時的使用者資訊 :git config --global  user.name zhangsan    git config --glob

git操作衝突解決

應用場景,任哥,我兩個人共同修改了git專案上的一個檔案。zsh命令列模式 準備工作 簡寫命令解釋 gl=git pullgp=git pushgst=git statusgcmsg=git commit -m 操作演示檔案 test_git.py 切換到分級developer git checkou

Git --- 基本操作以及Git 特殊命令,公司常用命令

Git安裝方式: window安裝方式。 在 Windows 平臺上安裝 Git 同樣輕鬆,有個叫做 msysGit 的專案提供了安裝包,可以到 GitHub 的頁面上下載 exe 安裝檔案並執行: 安裝包下載地址:http://msysgit.github.io/ 完成安裝之後,就可以使用命令列的

Git基本操作、分支管理、沖突解決

保留 merge -h out 暫存區 diff 使用 希望 分支 基本操作 git init 創建一個 Git 倉庫 git clone [url] 拷貝一個 Git 倉庫到本地 git add [file_name] git add 命令可將該文件添加到緩存 git c

GIT基本操作命令與使用流程

一、Git的基本介紹            git是目前世界上最先進的分散式版本控制系統。git是 LinusTorvalds 為了幫助管理Linux 核心開發而開發的一個開放原始碼的

android git .gitignore 忽略檔案基本配置 經常衝突解決

本文介紹android開發在使用git多人開發時出現各種更新衝突、無法執行、雖然添加了忽略但仍然衝突等問題 1.首先刪除其他所有的.gitignore檔案,只留下根目錄的(你只需要一個) 2.配置如下 *.iml *.bat *.apk # app用到zip的請忽略 *.zip # 自定

Git版本管理之旅(二)—— Git基本操作流程及相關命令

本章繼續上章的型別,介紹基於空專案的版本庫操作,本教程基於Ubuntu 建立版本庫 新增檔案 修改檔案 刪除檔案 版本回退 基本概念 管理以及撤銷修改 新增到遠端倉庫 從遠端倉庫克隆 建立版本庫 版本庫又名倉庫,英文名repository,可以

git基本常用命令操作

轉載:http://blog.jobbole.com/78960/ Git基本常用命令如下:    mkdir:         XX (建立一個空目錄 XX指目錄名)    pwd:          顯示當前目錄的路徑。 ----注意這裡前面不用輸入git  ,直接

Linux基本操作命令

程序 詳細 位置 tool -1 擁有 Owner ss命令 單位 一、 ls ls最常用的參數有三個: -a -l -F 1、ls -a Linux上的文件以.開頭的文件被系統視為隱藏文件,僅用ls命令是看不到他們的,而用ls -a除了顯示 一般文件名外,連隱藏文

HADOOP基本操作命令

itl mapred lang reduce 磁盤 family home file cas Hadoop基本操作命令 在這篇文章中,我們默認認為Hadoop環境已經由運維人員配置好直接可以使用。假設Hadoop的安裝目錄HADOOP_HOME為/home/admin/ha

Linux的基本操作命令

linux cat inux 輸入 指定 修改 回車 txt文件 登錄密碼 mount 查看掛載目錄 cat ~ 查看文件下的內容 touch ~ 創建一個文件 echo 1234>>123.txt 創建一個內容為1234的123txt文件

2017-7-18-每日博客-關於Linux基本命令CnetOS7系統基本操作命令.doc

空間使用 正在 run 個數 linux oot disable 輸出 column 1.root/下 cat anaconda-ks.cfg 確定是否裝base軟件組 yum groupinstall base 安裝base組ifconfig 命令就可以使用了或者

git 常用操作命令

進行 歷史 指定 demo 新的 地址 克隆 保存 txt文件 記錄下工作中,常用的Git命令操作,一個項目經常是多人協作開發,使用好git是開發人員必備的技能,下面記錄下一些基本的git操作,後續會記錄git解決沖突,合並分支,回滾,tag操作等。 克隆項目 - git

DOS當中的基本操作命令,如何切換磁盤,如何查看文件和文件夾,如何清屏,進入文件夾的命令,javac是什麽意思,作用是什麽?DOS如何建文件夾?退出文件夾?

ava mpi dos compile 通配符 pil jdk 使用 onf 如何切換磁盤:使用盤符+:舉例 d: 如何查看文件和文件夾 dir/w 如何清屏: cls (clear screen) 進入文件夾的命令cd ,舉例cd JDK javac是什麽意思,c 是co

Git基礎入門(四)Git基本操作2

git 操作 基礎忽略文件: 在實際開發過程中總有些文件無需納入Git的管理,比如日誌文件、臨時文件等 在這種情況下,我們可以在工作目錄中創建一個名為.gitignore的文件,列出要忽略的文件名或者表達式 例:cat .gitignore *.[oa]

筆記:git基本操作

基本概念 位置 bar 回退 let 管理 文件夾 私有 推送 原文: http://www.cnblogs.com/pingwen/p/8098035.html 1. 快速入門的基本概念 相比SVN,TFS等集中式的版本管理系統,GIT分布式管理最重要的理

Git 基本操作

gitGit 基本操作Git 的工作就是創建和保存你項目的快照及與之後的快照進行對比。本章將對有關創建與提交你的項目快照的命令作介紹。獲取與創建項目命令git init用 git init 在目錄中創建新的 Git 倉庫。 你可以在任何時候、任何目錄中這麽做,完全是本地化的。在目錄中執行 git init,就