使用 git 託管代碼

在線練習 :css

 

https://learngitbranching.js.org/html

 

一、 下載安裝好 git 客戶端git

二、 找一個家代碼託管平臺shell

我用 coding.net,註冊個帳號,建一個空項目緩存

而後打開安裝好的 git bash 客戶端,使用 git clone 命令克隆下遠程倉庫的項目bash

 

而後cd 進入 本地倉庫地址,把 你本身的 代碼粘貼進去,手動命令都可markdown

接着,在本地倉庫裏 git add 那些新文件,而後 git commit -m "此次修改信息" 提交到本地倉庫網絡

 

最後,使用 git push 便可推送到遠程倉庫啦!curl

 

 有空再看看 source Treeide

修改遠程倉庫 git 地址

git remote set-url origin http://xxx////.git

```

解決一些問題

git 版本太低

sudo yum update nss curl  # nss爲名稱解析和認證服務 curl爲網絡請求庫

``` 

 

配置 .gitignore 文件 忽略提交文件及文件夾

target/
*.iml
.idea/
readme.txt
startML.py
src/main/test/
.project
.settings

 

強制覆蓋本地代碼

git fetch --all

git reset --hard origin/master

git pull

git經常使用命令--持續更新

 

git經常使用命令:

  • git init //初始化本地git環境
  • git clone XXX//克隆一份代碼到本地倉庫
  • git pull //把遠程庫的代碼更新到工做臺
  • git pull --rebase origin master //強制把遠程庫的代碼跟新到當前分支上面
  • git fetch //把遠程庫的代碼更新到本地庫
  • git add . //把本地的修改加到stage中
  • git commit -m 'comments here' //把stage中的修改提交到本地庫
  • git push //把本地庫的修改提交到遠程庫中
  • git branch -r/-a //查看遠程分支/所有分支
  • git checkout master/branch //切換到某個分支
  • git checkout -b test //新建test分支
  • git checkout -d test //刪除test分支
  • git merge master //假設當前在test分支上面,把master分支上的修改同步到test分支上
  • git merge tool //調用merge工具
  • git stash //把未完成的修改緩存到棧容器中
  • git stash list //查看全部的緩存
  • git stash pop //恢復本地分支到緩存狀態
  • git blame someFile //查看某個文件的每一行的修改記錄()誰在何時修改的)
  • git status //查看當前分支有哪些修改
  • git log //查看當前分支上面的日誌信息
  • git diff //查看當前沒有add的內容
  • git diff --cache //查看已經add可是沒有commit的內容
  • git diff HEAD //上面兩個內容的合併
  • git reset --hard HEAD //撤銷本地修改
  • echo $HOME //查看git config的HOME路徑
  • export $HOME=/c/gitconfig //配置git config的HOME路徑

 

 

團隊協做git操做流程:

  • 克隆一個全新的項目,完成新功能而且提交:
  1. git clone XXX //克隆代碼庫
  2. git checkout -b test //新建分支
  3. modify some files //完成修改
  4. git add . //把修改加入stage中
  5. git commit -m '' //提交修改到test分支
  6. review代碼
  7. git checkout master //切換到master分支
  8. git pull //更新代碼
  9. git checkout test //切換到test分支
  10. git meger master //把master分支的代碼merge到test分支
  11. git push origin 分支名//把test分支的代碼push到遠程庫
  • 目前正在test分支上面開發某個功能,可是沒有完成。忽然一個緊急的bug須要處理
  1. git add .
  2. git stash
  3. git checkout bugFixBranch
  4. git pull --rebase origin master
  5. fix the bug
  6. git add .
  7. git commit -m ''
  8. git push
  9. git checkout test
  10. git stash pop
  11. continue new feature's development
  • git工做流

 

 

 

git clone url -b <branch>

 

git log --pretty=oneline

git reflog

git checkout -- readme.txt 

git reset --hard HEAD^

