git 初始化安裝以及git常用命令


新建一個站點文件夾: myweb;

安裝git 完成后,設置賬號,在命令行輸入:

git config --global user.name "php7"

git config --global user.email "php7@php.net"

 

執行命令初始化:git init;  將myweb文件夾變成git管理的目錄。

 

//現在開始拉取項目代碼:

git clone https://github.com/php7/phpdev.git

這樣就把項目代碼克隆到myweb文件夾中了。

現在開始開發:

添加或修改一個文件: index.php

功能開發完畢開始上傳:

git add index.php

git commit -m "修改index.php"

git push  提交新修改的文件到代碼庫。

提交完成后可以使用 git log   查看提交記錄

命名行 輸入  q  退出

輸入 命令:  git log -p  查看具體代碼修改情況

  注意: -紅色的代碼是你剛剛刪除的代碼;+綠色的代碼是你剛剛添加的代碼。

查看當前的提交情況:git status   看看添加了哪些文件,刪除了哪些文件,改動了哪些文件

假如你在開發中,修改了a.php文件,過了一會想看看你剛剛改動了哪些地方,則使用命令: git diff a.php  就可以查看具體更改的代碼;

 

比如你在開發中修改了好幾次,提價了好幾次代碼,可以使用命令: git log  查看你提交的記錄;git log命令顯示從最近到最遠的顯示日志,我們可以看到最近三次提交。

也可以使用命令: git log - -pretty=oneline   查看,這樣是吧每次提交的記錄號以一行一行的顯示出來。

如下:  

  $ git log --pretty=oneline
  1cffe5fbae504c968cd0486c851c7e761385cbdc 修改index.php登錄地址
  29eb0a1c1f353201b1b50f261d0daa 添加a.php文件
  445527bfad7c8c0e34bc8b19489e5 修改index.php注冊功能

我想把當前的版本回退到上一個版本,要使用什么命令呢?

可以使用如下2種命令,第一種是:git reset  - -hard HEAD^  那么如果要回退到上上個版本只需把HEAD^ 改成 HEAD^^ 以此類推。那如果要回退到前100個版本的話,使用上面的方法肯定不方便,我們可以使用下面的簡便命令操作:git reset  - –hard HEAD~100 即可。

注意:這只是將本地的版本進行了回退。但是遠程的版本庫里面的內容仍然是最新的版本。

如果想將本地的版本更新到最新的版本,執行命令:git pull 即可。相當於再從遠程拉取了最新的代碼。

或者:使用命令 git reflog  查看每次更改的內容的版本:如下所示:

$ git reflog
1cffe5f HEAD@{0}: pull: Fast-forward
29eb0a1 HEAD@{1}: reset: moving to head^
1cffe5f HEAD@{2}: commit: 第二次修改index.php
29eb0a1 HEAD@{3}: commit: 添加a.php文件

git reset  - -hard 1cffe5f   即可恢復到最新的版本,1cffe5f版本號

工作區:就是你在電腦上看到的目錄,比如目錄下testgit里的文件(.git隱藏目錄版本庫除外)。或者以后需要再新建的目錄文件等等都屬於工作區范疇。

 版本庫(Repository)工作區有一個隱藏目錄.git,這個不屬於工作區,這是版本庫。其中版本庫里面存了很多東西,其中最重要的就是stage(暫存區),還有Git為我們自動創建了第一個分支master,以及指向master的一個指針HEAD。

 

一:撤銷修改:

比如我現在在 index.php 文件里面增加一行 內容為 echo "66666"; ,

在我未提交之前,我不想添加這段代碼,(尚未執行git add index.php  ;  git commit ... )如果想恢復以前的版本,可以通過下面下幾種方法修改:

第一:如果我知道要刪掉那些內容的話,直接手動更改去掉那些需要的文件,然后add添加到暫存區,最后commit掉。

第二:我可以按以前的方法直接恢復到上一個版本。使用 git reset  -–hard HEAD^

第三:直接執行:git checkout  - -   index.php  就可以了。可以撤銷剛才你對index.php 的代碼修改。  

$ git checkout  - -   index.php

注意:命令git checkout - -  index.php   中的 — 很重要,如果沒有  - -  的話,那么命令變成創建分支了。

 

但是如果你在修改了index.php  文件在中添加 內容 echo "66666"; 並且執行了 git  add index.php  ; git commit -m "添加666";命令后、在執行git push之前,又不想修改index.php了,

這個時候可以執行命令:

$ git reflog
6e64ddd HEAD@{0}: commit: 添加666
1bec9be HEAD@{1}: commit: 第三次修改index.php  (這個是你需要恢復的版本號,也就是你未修改之前的版本)
1cffe5f HEAD@{2}: pull: Fast-forward

然后執行:

$ git reset --hard 1bec9be
HEAD is now at 1bec9be 第三次修改index.php

此時你就把本地的代碼恢復到 上一個版本了,(就是你沒有修改之前的版本,也就是撤銷了剛才的修改!)

注意:完成撤銷,同時將代碼恢復到前一commit_id 對應的版本 

