『壹』 git hub提交
git push -u origin master
To https://github.com/scottlove0519/Test.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/scottlove0519/Test.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
$ git config --global user.email [email protected]
如碼雲:
$git config --global user.name 'qiuzhongwei0519'
$ git config --global user.email [email protected]
1.git init
添加到棧緩區
2.git add .
提交到棧緩區
3.git commit -u
關聯遠程和本地
4.git remote add origin https://github.com/scottlove0519/GuoKongYiTiHua-0.5.git
提交到遠程
5. git push -u origin master -f
修改之前提交的注釋
git commit --amend
vim修改後保存退出
git rebase --continue
git push -u origin master -f
1、首先我得重新在git設置一下身份的名字和郵箱(因為當初都忘了設置啥了,因為遇到坑了)進入到需要提交的文件夾底下(因為直接打開git Bash,在沒有路徑的情況下,根本沒! 法! 改! 剛使用git時遇到的坑。。。 )
git config --global user.name "yourname"
git config --global user.email「[email protected]"
註:yourname是你要設置的名字,your@email是你要設置的郵箱。
2、刪除.ssh文件夾(直接搜索該文件夾)下的known_hosts(手動刪除即可,不需要git)
3、git輸入命令
$ ssh-keygen -t rsa -C "[email protected]"(請填你設置的郵箱地址)
接著出現:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):
請直接按下回車
然後系統會自動在.ssh文件夾下生成兩個文件,id_rsa和id_rsa.pub,用記事本打開id_rsa.pub
將全部的內容復制
4、打開https://github.com/,登陸你的賬戶,進入設置
進入ssh設置
點擊add ssh key,
ok!
5、在git中輸入命令:
ssh -T [email protected]
然後會跳出一堆話。。
輸入命令:yes
回車
然後就會提示你成功了~~
『貳』 git常用命令是什麼
1、在當前目錄新建一個Git代碼庫,:$ git init
2、新建一個目錄,將其初始化為Git代碼庫,:$ git init [project-name]
3、下載一個項目和它的整個代碼歷史,:$ git clone [url]
4、顯示當前的Git配置,:$ git config --list
5、編輯Git配置文件,:$ git config -e [--global]
6、設置提交代碼時的用戶信息,:$ git config [--global] user.name "[name]",:$ git config [--global] user.email "[email address]"
7、添加指定文件到暫存區,:$ git add [file1] [file2] ...
8、添加指定目錄到暫存區,包括子目錄,:$ git add [dir]
9、添加當前目錄的所有文件到暫存區,:$ git add .
10、對於同一個文件的多處變化,可以實現分次提交,:$ git add -p
11、刪除工作區文件,並且將這次刪除放入暫存區,:$ git rm [file1] [file2] ...
12、停止追蹤指定文件,但該文件會保留在工作區,:$ git rm --cached [file]
13、改名文件,並且將這個改名放入暫存區,:$ git mv [file-original] [file-renamed]
14、提交暫存區到倉庫區,:$ git commit -m [message]
15、提交暫存區的指定文件到倉庫區,:$ git commit [file1] [file2] ... -m [message]
16、提交工作區自上次commit之後的變化,直接到倉庫區,:$ git commit -a
17、提交時顯示所有diff信息,:$ git commit -v
18、使用一次新的commit,替代上一次提交
19、 如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息,:$ git commit --amend -m [message]
20、重做上一次commit,並包括指定文件的新變化,:$ git commit --amend [file1] [file2]
(2)git提交命令擴展閱讀:
git有以下功能:
1、從伺服器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上。
2、在自己的機器上根據不同的開發目的,創建分支,修改代碼。
3、在單機上自己創建的分支上提交代碼。
4、在單機上合並分支。
5、把伺服器上最新版的代碼fetch下來,然後跟自己的主分支合並。
6、生成補丁(patch),把補丁發送給主開發者。
7、看主開發者的反饋,如果主開發者發現兩個一般開發者之間有沖突(他們之間可以合作解決的沖突),就會要求他們先解決沖突,然後再由其中一個人提交。如果主開發者可以自己解決,或者沒有沖突,就通過。
8、一般開發者之間解決沖突的方法,開發者之間可以使用pull 命令解決沖突,解決完沖突之後再向主開發者提交補丁。
『叄』 Git常用命令
1.1 配置環境
當安裝Git後首先要做的事情是設置用戶名稱和email地址。這是非常重要的,因為每次Git提交都會使用該用戶信息。該用戶信息和GitHub上注冊的遠程倉庫的相關信息沒有任何關系。
git config --global user.name "你的名字"
git config --global user.email "你的郵箱"
git config --list
配置信息保存在用戶目錄下的.giitconfig文件中
1.2 獲取Git倉庫
要使用Git對我們的代碼進行版本控制,首先需要獲得Git倉庫
獲取Git倉庫通常有兩種方式:
執行步驟如下:
1、在電腦的任意位置創建一個空目錄作為我們的本地Git倉庫
2、進入這個目錄中,點擊右鍵打開Git bash 窗口
3、執行命令git init
可以通過Git提供的命令從遠程倉庫進行克隆,將遠程倉庫克隆到本地的命令形式為:
git clone 遠程Git倉庫地址
1.3 工作目錄、暫存區以及版本庫概念
版本庫:.git隱藏文件就是版本庫,版本庫存儲了很多配置信息、日誌信息和文件版本信息等
工作目錄(工作區):包含.git文件夾的目錄就是工作目錄,主要用於存放開發的代碼
暫存區:.git文件夾中有很多文件,其中一個index文件就是暫存區,也可以叫做stage。暫存區是一個臨時保存修改文件的地方
1.4 Git工作目錄下文件的兩種狀態
Git工作目錄下的文件存在兩種狀態:
Unmodified 未修改狀態
Modified 已修改狀態
Staged 已暫存狀態
這些文件的狀態會隨著我們執行Git的命令發生變化
1.5 本地倉庫操作
git status 查看文件狀態
也可以使用git status -s使輸出信息更簡潔
git add 將未跟蹤的文件加入暫存區,將已經修改的文件加入暫存區也是通過這個命令
git reset 將暫存區文件取消暫存
git commit -m 「你的說明」 將暫存區文件提交到本地倉庫
git rm 刪除文件 說明:這種操作是直接將文件加入到暫存區裡面,直接提交到本地倉庫生效,而直接刪除的話沒有進入到暫存區,需要先把文件加入到暫存區之後,再提交到本地倉庫。
將文件添加至忽略列表
一般我們總會有些文件無需納入Git的管理,也不希望他們總出現在未跟蹤文件列表。通常這些都是自動生成的文件,比如日誌文件,或者編譯過程中創建的臨時文件等。在這種情況下,我們可以在工作目錄中創建一個名為.gitnore的文件(文件名稱固定),列出忽略的文件模式。下面是一個示例:#代表注釋
由於windows無法創建不含文件名的文件,因此我們需要在bash窗口中用如下命令創建。
git log 查看日記記錄
1.6 遠程倉庫操作
如果想查看已經配置的遠程倉庫伺服器,可以運行git remote 命令。它會列出指定的每一個遠程伺服器的簡寫。如果已經克隆了遠程倉庫,那麼至少可以看見origin,這是Git克隆的倉庫伺服器的默認名字
git remote -v 可以查看對遠程倉庫詳細一點的說明
git remote show origin 可以查看對origin更詳細的遠程倉庫的說明
運行git remote add 添加一個遠程Git倉庫,同時指定一個可以引用的簡寫
如果你想獲得一份已經存在了的Git倉庫的拷貝,這時需要用到 git clone 命令。Git克隆的是Git倉庫伺服器上的幾乎所有數據(包括日誌信息、 歷史 記錄等),而不僅僅是復制工作所需要的文件。當你執行git clone 命令的時候,默認配置下Git倉庫中的每一個文件的每一個版本都將被拉取下來。
如果因為一些原因想要移除一個遠程倉庫,可以使用git remote rm
注意:此命令只是從本地移除遠程倉庫的記錄,並不會影響到遠程倉庫
git fetch 是從遠程倉庫獲取最新版本到本地倉庫,不會自動merge
說明:如果使用fetch命令,拉取的文件會放到版本庫裡面,不會自動整合到工作區,如果需要整合到工作區,需要使用 git merge 遠程倉庫別名/遠程倉庫分支
git pull 是從遠程倉庫獲取最新版本並merge到本地倉庫
注意:如果本地倉庫不是從遠程倉庫克隆,而是本地創建的倉庫,並且倉庫中存在文件,此時再從遠程倉庫中拉取文件的時候會報錯(fatal:refusing to merge unrelated histories),解決此我呢提可以在git pull 命令後加入參數 --allow-unrelated-histories
git push
1.7 Git分支
幾乎所有的版本控制系統都是以某種形式支持分支。使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。Git的master是一個特殊分支。它跟其它分支沒有區別。之所以每一個倉庫都有mater分支,是因為git init默認創建它,並且大多數人都懶得去改動它。
# 列出所有本地分支
$ git branch
#列出所有遠程分支
$ git branch -r
#列出所有本地分支和遠程分支
$git branch -a
git branch 分支名稱
git checkout 分支名稱
git push 遠程倉庫別名 遠程倉庫分支
git merge 分支名稱 說明:在當前分支下合並其他分支
注意:如果兩個分支存在同樣的文件名且同行的內容不一樣,那麼會產生矛盾,需要自己手動修改產生矛盾後的文件,然後添加到暫存區然後提交。
git branch -d 分支名稱
如果要刪除的分支中進行了一些開發動作,此時執行上面的刪除命令並不會刪除分支,可以將命令中的-d參數改為-D
如果要刪除遠程倉庫中的分支,可以使用命令git push origin -d branchName
1.8 Git標簽
像其他版本控制系統一樣,Git可以給 歷史 中的某一給提交打上標簽,以示重要。比較有代表性的是人們會使用這個功能來標記發布結點(v1.0、v1.2等)。標簽指的是某個分支某個特定時間點的狀態。通過標簽,可以很方便地切換到標記時的狀態。
#新建一個tag
$ git tag [tagName]
$ git tag
#新建一個分支,指向某個tag
$ git checkout -b [branch] [tag]
#刪除本地tag
$git tag -d[tag]
#刪除遠程tag
$git push origin :refs/tags/[tag]
『肆』 git修改提交信息
方式一:直接輸入命令: git commit --amend ,會進入對最後一次提交信息編輯的vim編輯器界面(普通模式下,按 i 進入編輯模式,編輯模式下按 esc 退出到普通模式,普通模式下按 : 進入命令模式,輸入 wq 即可保存修改並退出vim編輯器)。
方式二:如果提交信息簡單也可以直接通過如下命令行完成:
git commit --amend -m 'new commit message'
輸入命令: git rebase -i HEAD~2 ,進入commit的選擇界面,其中2代表最後2次提交,看你需要修改的提交位置對應修改即可,需要注意的是該值必須要小於提交總數,否則會報錯。
將需要改變的提交的pick改為edit,保存並退出(選中多個,則會將多個提交合並成一個),會看到如下提示
執行命令 git commit --amend 進入vim編輯器,修改對應提交信息,過程和修改最後一次提交一樣
修改成功後,執行 git log ,查看整個提價記錄是否是自己需要的
確認無誤後,執行 git rebase --continue ,會看到如下提示:
tip:
若是中途修改出錯,或是不想繼續修改,可以執行 git rebase --abort 終止
到此修改提交記錄過程就結束了。
如果需要修改的提交信息已經被提交到遠程倉庫,那麼在基於前面修改的基礎上,還需要強制推送本地倉庫到遠程分支,也就是執行如下命令:
git push <repo name> <branch nama> -f
進行強制推送
『伍』 Git基本操作
安裝完 Git 軟體後,需要我們做一下全局的配置工作,如:用戶名、郵箱等。
命令:git config
設置用戶名命令:
設置郵箱命令:
其中, --global 指定為全局配置,不指定該參數,則為當前所在倉庫配置。
查看配置:
在本地創建版本庫,需要使用 git init 命令。
首先,我們需要新建一個存放版本庫的文件夾,然後進入到該目錄所在路徑,執行如下命令,格式為:
最後查看文件夾,可以看到包含有 .git 子文件夾,說明創建版本庫成功了。
也可以在執行 git init 命令時指定一個文件夾作為版本庫。格式為:
克隆版本庫是指從現有 Git 版本庫中拷貝項目。
克隆版本庫使用如下命令,格式為:
如果我們需要克隆到指定的目錄,可以使用以下命令格式:
如:克隆遠程倉庫
添加一個或多個文件到暫存區:
添加指定目錄到暫存區,包括子目錄:
添加當前目錄下的所有文件到暫存區:
查看在我們上次提交之後是否有對文件進行再次修改。 格式為:
-s參數可以幫助我們獲得比較簡短的顯示結果。
如:我們在一個版本庫中所在目錄中增加一個 Unit1.pas 文件,然後執行如下命令:
顯示暫存區和工作區的差異:
顯示暫存區和上一次提交(commit)的差異:
顯示兩次提交之間的差異:
將暫存區內容添加到本地倉庫中。
提交暫存區到本地版本庫中:
message 可以用於描述提交的信息。
提交暫存區的指定文件到版本庫區:
修改後直接提交:
-a參數設置修改文件後不需要執行 git add 命令,直接來提交。
如:我們在上面的命令基礎上進行提交
接下來,我們對 Unit1.pas 文件進行修改,然後進行文件比較:
git reset 命令用於回退版本,可以指定退回某一次提交的版本。
git reset 命令語法格式如下:
可以使用 數字表示
git rm 命令用於刪除文件。
如果只是簡單地從工作目錄中手工刪除文件,運行 git status 時就會在 Changes not staged for commit 的提示。所以,在 git 環境下一定要使用 git 的刪除文件操作。
git rm 刪除文件有以下幾種形式:
將文件從暫存區和工作區中刪除:
如果刪除之前修改過並且已經放到暫存區域的話,則必須要用強制刪除選項 -f 。
如果想把文件從暫存區域移除,但仍然希望保留在當前工作目錄中,換句話說,僅是從跟蹤清單中刪除,使用 --cached 選項即可:
可以遞歸刪除,即如果後面跟的是一個目錄做為參數,則會遞歸刪除整個目錄中的所有子目錄和文件:
git mv 命令用於移動或重命名一個文件、目錄或軟連接。
如果新文件名已經存在,但還是要重命名它,可以使用 -f 參數:
『陸』 git(五 合並提交命令)
場景 :本地做了四次提交,想把第 2、3、4 次提交合並,只保留第二次提交的commit message
解決方案 :
1、git reflog 查看所有的提交記錄
p.s. git reflog 可以查看所有分支的所有操作記錄(包括已經被刪除的 commit 記錄和 reset 的操作);git log 命令可以顯示所有提交過的版本信息,看不到刪除的記錄。所以買後悔葯回退刪除記錄的時候,可以用 git reflog
上面的圖片展示了,一共四次提交,按照時間倒序排列分別是 第 4、3、2、1次提交
2、git rebase -i 「最新的一個想保留的 Commit」
意思是,我想合並2、3、4,那麼最新一個想保留的 commit 就是 第一次 commit,他的hash值為 ae9c811,輸入下列命令並回車
或者
3、選擇要合並的 commit :上述步驟完成後會跳出下圖界面
注意這個時候的順序:最近一次提交在最下面
前面三行是我們需要操作的三個 Commit,每行最前面的是對該 Commit 操作的 Command。關於每個 Command 具體做什麼,下面的注釋寫得非常清楚。為了完成我們的需求,我們可以關注到這兩個命令:
我們可以選擇把第 3、4 次的commit message合並到第二次上面,修改command如下,並保存退出:
4、編輯合並 commit 的 commit message
上述步驟完成後,會跳出如下界面
5、檢查:使用git log檢查
結果如下:
注意,使用git reflog仍可以查看最初的命令:
兩者的區別在於,git log只顯示保留的,git reflog可以顯示 reset 和 rebase、刪除的版本
編譯器的可視化git工具中的展示:
這個時候再push,提交記錄上就非常好看了
請注意 :
『柒』 git如何提交本地代碼
首先要先注冊一個自己的GitHub賬號
有了自己的賬號以後,就可以進行登錄,開始創建一個新的項目
創建一個新的項目,填寫項目名稱,描述
新建倉庫下,沒有代碼時,會提示3種方式可以操作代碼同步到git.
我使用第一種命令操作方式:
另外需要先下載Git,這里最好下載最新版本的Git,安裝時如果沒有特殊需求,一直下一步就可以了,安裝完成之後,雙擊打開Git Bash
第一步:cd進入你放項目文件的地址 ,我是放在了這里: E:\regtest
第二步:輸入git init
第三步:輸入git add . 這個是將項目上所有的文件添加到倉庫中的意思,如果想添加某個特定的文件,只需把.換成這個特定的文件名即可。
我是使用了".",把整個文件夾下信息都提交了。
第四步輸入git commit -m "first commit",表示你對這次提交的注釋,雙引號裡面的內容可以根據個人的需要改。
這里如果出現以下內容,則需要你輸入自己的賬號或名字
用上面提示的代碼輸入自己的郵箱或名字
再輸入git commit -m "first commit"時就會成功
第五步輸入git remote add origin https://自己的倉庫url地址(這個url可以到自己的git中創建的倉庫頁面找就是最上面一個輸入欄中的url) 將本地的倉庫關聯到github上,
最後一步,輸入git push -u origin master,這是把代碼上傳到github倉庫的意思。
執行完後,如果沒有異常,會等待幾秒,然後跳出一個讓你輸入Username和Password 的窗口,你只要輸人github的登錄賬號和密碼就行了。
『捌』 git 命令-提交指定文件
添加指定文件
git add dir/file
忽略其他文件
git stash -u -k
提交
git commit -m 'log message'
恢復其他文件的修改狀態
git stash pop
『玖』 git 命令行修改提交地址
最近公司gitlab 的地址更換了,自己本地的git提交地址如何修改呢?
檢出倉庫: git clone git://github.com/jquery/jquery.git /users/desktop/XXX.github.io(可以加上本地路徑 指定路徑)
查看遠程倉庫: git remote -v
添加遠程倉庫: git remote add [name] [url]
刪除遠程倉庫: git remote rm [name]
修改遠程倉庫: git remote set-url [name] [newUrl]
拉取遠程倉庫: git pull [remoteName] [localBranchName]
推送遠程倉庫: git push (這時候會讓你填寫用戶名,只填寫用戶名就好了,然後讓你填寫密碼,回車之後修改就提交了)。
查看本地分支: git branch
查看遠程分支: git branch -r
創建本地分支: git branch [name] ----注意新分支創建後不會自動切換為當前分支
切換分支: git checkout [name]
創建新分支並立即切換到新分支: git checkout -b [name]
刪除分支: git branch -d [name] ---- -d選項只能刪除已經參與了合並的分支,對於未有合並的分支是無法刪除的。如果想強制刪除一個分支,可以使用-D選項
合並分支: git merge [name] ----將名稱為[name]的分支與當前分支合並
創建遠程分支(本地分支push到遠程): git push origin [name]
刪除遠程分支: git push origin :heads/[name] 或 $ gitpush origin :[name]