git reset --hard HEAD~100

git reset --hard f8c9beb

 

# 比較工做區與暫存區間 某個文件的區別

git diff HEAD -- readme.txt

 

要關聯一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git

關聯後,使用命令git push -u origin master第一次推送master分支的全部內容;

 

 

git tag -a v2.0 -m "version 2.0 released" d7a70c9 

 

git log --author="Frank Li"

 

看誰提交最多

git shortlog -sn

 git shortlog -sn --since='10 weeks' --until='2 weeks'

 

小小的舉動, 大大的溫暖

git config --global alias.praise blame

 

git for-each-ref --count=10 --sort=-committerdate refs/heads/ --format="%(refname:short)"

這將顯示咱們工做的最後10個(--count=10)分支,按照最後一次在使用的時間排序。它只顯示咱們本地的分支(refs/heads/),同時顯示的格式更友好 --format。

 

 

 

 

$ git shortlog -sn

80 Harry Roberts

34 Samantha Peters

3 Tom Smith

這個 shortlog 命令是 git log 的總結摘要,-n 將根據每一個做者的提交數而不是做者字母順序對輸出進行排序。

上面顯示了項目生命週期的全部commit,可是若是您想查看在指定的時間內有多少人完成,可使用 --since和--untilflags:

$ git shortlog -sn --since='10 weeks' --until='2 weeks'

59 Harry Roberts

24 Samantha Peters

我把它設置別名 $ git stats.

表揚

Git有一個很是有用的 blame 功能,容許咱們查看某段特定的代碼段是由哪些開發人員負責更改的:

# 找出這個button的CSS文件第5-10行是誰改的:

$ git blame -L5,10 _components.buttons.scss

blame這樣的措辭不太好,這好像在說咱們要找的這個開發人員作錯了事。但事實上可能不老是這樣——他們可能作了一些特別聰明或使人印象深入的事情,咱們也想知道是誰幹的。

從SVN那兒找到靈感,我把blame的別名設置成praise:

$ git config --global alias.praise blame

那麼以前的命令就變成:

# 找出誰補全了提示信息,要給他們買咖啡:

$ git praise -L18,23 _includes/head.html

一個小小的改動,可是很溫暖。

隱藏空白噪聲

當您用diff或show查看一個有大量空白的對象時,咱們會看到不少視覺噪音,這可能使你很難看到更重要的內容。

去除這種噪聲很容易,能夠經過-w,它能夠跟git diff和git show一塊兒使用。例如,使用以前:

a {

color: $color-links;

-&:hover {

- color: $color-links-hover;

-}

+ &:hover {

+ color: $color-links-hover;

+ text-decoration: underline;

+ }

}

使用以後:

a {

color: $color-links;

&:hover {

color: $color-links-hover;

+ text-decoration: underline;

}

}

如今很容易看出,這裏惟一有意義的變化是添加了 text-decoration: underline;,而其他的diff 內容是有點誤導性的。

顯示更改的單詞而不是整行

當編輯文字時,與代碼相反,查看更改的單詞而不是整個發生改動的行一般更有用; 這在寫markdown時特別有用。

幸運的是,咱們能夠用 --word-diff 標誌來顯示發生更改的單詞:

$ git diff --word-diff

下面是執行沒有--word-diff標誌的 diff 結果,比較亂,很難看到改了哪裏:

-My friend Tom recently gave an excellent talk

+My good friend Tom gave an excellent talk

...可是加上 --word-diff 以後從新執行 diff,咱們獲得了更加有用的信息:

My {+good+} friend Tom [-recently-] gave an excellent talk

查看你最近工做的分支

在不少項目中,開發者要在許多不一樣的分支之間頻繁切換的事情並不鮮見,這樣的狀況下要保持頭腦清醒不太容易。咱們可讓Git 幫忙解決這個問題:

$ git for-each-ref --count=10 --sort=-committerdate refs/heads/ --format="%(refname:short)"