刪除文件:

你在開發中添加並上傳了一個b.php 並且更新提交了git。此時想刪除b.php  。執行以下步驟:

1、 在本地直接刪除b.php

 2、執行命令:$ git rm b.php

        rm 'b.php'     可以使用 git  status查看當前的狀態

3、執行命令  git  commit -m "刪除b.php" 

4、執行命令:  git  push  即可。

此時遠程代碼庫,里面的b.php  已經被你刪除了。

分支:

創建並切換分支:

首先,我們來創建dev分支,然后切換到dev分支上。如下操作

$ git checkout -b dev
Switched to a new branch 'dev'

 

git checkout 命令加上 –b參數表示創建並切換,相當於如下2條命令

git branch dev   查看所有分支

git checkout dev  切換到dev分支

git branch查看分支,會列出所有的分支,當前分支前面會添加一個星號

 

現在你在dev分支中,添加一個dev.php ;執行

git add  dev.php 

git  commit -m "dev分支上添加dev.php"

git  push origin dev

$ git push origin dev   此時 遠程git代碼庫上多出來一個dev分支。

 

現在dev分支工作已完成,

現在我們切換到主分支master上, 

$ git checkout master
Switched to branch 'master'

繼續查看dev.php內容,執行命令: ll -a   ;發現在master分支下,並不顯示dev.php 。因為剛剛的dev.php 添加到了dev的分支上。

現在在master分支上可以 合並dev 分支,可以把dev分支上的內容合並到分支master上了,

使用如下命令 git merge dev 如下所示

$ git merge dev
Updating 8f2c28c..57ee7e5
Fast-forward
dev.php | 10 ++++++++++
1 file changed, 10 insertions(+)
create mode 100644 dev.php

合並之后 執行命令  ll   -a  查看文件,dev.php  顯示了出來。

git merge命令用於合並指定分支到當前分支上

 

刪除分支:

例如你想刪除dev分支:

$ git branch -d dev
Deleted branch dev (was 57ee7e5).

刪除后查看當前的分支: 

$ git branch
* master

查看分支:git branch   (顯示當前已經建立的所有分支,*表示當前所在的分支)

創建分支:git branch dev     //創建dev分支

切換分支:git checkout dev   //切換到dev分支上

創建+切換分支:git checkout –b dev   

合並某分支到當前分支:git merge dev     //將dev 分支與當前所在的分支合並。

刪除分支:git branch –d name   // git  branch -d  dev  :刪除dev分支

 

#沖突解決:

 假如我們 首先在master 分支下  在a.php 文件中 添加內容:  echo "我是在 master  分支上添加的";

   執行命令:git add a.php ;   git commit -m "master分支a.php 添加內容";     git  push origin master   (提交到遠程master分支上) 

然后在 首先在 dev  分支下  在a.php 文件中 添加內容:  echo "我是在 dev  分支上添加的";

  執行命令:git add a.php ;   git commit -m "dev分支a.php 添加內容";     git  push origin dev   (提交到遠程dev 分支上) 

此時我們切換到 master 分支 去合並dev  分支出現如下:

$ git merge dev
Auto-merging a.php
CONFLICT (content): Merge conflict in a.php   / /此處提示 a.php  在合並的時候 出現沖突了
Automatic merge failed; fix conflicts and then commit the result.       // 自動合並失敗;修復沖突,然后提交結果。

執行git  status  查看具體情況

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
You have unmerged paths.
(fix conflicts and run "git commit")

Unmerged paths:
(use "git add <file>..." to mark resolution)

both modified: a.php

no changes added to commit (use "git add" and/or "git commit -a")

我們打開a.php  查看里面的內容:

$ cat a.php
<?php

echo "添加a.php";


<<<<<<< HEAD
echo "wo zai master 分支上添加的";

=======
添加dev

echo "wo zai dev分支上添加的";
>>>>>>> dev


?>

 

上面紅色的內容為沖突的代碼。

 

Git用<<<<<<<,=======,>>>& gt;>>>標記出不同分支的內容,其中<<<HEAD是指主分支修改的內 容,>>>>>dev 是指dev 分支上修改的內容,

我們可以使用  vim a.php    修改下如下后保存:

$ cat a.php
<?php

echo "添加a.php";

echo "wo zai master 分支上添加的";

echo "wo zai dev分支上添加的";

?>

 

將沖突解決后,修改的文件更新發哦master分支上,執行以下命令即可:

git add a.php ; git commit -m " meger合並dev 刪除a.php 內的沖突內容" ;   git push origin master  ;

此時在master 分支上 合並dev  分支  ,解決沖突更新git后成功了!。

修改提交后,可以使用git  log  查看提交記錄:

$ git log
commit 0a52a0941162844f06ee591be
Merge: d06cf 43c65
Author: php7 <php7@php7.net>
Date: Wed Jun 13 22:13:46 2018 +0800

meger合並dev 刪除a.php 內的沖突內容

 

參考:http://blog.jobbole.com/78960/   

 

 

 

 

 

 

 

 

 


 

 


免責聲明!

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



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