git config --global user.name "Firstname Lastname"
git config --global user.email "your_email@example.com"
複製代碼
注意:
html
- 1.查看用戶名和郵箱地址
$ git config user.name $ git config user.email 複製代碼
- 2.修改全局用戶名和郵箱地址
$ git config --global user.name "username" $ git config --global user.email "email" 複製代碼
- 3.修改局部用戶名和郵箱地址:
$ cd ~/you project $ git config user.name "username" $ git config user.email "email" 複製代碼
- 4.windows 下修改git 登陸帳號密碼[blog.csdn.net/qq_29298577…]
$ 第一步:控制面板 -----> 用戶帳戶 $ 第二步:用戶帳戶------> 管理windows憑據 $ 第三步:找到對應的地址修改登陸名稱和密碼便可 `` 複製代碼
$ ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): 按回車鍵
Enter passphrase (empty for no passphrase): 輸入密碼
Enter same passphrase again: 再次輸入密碼
複製代碼
Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa.
Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub.
The key fingerprint is:
fingerprint值 your_email@example.com
The key's randomart image is: +--[ RSA 2048]----+ | .+ + | | = o O . | 略 複製代碼
id_rsa 文件是私有密鑰,id_rsa.pub 是公開密鑰。git
cd ~/.ssh
cat ~/.ssh/id_rsa.pub
;或者你也能夠直接打開你用戶(通常都是Administrator)下的.ssh文件夾,打開它裏面的id_rsa.pub 文件。$ cat ~/.ssh/id_rsa.pub
ssh-rsa 公開密鑰的內容 your_email@example.com
複製代碼
若是經過上面的方式找不到公鑰,你就須要先生成公鑰了。github
$ ssh -T git@github.com
The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is fingerprint值 . Are you sure you want to continue connecting (yes/no)? 輸入yes 複製代碼
出現以下結果即爲成功。web
Hi hirocastest! You've successfully authenticated, but GitHub does not provide shell access. 複製代碼
$ git clone git@github.com:hirocastest/Hello-World.git
Cloning into 'Hello-World'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
$ cd Hello-World
複製代碼
而後,就能夠在本地開心的敲代碼了~~shell
git init
初始化倉庫 初始化倉庫成功後,,.git
目錄裏存儲着當前目錄內容所需的倉庫數據。 在Git中,包含.git
目錄的內容稱爲」附屬於該倉庫的工做樹「。文件的編輯等操做在工做樹中進行,而後記錄到倉庫中,以此管理文件的歷史快照。git status
查看倉庫狀態git add
向暫存區中添加文件 要想讓文件成爲Git倉庫的管理對象,就須要用git add
命令將其加入暫存區。 暫存區是提交以前的一個臨時區域。git commit
保存倉庫的歷史記錄 git commit
命令能夠將當前暫存區中的文件實際保存到倉庫的歷史記錄中。經過這些記錄,咱們就能夠在工做樹中復原文件。$ git commit -m "First commit"
複製代碼
-m
,直接執行 git commit
命令。執行後編輯器就會啓動,並顯示以下結果。# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
複製代碼
在編輯器中記述提交信息的格式以下vim
- 第一行:用一行文字簡述提交的更改內容
- 第二行:空行
- 第三行之後:記述更改的緣由和詳細內容
git log
查看提交日誌$ git log --pretty=short
$ git log README.md
$ git log -p
$ git log -p README.md
複製代碼
參數有不少,用到就去查一下。windows
git diff
git diff
命令能夠查看工做書、暫存區、最新提交之間的差異。瀏覽器
執行 git diff
命令,查看當前工做樹與暫存區的差異。 若是咱們還沒有用git add
命令向暫存區添加任何東西,因此程序只會顯示工做樹與最新提交狀態之間的差異,也就不會顯示任何內容。安全
DELL@DESKTOP-L7RGC6H MINGW64 ~/Desktop/新建文件夾 (5) (master)
$ git diff
DELL@DESKTOP-L7RGC6H MINGW64 ~/Desktop/新建文件夾 (5) (master)
複製代碼
要查看與最新提交的差異,請執行如下命令。bash
$ git diff HEAD
複製代碼
不妨養成這樣一個好習慣:在執行
git commit
命令以前先執行git diff HEAD
命令,查看本次提交與上次提交之間有什麼差異,等確認完畢後再進行提交。當前,你最好用webstrome
或者其餘可視化視圖工具,更方便的查看。 這裏的 HEAD 是指向當前分支中最新一次提交的指針。
git branch
-顯示分支一覽表git checkout -b
-建立並切換分支git merge
-分支合併合併分支時,加上--no-ff
參數git merge --no-ff master_dev1
,編輯器會啓動,用於錄入要提交的信息。
git log --graph
以圖表的形式查看分支(webstronme有更豐富的操做)git reset
回溯歷史版本要讓倉庫的HEAD、暫存區、當前工做樹回溯到指定狀態 。只有提供目標時間的哈希值,並使用git reset --hard
命令便可。
$ git reset --hard 47febf026b47194be1586a6457ed59987dbb333a
複製代碼
git commit --amend
修改提交信息(就是git commit -m
時候的寫的信息)要修改上一條提交信息,可使用git commit --amend
命令。 執行命令後,編輯器會啓動,修改就是了。
git rebase -i
-壓縮歷史git remote add
-添加遠程倉庫使用git remote add
命令將其設置爲本地倉庫的遠程倉庫。
$ git remote add origin git@github.com:github-book/git-tutorial.git
複製代碼
git push
推送至遠程倉庫將當前分支下本地倉庫中的內容推送給遠程倉庫,須要用到git push
命令。
-u參數能夠在推送的同時,將 origin 倉庫的 master 分 支設置爲本地倉庫當前分支的 upstream(上游)。添加了這個參數,未來 運行 git pull命令從遠程倉庫獲取內容時,本地倉庫的這個分支就可 以直接從 origin 的 master 分支獲取內容,省去了另外添加參數的麻煩。
除了 master 分支以外,遠程倉庫也能夠建立其餘分支。
$ git checkout -b feature-D
Switched to a new branch 'feature-D'
複製代碼
如今將它 push 給遠程倉庫並保持分支名稱不變。
$ git push -u origin feature-D
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:github-book/git-tutorial.git
* [new branch] feature-D -> feature-D
Branch feature-D set up to track remote branch feature-D from origin.
複製代碼
git clone
獲取遠程倉庫$ git clone git@github.com:github-book/git-tutorial.git
Cloning into 'git-tutorial'...
remote: Counting objects: 20, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 20 (delta 3), reused 20 (delta 3)
Receiving objects: 100% (20/20), done.
Resolving deltas: 100% (3/3), done.
$ cd git-tutorial
複製代碼
們用 git branch -a
命令查看當前分支的相關信息。
將 feature-D 分支獲取至本地倉庫。
$ git checkout -b feature-D origin/feature-D
Branch feature-D set up to track remote branch feature-D from origin.
Switched to a new branch 'feature-D'
複製代碼
git pull
獲取最新的遠程倉庫分支 使用 git pull
命令,將本地的 feature-D 分支更新到最新狀態$ git pull origin feature-D
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 1), reused 3 (delta 1)
Unpacking objects: 100% (3/3), done.
From github.com:github-book/git-tutorial
* branch feature-D -> FETCH_HEAD
First, rewinding head to replay your work on top of it...
Fast-forwarded feature-D to ed9721e686f8c588e55ec6b8071b669f411486b8.
複製代碼
若是兩人同時修改了同一部分的源代碼,push 時就很容易發生衝 突。因此多名開發者在同一個分支中進行做業時,爲減小衝突狀況的發 生,建議更頻繁地進行 push 和 pull 操做。
Pull Request 是本身修改源代 碼後,請求對方倉庫採納該修改時採起的一種行爲。Pull Request 概念圖以下:
Fork 或 clone 來的倉庫,一旦放置無論就會離最新的源代碼愈來愈遠。 一般來講 clone 來的倉庫實際上與原倉庫並無任何關係。因此咱們須要將原倉庫設置爲遠程倉庫,從該倉庫獲取(fetch)數據與本地倉庫進行合併(merge),讓本地倉庫的源代碼保持最新狀態。以下圖:
$ git clone git@github.com:hirocastest/Spoon-Knife.git
Cloning into 'Spoon-Knife'...
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 24 (delta 7), reused 17 (delta 1)
Receiving objects: 100% (24/24), 74.36 KiB | 68 KiB/s, done.
Resolving deltas: 100% (7/7), done.
$ cd Spoon-Knife
複製代碼
$ git remote add upstream git://github.com/octocat/Spoon-Knife.git
複製代碼
從此,咱們的這個倉庫將以 upstream 做爲原倉庫的標識符。這個環境下只須要設定一次。
第一步:從遠程倉庫實際獲取(fetch)最新源代碼。 第二步:與本身倉庫的分支進行合併。要讓倉庫維持最新狀態,
$ git fetch upstream
From git://github.com/octocat/Spoon-Knife
* [new branch] master -> upstream/master
$ git merge upstream/master
Already up-to-date.
複製代碼
!--注意--注意--:git fetch 和git pull 的差異
git fetch
至關因而從遠程獲取最新到本地,不會自動merge,以下指令:git fetch orgin master //將遠程倉庫的master分支下載到本地當前branch中
git log -p master ..origin/master //比較本地的master分支和origin/master分支的差異
git merge origin/master //進行合併
複製代碼
也能夠用如下指令:
git fetch origin master:tmp //從遠程倉庫master分支獲取最新,在本地創建tmp分支
git diff tmp //將當前分支和tmp進行對比
git merge tmp //合併tmp分支到當前分支
複製代碼
git pull
至關因而從遠程獲取最新版本並merge到本地git pull origin master
git pull 至關於從遠程獲取最新版本並merge到本地
補充:
fetch
的時候本地的master[ID=1]
沒有變化,若是與遠程倉關聯的那個版本號master[ID=2]
被更新了。咱們接下來就是在本地合併這兩個版本號的代碼master[ID=3]
,此時會有三個版本號,可查可用。git pull
的會將本地的代碼更新至遠程倉庫裏面最新的代碼版本。至於兩個版本號,代碼有丟失風險。總結:如下借鑑文獻
不要用git pull,用git fetch和git merge代替它。 git pull的問題是它把過程的細節都隱藏了起來,以致於你不用去了解git中各類類型分支的區別和使用方法。固然,多數時候這是沒問題的,但一旦代碼有問題,你很難找到出錯的地方。看起來git pull的用法會使你吃驚,簡單看一下git的使用文檔應該就能說服你。 將下載(fetch)和合並(merge)放到一個命令裏的另一個弊端是,你的本地工做目錄在未經確認的狀況下就會被遠程分支更新。固然,除非你關閉全部的安全選項,不然git pull在你本地工做目錄還不至於形成不可挽回的損失,但不少時候咱們寧願作的慢一些,也不肯意返工重來。
點擊Pull Request 查看詳細內容。
點擊Merge pull request
按鈕,Pull Request 的內容便會自動合併至倉庫。
注意:
在採納以前,請儘可能將接收到的 Pull Request 拿到本地開發環境中進行檢查,確認是否可以正常運行以及代碼是否安全。
3.一、 採納 Pull Request 前的準備
下面咱們來說解收到 Pull Request 後在本地開發環境中進行實際檢查的流程。在本示例中,Pull Request 接收方的用戶名爲ituring,發送方的用戶名爲「PR 發送者」。
(1)將接收方的本地倉庫更新至最新狀態 首先,將 Pull Request 接收方的倉庫 clone 到本地開發環境中。若是已經 clone 過,那麼請進行 pull 等操做更新至最新狀態。$ git clone git@github.com:ituring/first-pr.git
Cloning into 'first-pr'...
remote: Counting objects: 34, done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 34 (delta 10), reused 15 (delta 4)
Receiving objects: 100% (34/34), 89.48 KiB | 112 KiB/s, done.
Resolving deltas: 100% (10/10), done.
$ cd first-pr
複製代碼
(2)獲取發送方的遠程倉庫 將 Pull Request 發送方的倉庫設置爲本地倉庫的遠程倉庫,獲取發送方倉庫的數據。
$ git remote add PR發送者 git@github.com:PR發送者/first-pr.git
$ git fetch PR發送者
省略
From github.com:PR發送者/first-pr
* [new branch] gh-pages -> PR發送者/gh-pages
* [new branch] master -> PR發送者/master
* [new branch] work -> PR發送者/work
複製代碼
注意:fetch
以後,只是獲取了遠程倉庫的數據,這些數據還沒有反映在任何一個分支中。須要建立一個分支,用來顯示的承載fetch
到的代碼
(3)先從接收者新建一個分支,和發送pull request的分支合併,測試功能。 從接收者的本地倉庫中,新建一個分支後,用這個分支和fetch到發送pull reuqest的遠程倉庫數據合併
$ git checkout -b pr1
Switched to a new branch 'pr1'
$ git merge PR發送者/work
Updating cc62779..243f28d
Fast-forward
index.html | 2 ++
1 file changed, 2 insertions(+)
複製代碼
(4)採納 Pull Request
完成上述內容後,若是 Pull Request 的內容沒有問題,大可打開瀏覽器找出相應的 Pull Request 頁面,點擊 Merge pull request 按鈕,隨後Pull Request 的內容會自動合併至倉庫。 不過,因爲咱們已經在本地構築了相同的環境,只要經過 CLI 進行合併操做再 push 至 GitHub,Pull Request 中就會反映出 Pull Request 被採納後的狀態。
更新中。。。