這將顯示咱們工做的最後10個(--count=10)分支,按照最後一次在使用的時間排序。它只顯示咱們本地的分支(refs/heads/),同時顯示的格式更友好 --format。

這一大段有點長,因此我設置了別名 $ git recent。

看看你們都在幹什麼

有時候,特別是對於team leader來講,對全部分支上每一個人的工做狀況有個通常瞭解是頗有用的。再一次,Git 很容易作到:

$ git log --all --oneline --no-merges

這將簡略顯示每一個人在全部分支上工做的日誌(--no-merges)。

也能夠經過如下方式來限制返回的提交數--since:

$ git log --all --since='2 weeks' --oneline --no-merges

對此我有個別名 $ git overview

本身以前的工做回顧

你回到一箇舊的項目工做,或者在長時間的休息以後回到辦公室,你已經忘了本身最後的工做是什麼 。咱們能夠要求 Git 簡要介紹咱們以前在此項目上的工做:

$ git log --all --oneline --no-merges --author=<your email address>

我設了別名 $ git recap。

今天的工做內容

我不在這裏討論如何衡量開發人員的生產力,但我以爲讓客戶知道我在每一天的工做內容很是有用。我不是保留我完成的任務的詳細列表,而是讓Git提供全部這些信息:

$ git log --since=00:00:00 --all --no-merges --oneline --author=<your email address>

這將log --all 全部分支上, --author在 --since 當天午夜開始的那一天(可是--no-merges)的全部工做,並作一個簡單的--oneline概述。

別名 $ git today。

看看有哪些變更須要pull

若是你有段時間沒在一個項目裏工做了,從新回來的時候,在pull到本地以前你得看看以前都發生了什麼事:

$ git log --oneline --no-merges HEAD..<remote>/<branch>

HEAD 是可選的。

例如,看看你度假時某個特定功能都發生了什麼:

$ git checkout feature/fonts

$ git fetch

$ git log --oneline --no-merges ..origin/feature/fonts

別名$ git upstream。

檢查你要push的內容

但願你有常常commit和push的習慣,但若是因爲某些緣由,你存了大量的本地commit 沒有push,快速回顧一下它們是什麼。

爲此,咱們反轉以前的命令:

$ git log --oneline --no-merges <remote>/<branch>..HEAD

例如:

$ git fetch

$ git log --oneline --no-merges origin/feature/fonts..HEAD

 

git config --global --list

 

清空不要提交的任何

git clean -xdf

 

將第六個文件提交修改到上一次一塊兒

git add file6 git commit --amend --no-edit


Workspace:工做區

  Index / Stage:暫存區

  Repository:倉庫區(或本地倉庫)

  Remote:遠程倉庫

1、新建代碼庫

  # 在當前目錄新建一個Git代碼庫

  $ git init

  # 新建一個目錄,將其初始化爲Git代碼庫

  $ git init[project-name]

  # 下載一個項目和它的整個代碼歷史

  $ git clone [url]

2、配置

Git的設置文件爲.gitconfig,它能夠在用戶主目錄下(全局配置),也能夠在項目目

錄下(項目配置)。

  # 顯示當前的Git配置

  $ git config–list

  # 編輯Git配置文件

  $ git config -e[–global]

  # 設置提交代碼時的用戶信息

  $ git config[–global] user.name 「[name]」

  $ git config[–global] user.email 「[email address]」

3、增長/刪除文件

  # 添加指定文件到暫存區

  $ git add [file1][file2] …

  # 添加指定目錄到暫存區,包括子目錄

  $ git add [dir]

  # 添加當前目錄的全部文件到暫存區

  $ git add .

  # 添加每一個變化前,都會要求確認

  # 對於同一個文件的多處變化,能夠實現分次提交

  $ git add -p

  # 刪除工做區文件,而且將此次刪除放入暫存區

  $ git rm [file1][file2] …

  # 中止追蹤指定文件,但該文件會保留在工做區

  $ git rm –cached[file]

  # 更名文件,而且將這個更名放入暫存區

  $ git mv[file-original] [file-renamed]

 

4、代碼提交

  # 提交暫存區到倉庫區

  $ git commit -m[message]

  # 提交暫存區的指定文件到倉庫區

  $ git commit[file1] [file2] … -m [message]

  # 提交工做區自上次commit以後的變化,直接到倉庫區

  $ git commit -a

  # 提交時顯示全部diff信息

  $ git commit -v

  # 使用一次新的commit,替代上一次提交

  # 若是代碼沒有任何新變化,則用來改寫上一次commit的提交信息

  $ git commit–amend -m [message]

  # 重作上一次commit,幷包括指定文件的新變化

  $ git commit–amend [file1] [file2] …

5、分支

  # 列出全部本地分支

  $ git branch

  # 列出全部遠程分支

  $ git branch -r

  # 列出全部本地分支和遠程分支

  $ git branch -a

  # 新建一個分支,但依然停留在當前分支

  $ git branch[branch-name]

  # 新建一個分支,並切換到該分支

  $ git checkout -b[branch]

  # 新建一個分支,指向指定commit

  $ git branch[branch] [commit]

  # 新建一個分支,與指定的遠程分支創建追蹤關係

  $ git branch–track [branch] [remote-branch]

  # 切換到指定分支,並更新工做區

  $ git checkout[branch-name]

  # 切換到上一個分支

  $ git checkout –

  # 創建追蹤關係,在現有分支與指定的遠程分支之間

  $ git branch–set-upstream [branch] [remote-branch]

  # 合併指定分支到當前分支

  $ git merge[branch]

  # 選擇一個commit,合併進當前分支

  $ git cherry-pick[commit]

  # 刪除分支

  $ git branch -d[branch-name]

  # 刪除遠程分支

  $ git push origin–delete [branch-name]

  $ git branch -dr[remote/branch]

6、標籤

  # 列出全部tag

  $ git tag

  # 新建一個tag在當前commit

  $ git tag [tag]

  # 新建一個tag在指定commit

  $ git tag [tag][commit]

  # 刪除本地tag

  $ git tag -d[tag]

  # 刪除遠程tag

  $ git push origin:refs/tags/[tagName]

  # 查看tag信息

  $ git show [tag]

  # 提交指定tag

  $ git push[remote] [tag]

  # 提交全部tag

  $ git push[remote] –tags

  # 新建一個分支,指向某個tag

  $ git checkout -b[branch] [tag]

7、查看信息

  # 顯示有變動的文件

  $ git status

  # 顯示當前分支的版本歷史

  $ git log

  # 顯示commit歷史,以及每次commit發生變動的文件

  $ git log –stat

  # 搜索提交歷史,根據關鍵詞

  $ git log -S[keyword]

  # 顯示某個commit以後的全部變更,每一個commit佔據一行

  $ git log [tag]HEAD –pretty=format:%s

  # 顯示某個commit以後的全部變更,其」提交說明」必須符合搜索條件

  $ git log [tag]HEAD –grep feature

  # 顯示某個文件的版本歷史,包括文件更名

  $ git log –follow[file]

  $ git whatchanged[file]

  # 顯示指定文件相關的每一次diff

  $ git log -p[file]

  # 顯示過去5次提交

  $ git log -5–pretty –oneline

  # 顯示全部提交過的用戶,按提交次數排序

  $ git shortlog-sn

  # 顯示指定文件是什麼人在什麼時間修改過

  $ git blame[file]

  # 顯示暫存區和工做區的差別

  $ git diff

  # 顯示暫存區和上一個commit的差別

  $ git diff–cached [file]

  # 顯示工做區與當前分支最新commit之間的差別

  $ git diff HEAD

  # 顯示兩次提交之間的差別

  $ git diff[first-branch]…[second-branch]

  # 顯示今天你寫了多少行代碼

  $ git diff–shortstat 「@{0 day ago}」

  # 顯示某次提交的元數據和內容變化

  $ git show[commit]

  # 顯示某次提交發生變化的文件

  $ git show–name-only [commit]

  # 顯示某次提交時,某個文件的內容

  $ git show[commit]:[filename]

  # 顯示當前分支的最近幾回提交

  $ git reflog

8、遠程同步

  # 下載遠程倉庫的全部變更

  $ git fetch[remote]

  # 顯示全部遠程倉庫

  $ git remote -v

  # 顯示某個遠程倉庫的信息

  $ git remote show[remote]

  # 增長一個新的遠程倉庫,並命名

  $ git remote add[shortname] [url]

  # 取回遠程倉庫的變化,並與本地分支合併

  $ git pull[remote] [branch]

  # 上傳本地指定分支到遠程倉庫

  $ git push[remote] [branch]

  # 強行推送當前分支到遠程倉庫,即便有衝突

  $ git push[remote] –force

  # 推送全部分支到遠程倉庫

  $ git push[remote] –all

9、撤銷

  # 恢復暫存區的指定文件到工做區

  $ git checkout[file]

  # 恢復某個commit的指定文件到暫存區和工做區

  $ git checkout[commit] [file]

  # 恢復暫存區的全部文件到工做區

  $ git checkout .

  # 重置暫存區的指定文件,與上一次commit保持一致,但工做區不變

  $ git reset[file]

  # 重置暫存區與工做區,與上一次commit保持一致

  $ git reset–hard

  # 重置當前分支的指針爲指定commit,同時重置暫存區,但工做區不變

  $ git reset[commit]

  # 重置當前分支的HEAD爲指定commit,同時重置暫存區和工做區,與指定commit一致

  $ git reset–hard [commit]

  # 重置當前HEAD爲指定commit,但保持暫存區和工做區不變

  $ git reset–keep [commit]

  # 新建一個commit,用來撤銷指定commit

  # 後者的全部變化都將被前者抵消,而且應用到當前分支

  $ git revert[commit]

  # 暫時將未提交的變化移除,稍後再移入

  $ git stash

  $ git stash pop

10、其餘

  # 生成一個可供發佈的壓縮包

  $ git archive

 

僅僅克隆 拉取 dev 分支
git clone -b dev 代碼倉庫地址 (dev是分支名稱)


目的

咱們想要獲取到代碼倉庫中分支「a」 中的文件到本地,我瞭解到有三種方法。


 
代碼倉庫

方法一:直接獲取

*首先新建個文件夾,右鍵打開Git Bash


 
Git Bash

*在Git Bash中直接輸入指令:git clone -b dev 代碼倉庫地址 (dev是分支名稱)


 
Clone

*查看文件夾中內容,能夠看到已經拉取完畢
 
拉取成功

方法二

*打開Git Bash
*在Git Bash 中輸入 git init 進行初始化
*與遠程代碼倉庫創建鏈接:git remote add origin 代碼倉庫地址


 
創建鏈接

*將遠程分支拉到本地:git fetch origin dev(dev即分支名)


 
拉取分支

*建立本地分支:git checkout -b LocalDev origin/dev (LocalDev 爲本地分支名,dev爲遠程分支名)


 
建立分支

*根據分支的變化,感受這條指令多是建立並切換到該分支
*最後一步將遠程分支拉取到本地:git pull origin dev(dev爲遠程分支名)


 
拉取成功

方法三

*打開Git Bash *輸入 git clone 代碼倉庫地址 *進入文件夾中 命令:cd XXX(文件夾名) *繼續輸入指令 git submodule init *最後 git submodule update

做者:JayMeWangGL 連接:https://www.jianshu.com/p/856ce249ed78 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索